4つのディスクにソフトウェアRAID5アレイ(Linux md)があります。
アレイを機能低下状態にせずに、ディスクの1つを新しいものと交換したい、可能な場合はオンライン。それはどのようにして可能でしょうか?
次のようなことはしたくないので重要です。
私はオンラインでそうすることは非常に求めていると思います、そして私は古いディスクのデータを新しいディスクofflineに生コピー(dd
)してから置き換えるべきですそれは理論的には可能だと思います...
一部のコンテキスト:これらのディスクはすべて、5.5年以上にわたってほぼ継続的に回転しています。それらは今のところまだ完全に機能し、すべて(長い)SMARTセルフテストに合格します。しかし、これらの4つのディスクの1つはそれほど長く続かないと思う理由があります(予測失敗)。
mdadm
3. (2013年9月3日リリース)なので、 .2+カーネル を使用している場合は、次のように進めることができます。
# mdadm /dev/md0 --add /dev/sdc1
# mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1
sdd1
は交換するデバイスです。sdc1
はそのための優先デバイスであり、アレイのスペアとして宣言する必要があります。
--with
オプションはオプションです。指定しない場合、使用可能なスペアが使用されます。
注: .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)とマークされ、削除できます。
注:クレジットはfrostschutzおよびAnsgar Esztermann元のソリューションを見つけた人( 重複した質問 を参照)。
他の答えは提案します:
RAID-6(1ではなく2パリティディスク)を実行することを気にせず、mdadmin 3.1.x以降を実行している場合、 RAID-5アレイをRAID-6に変換 =追加のパリティディスクを追加します。ただし、これにより、再構築中にアレイにストレスがかかります。また、書き込み中に更新するパリティディスクが多いため、パフォーマンスに影響があります。
ただし、正常に完了した場合は、障害が発生したディスクをそのままにしておくことができ、最終的に障害が発生した場合でも、アレイのパリティ保護は維持されます。 RAID6として維持するのを待たなければ、アレイをRAID6からRAID5に戻すことができると思います。
アレイをRAID-5として維持し、アレイを機能低下モードにせずにディスクを交換するオンラインの方法はわかりません。交換に失敗したとマークする必要があると思います。あなたのddコピーのアイデアはそれを行う方法かもしれません。
これは要件を満たす可能性があります
しかし、以下が機能する可能性があるとしても、おそらく「本の中に」そのような推奨はありません...
考え:
mdadm --manage /dev/raid5 --fail /dev/OLD
mdadm --build /dev/md42 --level=mirror --raid-devices=2 /dev/OLD /dev/NEW
mdadm --manage /dev/raid5 --re-add /dev/md42
すべき :-)が起こること:
同期の進行状況を見る(cat /proc/mdstat
またはmdadm --monitor
)。同期が完了したら、RAID-5からRAID-1を取り出し、RAID-1を停止して、RAID-5に/ dev/NEWを再度追加します。すべて問題なければ、問題を回避するために/ dev/OLDのmdraidスーパーブロックを上書きします。mdadm --zero-superblock
警告: RAID-5の高速同期は、ビットマップを使用する場合にのみ機能する場合があります。ない場合は、まずダミーのRAID-5(ビットマップなし)でテストしてください。または追加してください。少なくとも外部を追加することは可能です。それ以外の場合は、デバイスを変更する前にRAID-5を停止する必要があります。ただし、RAID-5から起動する場合、これは少し複雑になります。