SATA Raid1の障害テスト

HPのサーバにCentOS4.4をインストールし、インストール時にソフトウェアRAIDの設定を行った。
無事RAID1になっているか確認するために、まずはSATA2のディスクのケーブルを抜いて起動。
無事、OSが立ち上がる。
cat /proc/mdstat
で、RAIDの状態を確認。

Personalities : [raid1]

md1 : active raid1 sda3[1]
      239585280 blocks [2/1] [U_]

sdb3のパーティションがあるHDDのケーブルを抜いたため、sda3のみが見えていて、sdb3のパーティションは見えていない。
そして、正常な状態であれば、 [UU]と表示されるところも、 [U_]となっており、HDDに異常があったことが分かる。

この状態を復旧させるため、電源を落とし、ケーブルをつないでブートさせ、
mdadm /dev/md1 -a /dev/sdb3
というコマンドを入力。/dev/sdb3は同期が取れなくなったパーティションを指定すること。

cat /proc/mdstatで状況を把握可能。

Personalities : [raid1]

md1 : active raid1 sda3[2] sdb3[1]
      239585280 blocks [2/1] [_U]
      [>....................]  recovery =  0.2% (526528/239585280) finish=121.0m
in speed=32908K/sec
unused devices: 

こうすると、自動的にリカバリーが始まる。スピードは30M/S程度なので250Gのディスクの同期をとる場合は、2時間以上かかる。
同期が完了すると、cat /proc/mdstatで下記のような表示になる。

Personalities : [raid1]

md1 : active raid1 sdb3[1] sda3[0]
      239585280 blocks [2/2] [UU]

次に、SATA1のディスクケーブルを抜いて、SATA2のディスクのみでブート可能か確かめる。SATA2のディスクのみでブートしても、sdbではなくsdaと認識されている。マスタ/スレーブがないSATAだとそうなるのか。

そして、SATA1のHDDをつなぎなおして、再度ブート。
そして、cat /proc/mdstatすると、SATA2のsdbがマスタとして起動していた。

md1 : active raid1 sdb3[1]
      239585280 blocks [2/1] [_U]

SATAの仕様かわからないけど、最後にブートしたディスクの方のMBRからブートするようなので、SATA1をつなぎなおしても、SATA2のMBRからlinuxがブートする。