不良ディスク
仕事で使用している PC の HDD に不良セクタができたので、あいんさんに教えてもらった対処方法のメモです。
現象
- Windows XP Professional
- cmd.exe から del hoge.cpp をしても消すことができず、「ファイルが壊れているので chkdsk してください」と言われる。
バックアップ
素直に chkdsk すると被害が拡大することもあるので、まずはバックアップを取る。
- 新しい HDD を PC に接続する。
- 不良セクタのできた HDD よりも大きい容量のものを用意する。
- KNOPPIX を利用して CD から Linux を起動する。
- dmesg などを使ってどの HDD が /dev/hd? に接続されているかを調査する。
- mount コマンドで対象となる HDD がマウントされていないかどうかを調査し、マウントされているならアンマウントする。
- dd を使ってバックアップする。
- if と of を間違えるとデータが消えてしまうので気をつけなければならない(これは何か安全策がほしい)
- NTFS のクラスタサイズが 4kb なので bs に 4096 を設定しておく。エラーが発生した場合このサイズ単位でスキップされることになる。(今回は間違えて 8192 を指定してしまいましたが…)
- エラーが発生した時に、発生箇所は 0 に置き換えて出力するために conv=noerror,sync を付ける。(今回は間違えて sync を付け忘れましたが、幸いエラーが発生していませんでした)
# dd if=/dev/hda of=/dev/hdb conv=noerror,sync bs=4096