Mdのソフトウェアバグをクリーンアップするために、RAIDの半分(RAID1の/ dev/sda1と/ dev/sdb1)に障害があるとマークしました:
mdadm /dev/md2 --fail /dev/sdb1
mdadm /dev/md2 --remove /dev/sdb1
しかし今では、代わりに「失敗した」半分を使用します。すなわち、/dev/sda1
を使用する代わりに、/dev/sdb1
を使用したいのですが、mdadmはそれをオンラインにすることを拒否します:
mdadm --stop /dev/md2
mdadm -A /dev/md2 /dev/sdb1 --run --force
/dev/sdb1
は「スペア」であり、配列の実際のメンバーではないと見なされるため、これは失敗します。
-A
である--assemble
を使用していますが、-a
である--add
を使用する必要があります。
正しく思い出すと、既存のアレイに(再)追加されたデバイスは常にスペアとして追加され、その後すぐにカーネルはアレイが劣化してスペアがあることを認識し、再ミラーリングを開始します。これはwatch cat /proc/mdstat
で確認できます。
実行する必要のあるコマンド全体は、アレイがアセンブルまたは実行されていないことを前提とする次のいずれかです(OPは実行中でないことを示します)。
アレイが実行されていない場合:
mdadm --assemble /dev/md2 /dev/sdb1
ただし、アレイが実行されている場合:
mdadm --manage /dev/md2 -a /dev/sdb1
パーティションのマークを解除する最も簡単な方法は、アレイに再度追加することだと思います。ところで、テストを行う必要がある場合は、アレイからドライブを削除しないでください。障害としてフラグを付け、再起動すると、他のパーティションにフォールバックします。
mdadm /dev/md2 --add /dev/sdb1