« FreeBSDでRAID3 復旧編 | トップページ | ブロードバンドルータとしてのCisco 2621 »

2006年8月11日 (金)

壊れたHDDからデータ救出 (FreeBSD)

ディスククラッシュした反省から、ファイルサーバのHDDをRAID構成にして、そのメモを書き連ねてきた。でも、クラッシュしたHDDからのデータ救出についても忘れないようにメモしておこう。

HDDの調子が悪くなったのは、運悪く1週間の出張に出た日のことであったようだ(/var/log/messagesに残っていたメッセージによる)。それから数日は、HDDアクセスのリトライを繰り返しながらも何とか生き延びていたらしい。しかし、出張に出ていた私はそんなことはつゆ知らず、1週間後に帰ってきたときには、お亡くなりになってしまっていた。

家に戻って事態を知った私は、大あわてでデータ救出に取りかかった…のだが、代わりのHDDが無い。結局その日は何もできず、次の日に新しいHDDを2台購入してから作業に入った。作業用の領域も考えて、2倍以上の容量を持ったHDDが欲しかったのだが、壊れたHDDが300GBだったので、これ以上の容量のを買うのも難しく、結局300GBのを2台買ってきた。

壊れたHDDはad4、新しく買ってきたHDDはad6, ad7である。

とりあえず、現状より状況が悪化するのを防ぐため、壊れたHDDを丸々コピーする。

# dd if=/dev/ad4 of=/dev/ad6 bs=512 conv=sync,noerror
dd: /dev/ad4: Input/output error
287+0 records in
287+0 records out
146944 bytes transferred in 1.999582 secs (73487 bytes/sec)
dd: /dev/ad4: Input/output error
dd: /dev/ad4: Input/output error
288+0 records in
288+0 records out
147456 bytes transferred in 3.441004 secs (42853 bytes/sec)
dd: /dev/ad4: Input/output error
…(こんなのが延々と続く)…

読み取りエラーが発生しても、無視して続きをコピーして欲しいため、conv=sync,noerrorを付けるのが重要。bsも、HDDのセクタサイズと同じにして、読み取りエラーの影響を小さくする。参考にしたサイトの情報によると、countを指定しないとまずい、ということであったが、別に付けなくても問題なかった。

さて、これでオリジナルのコピーができた。でも、こいつは作業の失敗に備えて温存しておく。そのため、さらに作業用HDD (ad7) にコピーする。

# dd if=/dev/ad6 of=/dev/ad7 bs=10m

まともなHDD同士だから、bsをでっかくとって速度を稼ぐ。これで、ad7もad4のコピーになったわけだ。

これで何をしても安心なので、とりあえずfsckかけてマウントしてみる。

# fsck -y /dev/ad7s1d
…(いろいろ出るが、とりあえず無視)…
# mount /dev/ad7s1d /mnt

おっ、無事マウントできた。で、どれだけのファイルが残っているかと見ると…ほとんど生き残っている!どうも、壊れたのはテレビ録画データがほとんどのよう。念のため、lost+foundの中(破損したファイルの断片が入る)も確認してみる。バイナリがほとんどだが、一部混ざっているテキストファイルはCのソースファイルだ。でも、よく見ると、クロスコンパイルしようとしていたLinux Zaurusのカーネルソースらしい。

結局、自分の作ったデータは、ほとんどが無事であった。まだ見ていなかったテレビ録画は残念だが、まぁ仕方がないだろう。まだあきらめられる範囲だ。

今回は不幸中の幸いでほとんど被害は無かったものの、HDD障害の恐ろしさが身にしみることとなった。この経験で、RAIDを組もうと決心するのであった。

参考文献:

  1. 不定期性写真日記: 2002/11/07 自宅(1) 「復活の日: FreeBSD ディスククラッシュ事件総括」
  2. 毘: NetBSD: ディスククラッシュ顛末記

|

« FreeBSDでRAID3 復旧編 | トップページ | ブロードバンドルータとしてのCisco 2621 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 壊れたHDDからデータ救出 (FreeBSD):

« FreeBSDでRAID3 復旧編 | トップページ | ブロードバンドルータとしてのCisco 2621 »