2010/03/27

clvm/gfs障害からの回復

前回はUbuntu 8.04 x86_64とDebian Lenny x86の組み合せでGFSを動かそうとしましたが、次のようなエラーがでたままでした。 しかしVMWare上では問題なく動き、前回は途中からVMWare上での様子をブログにまとめました。

/etc/init.d/cman start時のエラーメッセージ

Starting cluster manager:
 Loading kernel modules: done
 Mounting config filesystem: done
 Starting cluster configuration system: done
 Joining cluster:cman_tool: Cannot open connection to cman, is it running ?
 done
 Starting daemons: groupd fenced dlm_controld gfs_controld
 Joining fence domain:fence_tool: can't communicate with fenced -1
 done
 Starting Quorum Disk daemon: done

メッセージからも分かるように次のような状態でした。

  • aisexecは稼働中
  • ccsdは稼働中
  • /var/run/cman_admin, /var/run/cman_clientはnetstat -naで表示されず閉じている
  • fencedは未稼働

GFS周りの復旧手順をいろいろみていたのですが、fencedが起動せず、cman_toolも動かないので八方塞がりの状態でした。

そこでaisexecを停止してからcmanを起動したところ、クラスターメンバーは互いに通信できないものの、スタンドアローンな状態では起動し、cman_tool statusに反応があるようになりました。

Ubuntuではこんな手順。

$ sudo /etc/init.d/openais stop
$ sudo /etc/init.d/cman restart

debian lennyではこんな感じ。

$ sudo pkill aisexec
$ sudo /etc/init.d/cman restart

その結果のcman_tool statusの出力。

両方で/etc/init.d/cman startを実行した後のcman_tool statusの出力結果

Version: 6.1.0
Config Version: 4
Cluster Name: gwlogcl
Cluster Id: 13734
Cluster Member: Yes
Cluster Generation: 12604
Membership state: Cluster-Member
Nodes: 1
Expected votes: 1
Total votes: 1
Quorum: 1  
Active subsystems: 7
Flags: 2node Dirty 
Ports Bound: 0  
Node name: athlon
Node ID: 2
Multicast addresses: 239.192.53.219 
Node addresses: 192.168.1.210 

とりあえずこの状態で、cman_tool leave, cman_tool kill -n $(uname -n)を試してみる。 そこでcmanのリスタート。

"cman_tool leave"等はマニュアルにはサブシステム(clvm, gfs)が稼働している間は絶対に実行しないように書かれているので注意すること。

$ sudo /etc/init.d/cman restart

続いてaisexecの起動。 Ubuntuでは起動スクリプトを使います。

$ sudo /etc/init.d/openais start

Debianでは手動でaisexecを起動します。aisexecは自動的にforkするので、sudoに-bオプションは不要です。

$ sudo /usr/sbin/aisexec

この状態でcman_tool statusを実行した結果がこれ。

両ノードでのaisexec再起動後のcman_tool statusの出力

Version: 6.1.0
Config Version: 4
Cluster Name: gwlogcl
Cluster Id: 13734
Cluster Member: Yes
Cluster Generation: 12612
Membership state: Cluster-Member
Nodes: 2
Expected votes: 1
Total votes: 1
Quorum: 1  
Active subsystems: 7
Flags: 2node Dirty 
Ports Bound: 0  
Node name: athlon
Node ID: 2
Multicast addresses: 239.192.53.219 
Node addresses: 192.168.1.210 

大丈夫そうなので、両方のノードでclvmを起動してみます。

$ sudo /etc/init.d/clvm start

ここまで来ると問題なくgfs2_mkfsを実行する事ができて、同時に両方のノードからマウントすることができるようになります。

ポイントはaisexecを停止した状態から/etc/init.d/cmanを叩くところのようです。 これがどれくらい汎用性があるのかわかりませんが、とりあえずGFSを使うことができるようになりました。

とりあえず気は済んだのでGFSはこれでおしまい。 最終的にはUbuntu 10.04 LTSを待つか、beta2が出たくらいで移行してocfs2を使う事になると思います。

2 件のコメント:

クロ さんのコメント...

私もこの問題に直面し,書いてある通りにやったところ復旧しました.
openais が曲者なのでしょうか?
いまいち原因がはっきりとしませんがどうもありがとうございました.

YasuhiroABE さんのコメント...

私もしばらく原因を探ってみたのですが、これはよくわからないままになっています。

ともあれ問題が解決したということで何よりでした。