2012年2月3日金曜日

GlusterFSの異常系の検証(ディスク編)


CentOS 6.2
GlusterFS 3.2.5
mhddfs 0.1.38

仮想サーバ2ノードでreplicaして、他のノードからNative Clientでマウントしました。
今回はディスクイメージをマウントしたディレクトリで検証しました。

■まとめ
実機検証じゃないと何とも言えないですね。
あるいは実機だったとしても、どこまで実際の故障を再現できるものか。
これはもう定期バックアップを前提にぶっつけ本番投入するしかないかしら。
仮想サーバでの検証では、わかんないです。

書き込み中にdisk01が消滅した場合(rm -rf disk01.img )
→何故か書き込み続行され、イメージが削除されているにも関わらず正常動作が続く。不気味。
※物理マシンでHDDをぶっこ抜いた場合とは挙動が違うんじゃないかな。。

書き込み中にmhddfsがumountされた場合(umount -l mhddfs01)
→片方のノードのみで書き込み続行。
→書き込みが完了するとアクセスできなくなる。
→復帰すると稼動再開

書き込み中にdisk01がumountされた場合(umount -l disk01)
→片方のノードのみで書き込み続行。
→書き込みが完了するとアクセスできなくなる。
→復帰すると稼動再開


■準備
mkdir /storage
cd /storage
dd if=/dev/zero of=disk01.img bs=1M seek=1000 count=1
mkfs.xfs disk01.img
dd if=/dev/zero of=disk02.img bs=1M seek=1000 count=1
mkfs.xfs disk02.img
mkdir disk02
mkdir disk01
mount -o loop disk01.img disk01
mount -o loop disk02.img disk02
mkdir mhddfs01
mhddfs -o mlimit=10% disk01,disk02 mhddfs01

↑これを192.168.0.131と192.168.0.132の両方でやっておく

gluster peer probe 192.168.0.132
gluster volume create kfs replica 2 192.168.0.131:/storage/mhddfs01/kfs 192.168.0.132:/storage/mhddfs01/kfs
gluster volume start kfs

他のサーバでマウントする。
mkdir kfs
mount -t glusterfs 192.168.0.131:kfs kfs

■書き込み中にdisk01が消滅した場合(rm -rf disk01.img )
ディスクが物理的に外れた場合を想定。

書き込み中に192.168.0.132でdisk01.imgをrm -rfする
→何も起こらない。書き込み続行。

192.168.0.132のdisk01.imgは確かに消滅しているのに、mhddfsやdisk01の中身は正常に書き込み進行しているように見える。
GlusterFSやmhddfsを通さずとも、mountもdf -khもstatも、あまつさえdd of=/dev/nullでさえも、あたかもそこに完全なファイルが正常に存在しているかのような挙動を示す。
一体どこに書き込んだのか不明である。disk01を一旦umountすると、復旧できない(だってdisk01.imgがないもの)
消す前のdisk01.imgを作り直したり再設置したりしても何ら影響無し。切り離されて動いている様子。
容量的には元のdisk01.imgと同じサイズが上限になる。それでも割り当てメモリは超えてるし、swapしてる様子も無い。

えー、GlusterFSもmhddfsも関係ないっぽいけど、なんか驚愕の挙動なんですけど。。
仮想マシンイメージの実サイズが膨らんでたので、どこかに一時ファイルが作られているとしか。。。
ディスクイメージをマウントするのに-o loopしてるので、その影響でしょうか。。
実機じゃないと検証にならんな。。でも空きマシンは無いなぁ。。

■書き込み中にmhddfsがumountされた場合(umount -l mhddfs01)
mhddfsが落ちた場合を想定。内容が消失してローカルディレクトリに差し変わる結果、brickとして使っているディレクトリが消滅する。
GlusterFSがどのように動作するか、見物である。

書き込み中に192.168.0.132でumount -l mhddfs01する
→何も起こらない。書き込み続行。

書き込み完了後、クライアントでマウントポイントにアクセスできなくなる。
> ls: kfs: 入力/出力エラーです

mhddfs01を再マウントすると自動復帰する

■書き込み中にdisk01がumountされた場合(umount -l disk01)
mhddfsが束ねているファイルシステムが落ちた場合を想定。
mhddfsがどのように動作し、GlusterFSにどのような影響を与えるか、見物である。

書き込み中に192.168.0.132でdisk01をumount -fする
→192.168.0.132は止まり、192.168.0.131だけで書き込み続行。

書き込み完了後、クライアントでマウントポイントにアクセスできなくなる。
> ls: kfs: 入力/出力エラーです

disk01.imgを再マウントすると自動復帰する

0 件のコメント: