2010/09/10

DRBDの不整合状態を修正してみた

DRBDをUbuntu 8.04でテストした時には、debian lennyとの間でocfs2がうまく動かなかったのですが、 Ubuntu 10.04になってからは問題なく動いていました。

ある時、vmwareが動かない事で/etc/rc2.d/以下のスクリプトの大半が実行されていない事に気がついたのですが、原因はDRBDでした。

drbdadmコマンドを使うだけで解決したのですが、単純に設定だけじゃなくてDRBDの裏の動きもある程度把握していないと複雑な状況に対応できないかなと感じました。

初期症状

いつの間にかDRBDのステータスが以下のようになっていまいました。

この結果、/etc/rc2.d/S06drbdが終了せずにいつまでも接続待ちのままプロセスが残り、後続の/etc/rc2.dにあるスクリプトが実行されない状態になってしまいました。

回復させるために手動で停止するか、/etc/rc2.d/S06drbd stopを実行して、処理を継続させる必要がありました。

主に参照する側の/etc/init.d/drbd status出力

drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@athlon, 2010-08-04 17:46:47
m:res  cs            ro               ds                 p  mounted  fstype
0:r0   WFConnection  Primary/Unknown  UpToDate/DUnknown  C

主に書き込みが発生する側の/etc/init.d/drbd status出力

drbd driver loaded OK; device status:
version: 8.0.14 (api:86/proto:86)
GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33
m:res  cs          st               ds                 p  mounted  fstype
0:r0   StandAlone  Primary/Unknown  UpToDate/DUnknown  -

対応方法

一方は単純に接続待ちになり、もう片方は StandAlone 状態になっていたので、StandAloneの方から手動で接続状態にすることにします。

もしどちらがPrimaryになるか自信がなければ、事前に不要な片側を初期化しておくのがベストでしょう。

$ sudo /sbin/drbdadm connect r0

この後でstatusを確認すると、無事に同期が始まっていました。

同期中の/etc/init.d/drbd status出力

drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@athlon, 2010-08-04 17:46:47
m:res  cs          ro                 ds                     p  mounted  fstype
0:r0   SyncTarget  Secondary/Primary  Inconsistent/UpToDate  C
...    sync'ed:    46.9%              (1006128/1884328)K

ただ、ステータスが Primary/Secondary となっていたので、 WFConnection 状態だった側でPrimaryにしました。

$ sudo /sbin/drbdadm -- -o primary r0

最終的に復旧した状態

drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@athlon, 2010-08-04 17:46:47
m:res  cs         ro               ds                 p  mounted  fstype
0:r0   Connected  Primary/Primary  UpToDate/UpToDate  C

0 件のコメント: