ℹ️本記事は古いコンテンツを変換して表示しています。
表示が崩れたり、リンクが正しくない可能性があります。ご了承ください。
ℹ️本記事は古いコンテンツを変換して表示しています。
表示が崩れたり、リンクが正しくない可能性があります。ご了承ください。
2016/06/20 15:06 : GlusterFSの構成ディスクを交換する
図らずも一台のデータを壊してしまったので嬉々として復旧実験。ノード自体は生きているが、brickの中身を壊しちゃったという場合の話。
参考にするのはGlusterFSの公式資料。
service stop
だと子プロセスが残るのでkillallしてくださいな。(そのうち直します。あとglusterfsdじゃなくてglusterdが正しいという話もね……。)
# service glusterfsd stop # killall glusterfsd
newfs
とかmount
まで済ませる。# cat /var/db/glusterd/vols/<ボリューム名>/info | perl -ne 'm/volume-id=/ and s/^.*=// and s/-//g and print' | setextattrbin user trusted.glusterfs.volume-id -stdin
# service glusterfsd start # gluster vol heal <ボリューム名> full
disperseならNFSでマウントしてから、
# find <マウント先> -exec stat {}\;
などで復旧を開始。
おわり。
標準のsetextattr
だと文字列しか設定できない。一応バイナリ(表示不可文字)も引き数に設定できるものの、万が一"00"が入ったらダメ。たとえば、こんな風に消えてしまう。(これだけだとperlの責任が否定できないけどね)
# echo -n "110022" | perl -e 'print pack("H*",);' > a # hexdump -C a 00000000 11 00 22 |.."| 00000003 # perl -e 'print $ARGV[0]' `cat a` | hexdump -C 00000000 11 |.| 00000001
そんなわけでsetextattrbinを作ったのです。