web-dev-qa-db-ja.com

最初に劣化することなく、Linux mdアレイのドライブをプリエンプティブに修復/交換するにはどうすればよいですか?

内部SMARTテストと不良ブロックの再マップで保留中の障害を示しているドライブがあります(すでにスワップアウトされており、将来の使用のためにこれを要求しています)。

すぐに不良ドライブになってホットスペアに再構築するか、ドライブをプルして新しいドライブを挿入してからそのドライブに再構築するのは、_mdadm --fail_に簡単です。

問題は、これにより、その再同期の全期間にわたってアレイが劣化状態になり、劣化した実行の追加の障害リスクとパフォーマンスオーバーヘッドの両方が発生することです。これは、実際にドライブに障害が発生した場合に予想されますが、ドライブが実際に障害が発生していない場合は不要な露出です。

その単一のドライブをホットスペアにプリエンプティブに交換/再構築するにはどうすればよいですかなし最初にサービスを停止しますか?

1

この手法がどれほど回復力があるかはわかりませんが、「機能するはずです」。実際に実行する前に、この手順を他のドライブでいくつかテスト実行したいと思います。

2ディスクRAID-1を使用している場合は、mdadm --growを使用して3ディスクRAID-1に変換できます。これはトリプルミラーであり、RAID-1Eではありません。次に、心配しているドライブをフェイルアウトして、2つのディスクに--grow戻すことができます。このようなもの:

mdadm --grow /dev/md0 --level=1 --raid-devices=3 --add /dev/sdgood

# wait for the resync to complete, then fail the drive out that's starting to go bad:

mdadm /dev/md0 --fail /dev/sdbad --remove /dev/sdbad

# then, set the RAID-1 back to two devices.
mdadm --grow /dev/md0 --raid-devices=2

これを行うと、データのミラーリングされたコピーが常に少なくとも1つあります。

伝えられるところによると、RAID-5からRAID-6までのアレイを--growできますが、その後RAID-5に戻る人のことは聞いたことがありません。いずれにせよ、すべてのディスク上のすべてのデータを書き換える必要があるため、このアプローチははるかにリスクが高くなります。

1
Mike Andrews