以前のリビジョンの文書です


GlusterFS

元々はオープンソースで開発がされていた分散ストレージシステムの1つ

 GlusterFS

現在は、Redhatが取り込んでRed Hat Storage Serverとしてリリースしている。

いつもの通りCentOS/Scientific Linuxな環境に構築をしてみる。

英語は苦手だが、とりあえずQuickStartに目を通してみる。

Step 1 – Have at least two nodes

  • A 64 bit OS
  • A working network connection
  • At least two virtual disks, one for the OS installation, and one to be used to serve Gluster storage. This will emulate a real world deployment, where you would want seperate disks for Gluster storage than the OS install.

なんて事が書いてある。

いくら英語が苦手なオイラでも64bit OSじゃないとダメ!!って事はわかるぞ。よーし、64bit OSを用意すりゃ良いんだろ?

って思って64bitで検証してたんだけど

32bitしかインストール出来ないようなダメなサーバーくんをなんとか使えないのだろうか?という心の声が聞こえてきたのでソースファイルがあるならコンパイルしちゃえば良いのかな?とか思ってダウンロードサイトを見に行ってみたら。。。

ダウンロードサイトはここね CentOS Gluster

ん?

あーーーーーーーー

i386があるじゃないか!!いやいや、フォルダだけかも・・・・・・

はい、ちゃんとRPMが存在しました(--;)

なんてこったい。

そんな訳で、glusterfs-epel.repoを編集する

# Place this file in your /etc/yum.repos.d/ directory

[glusterfs-epel]
name=GlusterFS is a clustered file-system capable of scaling to several petabytes.
baseurl=http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/CentOS/epel-6/$basearch/
enabled=1
skip_if_unavailable=1
gpgcheck=0

[glusterfs-swift-epel]
name=GlusterFS is a clustered file-system capable of scaling to several petabytes.
baseurl=http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/CentOS/epel-6/noarch
enabled=1
skip_if_unavailable=1
gpgcheck=0

[glusterfs-source-epel]
name=GlusterFS is a clustered file-system capable of scaling to several petabytes. - Source
baseurl=http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/CentOS/epel-6/SRPMS
enabled=0
skip_if_unavailable=1
gpgcheck=0

バージョンとかは適当に変えちゃってね

インストール

リポジトリの登録がちゃんと出来ていればyumでインストール出来てしまうので難しい事は何もない・・・

yum install glusterfs glusterfs-server glusterfs-fuse glusterfs-geo-replication

うむぅ。32bitでも動くじゃないか!

自動起動の設定をする

chkconfig glusterd on
chkconfig glusterfsd on

ついでにスタートしてみる。特にエラーもなく実行されるよ。たぶん・・・
service glusterd start
service glusterfsd start

そうは言っても1台じゃ意味無いので2台用意する

お互いが名前解決できるようにhostsに登録をしておく

vi /etc/hosts

volumeを作成

gluster peer probe サーバー名2

gluster peer probeは1台のサーバーからそれ以外のサーバーに対してのみ実行するだけ

gluster volume create ボリューム名 replica 2 transport tcp サーバー名1:ディレクトリ サーバー2:ディレクトリ

作成したボリュームを利用可能にする

gluster volume start ボリューム名

復旧

障害が発生したサーバーと同じホスト名・同じIP・同じ設定でGlusterFSを構築します

状況の確認

gluster peer status

ダウンしているノードのステータスがDisconnectedになっているはず

State: Peer in Cluster (Disconnected)

ボリュームにアサインされているBrickを確認

gluster vol info ボリューム名

Volume Name: ボリューム名
Type: Distributed-Replicate
Volume ID: a3221ea9-fe65-4e97-9f20-2960cb81187d
Status: Started
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: gfs00:/data/brick00
Brick3: gfs00:/data/brick02


落ちてるサーバーに含まれるBrickは表示されない。
あたりまえだけど、本来は1サーバーに複数のBrickを出しても意味は無いw

ボリュームのステータスを確認するには

gluster vol status ボリューム名

復旧したサーバーから既存のノードを指定してpeer probeを実行

service glusterd start
gluster peer probe 既存のノード
※複数のノードがある場合は全てのノードに対して実行する
service glusterd restart
service glusterfsd start

既存ノードから復旧したノードを指定するのではない!

Glusterfs 3.4.0にはバグがあるらしく、再構築してpeerしても Volume-idを設定してくれないようだ。 この為ステータスを確認しても再構築したサーバーがオンラインにならない

gluster vol status ボリューム名

Volume-idの確認 既存のサーバーで以下のコマンド実行 gluster vol info ボリューム名

表示されるVolume IDをそのまま登録は出来ない -を抜いたIDを登録しないといけない

面倒な場合は以下のコマンドで-無しのIDが表示される getfattr -d -m . -e hex BrickPath

って事で設定してみる setfattr -n trusted.glusterfs.volume-id -v 確認したVolumeID ボリューム名

Glusterdを再起動する

service glusterd restart

これでオンラインになるはず(^^;)

再レプリケーションを実行

gluster vol heal ボリューム名 full

ノード再構築時はSelf-heal daemonによる自動再レプリケーションは実施されません。再レプリケーションは上記のコマンドにfullのオプションを付けて実行する

Quota

作成したボリュームに容量制限をかけたい場合も簡単!

gluster volume quota ボリューム名 enable 

1GBで制限する場合

 
gluster volume quota ボリューム名 limit-usage / 1GB
/mklを200MBで制限したい場合
gluster volume quota ボリューム名 limit-usage /mkl 200MB

/とは作成したボリューム直下という意味。

親フォルダよりも大きいクォータ値を子フォルダに設定出来てしまう。

親フォルダに制限を設定している場合、子フォルダは自身の制限値に達していない場合でも書き込めなくなる場合がある

既に存在するファイルのトータルサイズより小さな制限値も設定してもエラーにはならない。 その場合、制限値以下にしないとファイルの編集も出来なくなる

解除する場合は

gluster volume quota ボリューム名 disable

disableを実行すると設定したLimitが全てクリアされます

volumeが作成出来ない場合

一度ボリュームに追加したBrick(ディレクトリ)を再度ボリュームに追加する場合

ボリュームを削除していたとしてもボリューム作成時に以下のようなエラーが出力する事がある。

{path} or a prefix of it is already part of a volume

この場合、以下のコマンドを実行する必要がある

setfattr -x trusted.glusterfs.volume-id $brick_path
setfattr -x trusted.gfid $brick_path
rm -rf $brick_path/.glusterfs

参考1 参考2

分散ストレージ/glusterfs.1378275112.txt.gz · 最終更新: 2013/09/04 06:11 by miyako



DMM.com電子書籍

CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0

- Media Kiss Lab -