まだエラーが発生していないLinux RAID5アレイのディスクを安全に交換するには?

まだエラーが発生していないLinux RAID5アレイのディスクを安全に交換するには?

4つのディスクにソフトウェアRAID5アレイ(Linux md)があります。

アレイを劣化させずにディスクの1つを新しいディスクに交換したいと思います。、可能であればオンラインで。これがどのように可能ですか?

次のような作業をしたくないので、これは重要です。

  • 他のディスクにストレスを与える危険があるため、再構築中に1つがクラッシュする可能性があります。
  • 「パリティなしの状況」にさらされる危険があるため、しばらくの安全網はありません。

オンラインでこれを行うにはあまりにも多くのことが必要であるため、古いddディスクのデータを新しいディスクにraw copy()する必要があります。オフラインそれでは、交換をしてみますが、理論的には可能です。

いくつかの背景:このディスクは5.5年以上ほぼ連続的に回転してきました。現時点では、まだ完全に動作し、すべて(長い)SMARTセルフテストに合格しました。しかし、4つのディスクのうちの1つが長期間持続しないと考える理由があります(予測エラーの仮定)。

ベストアンサー1

mdadm 3.3以降を使用

~からmdadm3.3(2013年9月3日発行)3.2+カーネル、次のようにすることができます:

# mdadm /dev/md0 --add /dev/sdc1
# mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1

sdd1これは交換したいデバイスであり、これにはsdc1好ましいデバイスであり、アレイからスペアデバイスとして宣言する必要があります。

この--withオプションはオプションであり、指定しない場合は使用可能な置換が使用されます。

以前のmdadmバージョン

注:また3.2+カーネル

まず、新しいドライブをスペアドライブとして追加します(およびディスクデバイスをそれぞれRAIDとディスクデバイスに交換しますmd0sdc1

# mdadm /dev/md0 --add /dev/sdc1

sdd1次に、次のように(失敗したデバイスに)コピー - 交換操作を開始します。

# echo want_replacement > /sys/block/md0/md/dev-sdd1/state 

結果

システムは、で読み取ることができるすべてのブロックをコピーsdd1しますsdc1。読み取れないブロックが見つかった場合は、パリティに基づいてブロックを再構築します。操作が完了すると、前のスペアドライブ(ここでsdc1:)がアクティブドライブになり、エラーが発生したドライブはエラー(F)と表示されるため、削除できます。

メモ:クレジットは次のとおりですフロストスーツそしてアンスガエステルのみ元の解決策を見つけた人(参照質問が重複しています。)。

古いカーネル

他の答えは以下を提案します。

  • ~の方法:アレイをRAID6に変換し、ディスクを「交換」してからRAID5に戻します。
  • ハウクラグ~の方法:RAID5アレイからディスクを取り出し、新しいディスクのRAID1(ミラー)の一部として作成し、そのミラーリングされたドライブをRAID5アレイ(理論)に再追加するだけです。

おすすめ記事