アーカイブ | 11月, 2012

glusterfsのsplit brain の解消

8 11月

split brain となった場合

確認は
# gluster volume heal syncdata info
Heal operation on volume syncdata has been successful

Brick 10.243.255.196:/home/syncdata
Number of entries: 1
/file01.txt

Brick 10.243.255.197:/home/syncdata
Number of entries: 1
/file01.txt

https://sites.google.com/site/glusterfstech/recovery/split-brain
GlusterFSはクライアントから該当ファイルへのアクセスを禁止します。クライアントから該当ファイルにアクセスすると「I/Oエラー」になります。

スプリットブレイン状態のファイルを回復するには、管理者が各ノードのファイルの内容を直接確認して、不要と判断した方のファイルを手動で削除した上で再レプリケーションを行う必要があります。

古いブリック内のファイルを削除して、正しい方のファイルで再レプリケーションします。
# gluster volume stop syncdata
# getfattr -d -m trusted.gfid -e hex /home/syncdata/brainfile.txt
getfattr: Removing leading ‘/’ from absolute path names
# file: home/syncdata/pgdata/postgresql.conf
trusted.gfid=0xebeef9c437894a8ca910dd98ab240297

# rm -rf /home/syncdata/brainfile.txt
# rm -rf /home/syncdata/.glusterfs/eb/ee/ebeef9c4-3789-4a8c-a91-0dd98ab240297
# gluster volume start syncdata

クライアントからbrainfile.txtに正常にアクセスするには、ファイルシステムの再マウントが必要になります。

———————————————————————————————–
3.2系だと、どちらかのファイルを持ってくればOKだったような?

3.3系から gluster ディレクトリが出来たので
http://www.joejulian.name/blog/fixing-split-brain-with-glusterfs-33/
にあるように

# export BRICK=/home/syncdata
# exportSBFILE=/pgdata/postgresql.conf
# GFID=$(getfattr -n trusted.gfid –absolute-names -e hex ${BRICK} ${SBFILE} | grep 0x | cut -d’x’ -f2)
# rm ${BRICK}${SBFILE}
# rm ${BRICK}/.glusterfs/${GFID:0:2}/${GFID:2:2}/${GFID:0:8}-${GFID:8:4}-${GFID:12:4}-${GFID:16:4}-${GFID:20:12}
として、削除する必要があるみたい。