第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デバイスを新しいハードディスクにバインドするだけで十分です。 障害の発生したディスクとは別のLinuxデバイス名によって 新しいハードディスクのアドレスを指定する必要がある場合は、 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で確認できます。