2012年2月2日木曜日

GlusterFSの異常系の検証(ディレクトリ編)


CentOS 5.7
GlusterFS 3.2.5
※今回はmhddfsは無し。

2ノードでreplicaして、他のノードからNative Clientでマウントしました。
今回はディレクトリで検証しました。

こんな感じ。
gluster volume create kfs replica2 192.168.0.252:/storage/disk01/kfs 192.168.0.252:/storage/disk02/kfs

■まとめ
異常があったら、まずglusterdを落として、じっくり検討。
復帰操作は一発勝負。勝手に書かれちゃうんで。

glusterdプロセスが落ちた場合
→いずれかのプロセスが存在すれば正常稼動する。
→両方落ちると書き込み異常終了。
→いずれかが復帰すると稼動再開。
※これは想定内な感じがします。

brickのディレクトリが消滅した場合
→いずれかのノードが稼動していれば正常稼動する。
→両方落ちても書き込み続行。データは行方不明に。
→復帰時は両方のノードが稼動するまで復帰できない
※要するに考慮されてないっぽいので、こういうオペレーションはダメっぽい


■glusterdプロセスが落ちた場合の挙動確認
書き込み中に片方のglusterdを落とす
→残ったノードだけで書き込み続行

書き込み中に落としたglusterdを、その書き込み中に上げる
→すぐには何も起こらないが、書き込み終了後に復元動作が走り、落とした方が修復される

書き込み中に両方のglusterdを落とす
→書き込み異常終了
> dd: writing `kfs/zero': 通信端点が接続されていません
> dd: 出力ファイル `kfs/zero' をクローズ: 通信端点が接続されていません
マウントは外れていないが、参照できない状態になっている。
変なファイルがローカルディスクに書き込まれる恐れは無さそう。

そのまま片方のglusterdを上げる
→即、自動復帰する

もう片方のglusterdも上げる
→タイムラグがあるようだが、数十秒以内に自動復帰する
→ファイルアクセスをキックに、差分も自動修正される

■brickのディレクトリが消滅した場合の挙動確認
書き込み中に片方のディレクトリをrm -rfする
→残ったノードだけで書き込み続行

書き込み中に消したディレクトリを、その書き込み中に再作成する
→復帰するようだが、直ちには何も起こらない
→ファイルアクセスをキックに、差分も自動修正される

書き込み中に両方のディレクトリをrm -rfする
→何も起こらない。書き込み止まらない。
マウントは外れていないが、参照できない状態になっている。
変なファイルがローカルディスクに書き込まれる恐れは無さそうだが、データはどこに消えているか不明。

そのまま片方のディレクトリを再作成する
→自動復帰しない。
> ls: kfs: 入力/出力エラーです
> touch: cannot touch `kfs/test': そのようなファイルやディレクトリはありません
> stat: cannot stat `kfs': そのようなファイルやディレクトリはありません

サーバ側のglusterdを再起動する
→何も起こらない。変化無し。
> ls: kfs: 入力/出力エラーです
> touch: cannot touch `kfs/test': そのようなファイルやディレクトリはありません
> stat: cannot stat `kfs': そのようなファイルやディレクトリはありません

クライアント側のglusterdを再起動する
→何も起こらない。変化無し。
> ls: kfs: 入力/出力エラーです
> touch: cannot touch `kfs/test': そのようなファイルやディレクトリはありません
> stat: cannot stat `kfs': そのようなファイルやディレクトリはありません

クライアントで一旦umountし、再マウントする
→何も起こらない。変化無し。
> ls: kfs: 入力/出力エラーです
> touch: cannot touch `kfs/test': そのようなファイルやディレクトリはありません
> stat: cannot stat `kfs': そのようなファイルやディレクトリはありません

もう片方のディレクトリも再作成する
→自動復帰する

0 件のコメント: