mdadm 3.3 の使用
mdadm
以降 3.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) としてマークされるため、それを取り外すことができます。
注: クレジットは frostschutz にあります アンスガル エステルマン 元の解決策を見つけた人 (重複した質問を参照)。
古いカーネル
他の回答が示唆するもの:
- ジョニー のアプローチ:アレイを RAID6 に変換し、ディスクを「交換」してから、RAID5 に戻します。
- ハウケ・ラギング のアプローチ:RAID5 アレイからディスクを簡単に取り外し、新しいディスクで RAID1 (ミラー) の一部にし、そのミラー ドライブを RAID5 アレイに戻します (理論上)...
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-1 を RAID-5 から取り出し、RAID-1 を停止し、/dev/NEW を RAID-5 に再度追加します。問題がなければ、問題を回避するために /dev/OLD の mdraid スーパーブロックを上書きします:mdadm --zero-superblock
警告: 高速 RAID-5 同期は、ビットマップを使用する場合にのみ機能する場合があります。持っていない場合は、最初にダミーの RAID-5 (ビットマップなし) でテストすることをお勧めします。または、1 つ追加します。少なくとも外部のものを追加できるはずです。そうしないと、デバイスを変更する前に RAID-5 を停止する必要がある場合があります。ただし、RAID-5 から起動する場合、これは少し複雑になります。