Linux RAID5アレイでまだ故障していないディスクを安全に交換する方法は?


26

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

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

私はしたくないので、それは重要です:

  • 再構築中にクラッシュする可能性があるため、他のディスクにストレスをかけるリスクを負い、
  • 「パリティなしの状態」になる危険性があるため、しばらくの間はセーフティネットがありません。

オンラインでそうすることはあまりにも多くのことを求めているのでdd、古いディスクのデータをオフラインで新しいディスクに生コピー()してから置き換える必要がありますが、理論的には可能だと思います...

コンテキスト:これらのディスクはすべて5.5年以上にわたってほぼ連続的に回転しています。現時点ではまだ完全に機能しており、すべて(長い)SMARTセルフテストに合格しています。ただし、これら4つのディスクの1つはそれほど長くは続かないと考えられる理由があります(予測障害が想定されます)。

回答:


36

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+カーネルが必要です。

まず、(置き換えるスペアとして新しいドライブを追加md0し、sdc1それぞれ、自分のRAIDとディスクデバイスと):

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

次に、次のようなコピー-置換操作を開始します(sdd1障害のあるデバイスです):

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

結果

システムは、読み取り可能なすべてのブロックをからsdd1にコピーしsdc1ます。読み取り不可能なブロックになると、パリティから再構築します。操作が完了すると、以前のスペア(ここsdc1では:)がアクティブになり、障害のあるドライブに障害(F)のマークが付けられるため、削除できます。

注:元のソリューションを見つけたfrostschutzAnsgar Esztermannにクレジットが与えられます(重複した質問を参照)。

古いカーネル

他の答えは示唆しています:

  • ジョニーアプローチ:アレイをRAID6に変換し、ディスクを「交換」してからRAID5に戻し、
  • Hauke Lagingアプローチ:RAID5アレイからディスクを簡単に取り外し、新しいディスクでRAID1(ミラー)の一部にし、そのミラードライブをRAID5アレイに追加します(理論上)...

2
mdadm --add--replace動作する前にまだ必要です。(mdadm3.3、Ubuntu 15.10)。--addafter を実行する--replaceと、スペアが追加されるとすぐにコピーが開始されます。(デバイスは「交換が必要」としてマークされたままです)。
ピーターコーデス

3

これは要件を満たしている可能性があります

  1. オンライン
  2. 交換するディスク以外のディスクにストレスをかけないでください

しかし、次のように機能する場合でも、「本の中」でそのような推奨事項を見つけることはできないでしょう...

アイディア:

  1. ディスクOLDをアレイから取り出します(しばらくの間)。 mdadm --manage /dev/raid5 --fail /dev/OLD
  2. ディスクOLDおよびNEWから新しい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-1をRAID-5から取り出し、RAID-1を停止して、/ dev / NEWをRAID-5に再度追加します。すべてが正常であれば、問題を回避するために/ dev / OLDのmdraidスーパーブロックを上書きします。mdadm --zero-superblock

警告:高速RAID-5同期は、ビットマップを使用している場合にのみ機能する場合があります。持っていない場合は、最初にダミーのRAID-5(ビットマップなし)でテストを行ってください。または追加します。少なくとも外部のものを追加することは可能です。そうでない場合は、デバイスを変更する前にRAID-5を停止する必要がある場合があります。ただし、RAID-5から起動する場合、これは少し複雑になります。


3

RAID-6(1ではなく2つのパリティディスク)を実行することを気にせず、mdadmin 3.1.x以降を実行している場合は、RAID-5アレイをRAID-6変換してパリティディスクを追加できます。。ただし、これにより、再構築中にアレイに負荷がかかります。また、書き込み中に更新するパリティディスクが増えるため、パフォーマンスに影響を及ぼします。

ただし、正常に完了した場合は、障害のあるディスクを所定の場所に保持でき、最終的に障害が発生した場合でも、アレイのパリティ保護が維持されます。RAID6として保持するのを待たなければ、アレイをRAID6からRAID5に変換できると思います。

アレイをRAID-5として維持し、アレイを劣化モードにせずにディスクを交換するオンラインの方法がわかりません。交換に失敗したとマークする必要があると思います。あなたのddコピーのアイデアはそれをする方法かもしれません。


@haukelaging FYIカーネル3.2以降では可能になりました。私の答えをご覧ください。
トーター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.