サイト管理者
なみかわみやこ
この文書の現在のバージョンと選択したバージョンの差分を表示します。
|
分散ストレージ:glusterfs [2013/06/27 05:52] miyako |
分散ストレージ:glusterfs [2016/01/12 05:28] (現在) miyako [Glusterfsをインストールしたサーバで起動時にマウントする場合] |
||
|---|---|---|---|
| ライン 89: | ライン 89: | ||
| - | ==== そうは言っても1代じゃ意味無いので2台用意する ==== | + | ==== そうは言っても1台じゃ意味無いので2台用意する ==== |
| お互いが名前解決できるようにhostsに登録をしておく | お互いが名前解決できるようにhostsに登録をしておく | ||
| ライン 96: | ライン 96: | ||
| ==== volumeを作成 ==== | ==== volumeを作成 ==== | ||
| + | gluster peer probe サーバー名2 | ||
| + | |||
| + | <note warning>gluster peer probeは1台のサーバーからそれ以外のサーバーに対してのみ実行するだけ</note> | ||
| gluster volume create ボリューム名 replica 2 transport tcp サーバー名1:ディレクトリ サーバー2:ディレクトリ | gluster volume create ボリューム名 replica 2 transport tcp サーバー名1:ディレクトリ サーバー2:ディレクトリ | ||
| + | |||
| + | |||
| + | 作成したボリュームを利用可能にする | ||
| + | |||
| + | gluster volume start ボリューム名 | ||
| + | ==== 復旧 ==== | ||
| + | |||
| + | 障害が発生したサーバーと同じホスト名・同じIP・同じ設定でGlusterFSを構築します | ||
| + | |||
| + | 状況の確認 | ||
| + | gluster peer status | ||
| + | |||
| + | ダウンしているノードのステータスがDisconnectedになっているはず | ||
| + | |||
| + | State: Peer in Cluster (Disconnected) | ||
| + | |||
| + | ボリュームにアサインされているBrickを確認 | ||
| + | |||
| + | <code> | ||
| + | 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 | ||
| + | </code> | ||
| + | |||
| + | ボリュームのステータスを確認するには | ||
| + | |||
| + | gluster vol status ボリューム名 | ||
| + | |||
| + | |||
| + | |||
| + | 復旧したサーバーから既存のノードを指定してpeer probeを実行 | ||
| + | |||
| + | service glusterd start | ||
| + | gluster peer probe 既存のノード | ||
| + | ※複数のノードがある場合は全てのノードに対して実行する | ||
| + | |||
| + | service glusterd restart | ||
| + | service glusterfsd start | ||
| + | |||
| + | <note warning>既存ノードから復旧したノードを指定するのではない!</note> | ||
| + | |||
| + | <note warning> | ||
| + | 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 | ||
| + | |||
| + | これでオンラインになるはず(^^;) | ||
| + | </note> | ||
| + | |||
| + | 再レプリケーションを実行 | ||
| + | |||
| + | gluster vol heal ボリューム名 full | ||
| + | |||
| + | <note warning>ノード再構築時はSelf-heal daemonによる自動再レプリケーションは実施されません。再レプリケーションは上記のコマンドにfullのオプションを付けて実行する</note> | ||
| + | |||
| + | ==== Quota ==== | ||
| + | |||
| + | 作成したボリュームに容量制限をかけたい場合も簡単! | ||
| + | |||
| + | gluster volume quota ボリューム名 enable | ||
| + | |||
| + | 1GBで制限する場合 | ||
| + | |||
| + | gluster volume quota ボリューム名 limit-usage / 1GB | ||
| + | |||
| + | |||
| + | /mklを200MBで制限したい場合 | ||
| + | gluster volume quota ボリューム名 limit-usage /mkl 200MB | ||
| + | |||
| + | /とは作成したボリューム直下という意味。 | ||
| + | |||
| + | <note warning> | ||
| + | 親フォルダよりも大きいクォータ値を子フォルダに設定出来てしまう。 | ||
| + | |||
| + | 親フォルダに制限を設定している場合、子フォルダは自身の制限値に達していない場合でも書き込めなくなる場合がある | ||
| + | |||
| + | 既に存在するファイルのトータルサイズより小さな制限値も設定してもエラーにはならない。 | ||
| + | その場合、制限値以下にしないとファイルの編集も出来なくなる | ||
| + | </note> | ||
| + | |||
| + | 解除する場合は | ||
| + | |||
| + | gluster volume quota ボリューム名 disable | ||
| + | |||
| + | <note warning> | ||
| + | disableを実行すると設定したLimitが全てクリアされます | ||
| + | </note> | ||
| + | |||
| + | ==== 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 | ||
| + | |||
| + | [[http://nuke.hateblo.jp/entry/20121128/1354085790|参考1]] | ||
| + | [[http://joejulian.name/blog/glusterfs-path-or-a-prefix-of-it-is-already-part-of-a-volume/|参考2]] | ||
| + | |||
| + | |||
| + | ==== Glusterfsをインストールしたサーバで起動時にマウントする場合 ==== | ||
| + | |||
| + | Glusterfsをインストールしたサーバで作成したBrickを起動時にマウントしたい場合、通常通りfstabに追記するのだけど | ||
| + | |||
| + | 起動順の問題でfstabでマウントするタイミングではGlusterfsは起動していないのでマウントができない。 | ||
| + | |||
| + | うにゅ~/etc/rc.localにでもmountコマンドを書きゃいいのかと思ったら、どうやらその辺りもちゃんと出来るそうなw | ||
| + | |||
| + | まず、fstabに追記する書き方 | ||
| + | |||
| + | localhost:/[Brick名] [マウント先] glusterfs defaults,_netdev 0 0 | ||
| + | |||
| + | **_netdev**がミソ。 | ||
| + | |||
| + | どうやら_netdevを付ける事で、マウント処理を遅延させてくれるそうな。 | ||
| + | |||
| + | この動きを制御してくれてるのがnetfsサービス。ちゃんと起動しておきましょう。 | ||
| + | |||
| + | デフォルトはONになってる気がする・・・ | ||
| + | |||
| + | chkconfig netfs on | ||
| + | service netfs start | ||