2004年09月17日

ソフトウェアRAID5で1台目の復旧

とあるマシンをLinuxを使ってIDEのSoftWare RAID5環境にて動かして居るんですが、先日再起動を行ったところRAID5の1台目のディスクにSMARTから交換しろとの指示が・・・

ログを見ると確かに時々

Aug 27 17:45:07 xxxxx kernel: hdX: dma_intr: status=0x51 { DriveReady SeekComplete Error }
なんて言うエラーが出ているので交換しなければなりません。

まぁ、普通Software RAID5では

  1. FAILDになってなければraidsetfaulty /dev/mdX /dev/hdXで不良ディスク扱いにする
  2. マシンを停止して不良ディスクを交換
  3. 再起動
  4. raidhotadd /dev/mdX /dev/hdXで新しいディスクを同期させる
といった手順で簡単に復旧出来ます。

今回も同様にさっくりやろうと思ったら、raidsetfaultyが無い(;´д`)ノ
どうも古いOSなんで入ってなかったらしい。

新しいのを入れるのも面倒だしどうせ捨てるディスクだからと、起動中にHDの線を外して無理矢理不良ディスクにさせました。
(よい子はまねしないように(^^;)

で、次はさっくり交換、で再起動・・・起動中にRAIDが認識出来なくて停止_| ̄|○

おかしいなと思っていろいろ確かめた結果、どうも/etc/raidtabで指定した1台目にRAIDの情報書いて居るようで、1台目が無かったり別のディスクがセットされていると正常に起動しないようです(*´д⊂)

不良ディスクは幸いまだ生きていたので、それを繋げばデータは読み出せますが、IDEなのでそのままHotswapという訳にもいかず、最悪再構築覚悟ということでとりあえずデータのバックアップ。

で、バックアップが終わったので、いろいろ調べて以下のような手順で作業してみました。

  1. /etc/raidtabにて不良ディスクの「raid-disk 0」になっているところを「failed-disk 0」にして、1台目が故障ディスクであることを明示する
    raiddev /dev/md0
            raid-level      5
            nr-raid-disks   3
            persistent-superblock   1
            chunk-size      32
            device          /dev/hdb
    #        raid-disk       0
            failed-disk       0
            device          /dev/hdc
            raid-disk       1
            device          /dev/hdd
            raid-disk       2
    
  2. マシンを不良ディスクを交換→再起動
  3. 起動時に止まるのでrootのパスワード入れてRAIDの復旧モードに入る
  4. 次のコマンドを入れてRAIDを強制認識させる
    mkraid --really-force --dangerous-no-resync /dev/mdX
  5. メッセージと次のコマンドで1台目が正常に不良ディスクとして認識された事を確認する
    cat /proc/mdstat
  6. 上記コマンドでRAIDがstartされていることが確認出来たら、適当なところにマウントを行い、データが見えることを確認する
    mount -o ro /dev/mdX /mnt cd /mnt du -sh
    以上をrootで実行して「Permission denied」と言われず、容量も合っていればおそらく成功
  7. 次に新しいディスクをRAIDに組み込む
    raidhotadd /dev/mdX /dev/hdX
  8. 「cat /proc/mdstat」で随時確認しながら同期が完了するのを待つ
  9. 同期が完了したら再び「du -sh」などで同じように表示されるか確認する
  10. /etc/raidtabで編集したところを元に戻す。(「failed-disk 0」になっているところを「raid-disk 0」へ)
  11. 再起動
以上の手順で何とか無事復旧出来ました。

これのミソは「dangerous-no-resync 」で、mkraidにこのオプションを付けると同期を一切行わず1台目を交換後ディスクをわざと不良ディスクとしたまま無理矢理RAID5としてスタートさせることが出来ます。
そしてこの後に交換後のディスクをraidhotaddでRAIDに追加することで、正常なディスクのデータを元に交換後のディスクの内容が同期され復旧するという訳です。

まぁ、最近のディストリじゃこんな事しなくでもいけるのかもしれませんし、結構危険な手段なので、上記の手順はどうしても困ったときにのみお試しください( ̄▽ ̄)ノ

Posted by Takuchan at 2004年09月17日 13:51 | トラックバック(0)

NASのRAID5が崩壊し、復旧の参考にブログを読ませていただきました。
今現在、KNOPPIXを立ち上げて復旧を試みようと思っています。
物理的には故障していないのですが、RAID崩壊したデータを救出することは可能ですか?

Posted by: Yotin at 2008年10月10日 14:52

NASなら購入したところに問い合わせるのが一番じゃないでしょうか?

また、もし大事なデータなら下手に弄らないでプロの手に任せるべきです。

と言うか、RAIDの復旧は慣れてないとまず壊すので、勉強目的でなければプロに任せるかあきらめるのがよいですよ。

Posted by: Takuchan at 2008年10月10日 21:29