新年早々Windows PCが動かなくなっていたので復旧作業をした (2009-01-05..01-07)。
使っていると前触れなしに青画面になってしまう。調べたところ、
- Memtest86(Knoppixをboot: memtestで起動)で1周しても異常なし
- Windows標準のディスクユーティリティで確認しても異常なし
- メーカーのツール(Samsungのhutil)で調べたら不具合発見
というわけで、HDD(とおそらくマザーボード)が故障したらしい。
同じ型のPCと同じ容量のHDDを手配してすげ替えたら動いた。 今回はHDDが低水準なところで壊れたらしく、いつもお世話になってる partimageが異常終了してしまうのでddを使った。以下手順。
- Knoppixで起動。
- 適当なストレージをマウント(今回は手近なSambaサーバ)。
- sfdiskでパーティション情報をストレージに保存。
-
ddでディスク内容を読み出してストレージに保存。
- conv=sync,noerrorを忘れないこと。これは読めない箇所があっても 停止せずに、かつオフセットを維持して記録するため。
- bsは大きめ。本当は4096とかのほうが安全だと思う。
- ネットワークがボトルネックだったので、高速な圧縮ツールlzopで 圧縮してからネットワークを通すように。
- 電源を落としてHDD等を交換。
- Knoppixで起動。
- さっきのストレージをマウント。
- sfdiskでパーティション情報をHDDに書き込む。
- ddでディスク内容をHDDに書き込む。
- いったん終了して、HDDから起動できるか確認。
例:
boot: memtest
boot: knoppix noswap
$ sudo smbmount //sambaserver/jdoe /mnt -o user=jdoe
$ sudo sfdisk -d /dev/sda > /mnt/sda.sfdisk
$ time sudo dd if=/dev/sda conv=sync,noerror bs=65536 | \
lzop -c > /mnt/sda.dd.lz
dd: reading `/dev/sda': Input/output error
974459+1 records in
974460+0 records out
63862210560 bytes (64 GB) copied, 4894.94 s, 13.0 MB/s
dd: reading `/dev/sda': Input/output error
1271253+2 records in
1271255+0 records out
83312967680 bytes (83 GB) copied, 6063.52 s, 13.7 MB/s
2442043+3 records in
2442046+0 records out
160041926656 bytes (160 GB) copied, 10842.2 s, 14.8 MB/s
real 180m42.348s
user 48m3.745s
sys 26m42.006s
$
$ sudo shutdown now
(change hdd)
$ sudo smbmount //sambaserver/jdoe /mnt -o user=jdoe
$ sudo sfdisk /dev/sda < /mnt/sda.sfdisk
$ lzop -d /mnt/sda.dd.lz | sudo dd of=/dev/sda conv=sync,noerror bs=65536
$ sudo shutdown -r now
教訓:
- PCはいつか壊れる。当たり前ながら、日々のバックアップが必須。
- リストアしやすい方法を選ぶことが大事。ミラーのような形で常にもう1台にリ ストアされている状態が理想かもしれない。
- プログラムはある程度仕方ないけれど、データだけでも集中管理したほうが楽。
- そろそろPOPもIMAP経由で読み書きするようにしよう。
Other Articles
- 13 Oct 2017: 『テスト駆動開発』
- 19 Oct 2016: 『新装版 達人プログラマー 職人から名匠への道』
- 19 Aug 2016: 『プログラミングElixir』
- 20 Oct 2015: Migrating from git-media to git-lfs
- 04 Oct 2015: Git Large File Storageクライアントのインストール
- 12 Aug 2015: isbn.rb
- 22 Apr 2015: 「なるのか、なすのか?」(To Be Or To Do?)