まだエラーが発生していない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アレイ(理論)に再追加するだけです。

答え2

これがうまくいくかもしれません。

  1. オンライン
  2. 交換したいディスク以外のディスクに圧力をかけないでください。

しかし、次の方法がうまくいくかもしれませんが、「本で」そのようなアドバイスを見つけることはできません。

アイデア:

  1. アレイから古いディスクを削除します(一時的に)。mdadm --manage /dev/raid5 --fail /dev/OLD
  2. 既存のディスクと新しいディスクから新しいmdデバイス(RAID-1)を作成します。mdadm --build /dev/md42 --level=mirror --raid-devices=2 /dev/OLD /dev/NEW
  3. RAID-1をアレイに戻します(/ dev / OLDの代わりに):mdadm --manage /dev/raid5 --re-add /dev/md42

しなければならない:-)発生:

  1. RAID-5は/ dev / md42を同期します。時間がかかりません。
  2. RAID-5は再びうまく機能しますが、速度は遅くなります。
  3. /dev/NEW は /dev/OLD と同期されます。

同期の進行状況を観察します(cat /proc/mdstatまたはmdadm --monitor)。同期が完了したら、RAID-5からRAID-1を削除してRAID-1を停止し、/ dev / NEWをRAID-5に追加します。すべてが正常な場合は、問題を防ぐために/ dev / OLDのmdraidスーパーブロックを上書きします。mdadm --zero-superblock

警告する:高速RAID-5同期は、ビットマップを使用している場合にのみ機能できます。そうでない場合は、まず仮想RAID-5(ビットマップなし)でテストするのが最善です。または1つを追加してください。少なくとも外部項目を追加することが可能でなければなりません。そうしないと、デバイスを変更する前にRAID-5を停止する必要があります。ただし、RAID-5から起動すると、もう少し複雑になります。

答え3

RAID-6(1台のパリティディスクではなく2台)を実行し、mdadmin 3.1.x以降を実行してもかまいません。RAID-5アレイをRAID-6に変換追加パリティディスクを追加します。ただし、これにより、再構築プロセス中にアレイがストレスを受けます。書き込み中により多くのパリティディスクを更新する必要があるため、パフォーマンスにある程度影響します。

ただし、正常に完了すると、故障したディスクはそのままにでき、最終的に故障してもアレイのパリティ保護を受ける可能性があります。 RAID6に保つのを待たないと、アレイをRAID6からRAID5に変換できると思います。

アレイをRAID-5に保ち、アレイを劣化モードに切り替えずにディスクを交換するオンライン方法がわかりません。交換失敗とマークする必要があると思うからです。あなたのddコピーのアイデアがこれを行う方法かもしれません。

関連情報