web-dev-qa-db-ja.com

一時的に切断されたRAIDデバイスを再構築する

RAID 5アレイ(特にLinuxではMD RAID)を構築した後、何らかの理由でドライブの1つが切断された場合、次の場合にそのドライブを最初から再構築する必要がありますか?

  1. アレイにデータが書き込まれていません。
  2. 一部のデータがアレイに書き込まれました。

「スクラッチ」とは、ドライブが最後にオンラインになってからの差分データの再構築ではなく、完全なデータの再構築を意味します。

2
Livy

それは次第です。

ドライブをRAID 5アレイから切断する場合、ドライブをオンラインに戻すと、アレイを完全に再構築する必要があります。このドライブがオフラインになる前と同じデータがまだあることをシステムが知る方法はありません。

ドライブがオフラインの間、データは他の方法で変更される可能性があることを意味します。また、ドライブがオンラインに戻っているときに「信頼」すると、データの整合性が損なわれる可能性があります。

データ整合性の書き込み意図ビットマップまたはジャーナルモードを有効にできます。これについては、mdadmの--bitmapおよび--consistency-policyオプションを参照してください。しかし、ドライブを実際に取り外して再接続した後に完全な再構築が行われないことを保証するものではありません。たとえば、アレイにホットスペアが追加されている場合、ドライブを取り外すとすぐにアレイがホットスペアに再構築されます。

1
NStorm

これは、書き込みを意図したビットマップが解決する正確な問題です。配列を作成するときは、コマンドラインで--bitmap=internalを指定します。ビットマップは、配列の領域が書き込まれたかどうかを記録します。たとえば、アレイのサイズによっては、1ビットが1 GiBになる場合があります。

通常の操作中、カーネルは領域を書き込む直前にビットを1に設定します。次に、すべての書き込みが領域にフラッシュされたことがわかると、そのビットをゼロにします。アレイのドライブが故障してアレイが劣化した場合、ビットは1を蓄積し始めます。クリアされません。

ドライブをアレイに再度追加すると、ビットマップに従って、mdは書き込まれた領域のみを同期します。

--grow --bitmap=internalを使用して、既存の配列にビットマップを追加できます。

1
Mike Andrews