大き目のトラブルと小さ目のトラブルがありましたが、なんとか復旧しました。
まず前提として、RAID1 のうち壊れてない方 (sda) は以前書いたとおりバグ入りファームが載った Barracuda 7200.11 です。つまり、うっかり電源を切るとそのまま認識不能になって RAID 全体を失う可能性があります。壊れた方は sdb です。
この状況下でデータを失いたくない場合は、電源を切らずにディスクを追加する必要があります。幸い、Linux では USB-HDD であっても RAID のメンバにすることができるので、USB で繋いで2台による RAID1 から3台による RAID1 にして中身をコピーすることを考えます。eSATA ならもっと速いはずですが、使っているマザーにはありません。
というわけで、繋いでパーティションを切ります。今まで HDD が壊れたときは単に MBR をコピーして作業していたのですが、新しい HDD は前述の通り 4K セクタなので、一旦コピーした後開放してからアライメントを考慮した配置で作り直します。(一旦コピーするのはブートプログラムをコピーしたいから)
そして次の操作で RAID メンバに追加し、resync されるのを待ちます。大体 20MB/s です。
[root@nyx:tty1 ~]# mdadm /dev/md0 --grow --raid-devices 3 [root@nyx:tty1 ~]# mdadm /dev/md0 --add /dev/sdc1
1GB の /boot と 2GB のスワップパーティションは何事も無く resync 完了したので安心していたのですが、朝起きたら 900GB のルートパーティションの resync 中にコケたらしく、マシンが反応しなくなっていました。ひとまずリセット(バグ入り Barracuda が認識不能になるのは電源 ONOFF の時だけでリセットは大丈夫)してログを見たのですが、コケた理由は謎でした。タイミング的には「cron.daily が走って HDD に負荷がかかったから」「sdb のエラーセクタを resync しようとしたから」のどちらかのようなのですが。とりあえず sdb を RAID から取り除いてもう一度 resync にトライします。
[root@nyx:tty1 ~]# mdadm /dev/md1 --fail /dev/sdb3 [root@nyx:tty1 ~]# mdadm /dev/md1 --remove /dev/sdb3 [root@nyx:tty1 ~]# mdadm /dev/md1 --add /dev/sdc3
会社から帰ってきたらまだ resync してました。前回コケた所は余裕で通過してたのでひとまず安心。晩飯食い終わるころには完了です。
電源を切って sdc だけが繋がった状態で起動…しない。どうやら GRUB の stage1 が stage2 を見つけられない模様。パーティション開始セクタが変わったらインストールしなおさなきゃいけないのね… 以前 Windows XP でパーティションをずらした時はブートセクタはそのままで良かったんですが。ともあれ元の構成(ただし壊れてるやつは繋がない)で起動してブートセクタをインストールしてまた繋ぎ変えて起動。今度は大丈夫。
あとは今まで何度もやってるとおりに MBR をコピーしてミラーに追加して resync を待ちます。今度は SATA 同士でのコピーなので3時間程度。お疲れ様です :-p
no comment untill now