第7章 トラブルシューティングとエラーからの回復

目次

ハードドライブの障害の場合
DRBD を手動でハードドライブから切り離す
I/Oエラー時の自動切り離し
障害が発生したディスクの交換(内部メタデータを使用している場合)
障害が発生したディスクの交換(外部メタデータを使用している場合)
ノード障害の場合
セカンダリノードの一時的な障害の場合
プライマリノードの一時的な障害の場合
永続的なノード障害の場合
スプリットブレインからの手動回復

この章では、ハードウェアやシステムに障害が発生した場合に必要な手順について説明します。

ハードドライブの障害の場合

ハードドライブの障害の際の対処方法は、ディスクI/Oエラーを処理するために DRBDがどのように設定されているか(「ディスクエラー処理ストラテジー」を参照)、および設定されているメタデータのタイプ(「DRBDメタデータ」を参照)に応じて異なります。

[注記]注記

ほとんどの場合、ここで取り上げる手順は DRBDを直接物理ハードドライブ上で実行している場合にのみ適用されます。次に示す層の上でDRBDを実行している場合には通常は適用されません。

  • MDソフトウェアRAIDセット (この場合はmdadmを使用してドライブ交換を管理)

  • デバイスマッパRAID (dmraidを使用)

  • ハードウェアRAID機器(障害が発生したドライブの扱いについては、ベンダの指示に従う)

  • 一部の非標準デバイスマッパ仮想ブロックデバイス(デバイスマッパのマニュアルを参照)

  • EVMSボリューム(EVMS のマニュアルを参照)

DRBD を手動でハードドライブから切り離す

DRBDがI/Oエラーを渡すように設定されている場合(非推奨)、まずDRBDリソースを切り離すとよいでしょう。つまり、補助記憶装置から切り離します。

drbdadm detach resource

drbdadm dstateコマンドを実行して、リソースが ディスクレスモードになったことを確認します。

drbdadm dstate resource
Diskless/UpToDate

ディスク障害がプライマリノードで発生した場合、スイッチオーバと、この手順を組み合わせることもできます。

I/Oエラー時の自動切り離し

DRBDがI/Oエラーの際に 自動的に切り離しを行うように設定されている場合 (推奨オプション)は、手動で介入しなくても、 DRBDがすでにリソースを下位ストレージから自動的に切り離しているはずです。その場合でもdrbdadm dstateコマンドを使用して、リソースが実際にディスクレスモードで実行されているか確認します。

障害が発生したディスクの交換(内部メタデータを使用している場合)

内部メタデータを使用している場合は、新しいハードディスクでDRBDデバイスを再構成するだけで十分です。交換したハードディスクのデバイス名が交換前と異なる場合は、DRBD設定ファイルを適切に変更してください。

新しいメタデータを作成してから、リソースを再接続します。

drbdadm create-md resource
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
success

drbdadm attach resource

新しいハードディスクの完全同期が瞬時に自動的に始まります。同期の進行状況を監視するには、通常のバックグラウンド同期と同様に/proc/drbdを使用します。

障害が発生したディスクの交換(外部メタデータを使用している場合)

外部メタデータを使用している場合でも、手順は基本的には同じです。ただし、DRBDだけではハードドライブが交換されたことを認識できないため、追加の手順が必要です。

drbdadm create-md resource
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
success

drbdadm attach resource
drbdadm invalidate resource

上記のdrbdadm invalidateコマンドが同期をトリガーします。この場合も、同期の進行状況を/proc/drbdで確認できます。