2005年08月07日(日) [過去の今日]
#1 HDDクラッシュ
システム用とバックアップ用のディスクが壊れた。こちらは冷却してなかったからしょうがないのだけども、HDDクーラーを買っておいただけにもう少し早く付けておけばという気がしてならない。
とりあえず何とかファイルは読めてるみたいなので、新しいディスクを買ってきて、昔4Gのディスクから80Gのディスクに交換したときと同じように Hard Disk Upgrade Mini How-To を参考にシステムをコピー。今回はCDブートLinuxで作業。巫女ぐにょにhdparmが入ってなかったので、KNOPPIXを使うはめになったが。
ところがどっこい、/optに大量にため込んでた録画した動画ファイル等々もいっしょくたにコピーしてしまったため、12時間くらいcpをぶんまわしてても終る気配もない。そうこうしてるうちにHDDからデータが読みだせなくなって来た。慌ててfsckなんかしてしまったものだから/usrにしてたパーティションは半分くらいふっとんだ。/usr/localが救い出せなかったのは痛いなあ。
/はほぼ問題無しのようだし、せめて/varはなんとか救い出そうと、 FreeBSDディスククラッシュ事件総括 とかを参考に、
# dd if=/dev/hda3 of=var.img ibs=512 obs=65536 conv=noerror,sync
とかやってvar.imgを作る。やはりディスクがおかしいのか2Gあたりまで読んだところでエラー吐いて終了。一応バックアップにvar.img.origを作ってから、var.imgをループバックデバイス経由でread-onlyでマウントしてみると、なんとかファイルは読めるっぴお。fsck /dev/loop0 してファイルシステムを正常化させ、それを新しいディスクにコピーした。
問題は/usrなのだが、ちょうど隣にあったetchが入ってるマシンとlibc6のバージョンが一緒だったので、新しいディスクにchrootしてから
# ssh username@etch 'cd /usr; tar cf -' | (cd /usr; tar xf -)
だったかな? とかやって/usrをコピー。ようやくaptが動作するように。liloを/dev/hdaにインストールして再起動。
このままじゃ/usrが愉快なことになってしまうので、dpkg --get-selections から install されてるパッケージ名のリストを作って、apt-get install --reinstall。が、これじゃうまくいかない。ダウンロードまではできたみたいなので、/var/cache/apt/archivesに移動してdpkg -i *.deb。dpkg --configure -a を幾度も繰り返し、ようやくシステムが正常になった。途中、消えてるパッケージも何個かあったのでdist-upgradeも交えながらの作業。libc6のバージョンが変わってaptが動かなくなったのは参ったが、dpkgやlftpが動いたので何とか切り抜けられた。
んー、このへんきちんとドキュメントにまとめたい気分だな。
あとは/usr/localに置いてあったプログラムを再インストールして完了。実際にはいろいろピンチもあったが、/homeにしてあったRAID1のディスク二つは全然無事だったので、残しておいたファイルたちが救ってくれた。
買物に丸1日かかっちゃったのもあるが、復旧作業になんだかんだと3〜4日かかっちまった。再インストールしたほうが早かったかもしれないが、今回の経験があれば次に似たような状況になったら、再インストールより確実に速く復旧させられるだろう。総合的にはOKかな。
(@079)