復旧作業
自宅サーバがどうにも不安定で,フリーズ後に再起動するとfsckで毎回固まっちゃう.
そのたびに,RAIDのつなぎ先を変えたり,別の起動ドライブから起動してみたり.で,ついうっかりRAID(ミラーリング)の片割れを読めなくしてしまった.
これはやばいってことで,期限切れ間近のツクモのポイントを使って160GBのHDDを\300ぐらいで調達.安くなったねぇ(ちょっと違う).
とりあえず,生きてるほうのHDDの中身を救出すべく,
# dd if=/dev/hdc(コピー元) of=/dev/hdb1(コピー先)
とか,普段使ったこともないような原始的なコマンドをつかてみた.
でも,そもそもマシン自体が不安定なので,コピー中にハングアップしてしまう.仕方ないので,クローゼットの中に眠ってたEPIA-C800を引っ張り出して,マザーボード・CPU・メモリを総入れ替えしてバックアップ開始.今度はうまく行った.ってことはやっぱり,マザーボード・CPU・メモリのどれかが逝っちゃってるんだな.orz
というわけで,とりあえず読み取れる内容を新しいHDDにバックアップしておき,壊しちゃったほうのHDDに流し込んで,そのHDDで試行錯誤することにした.
…ちょっと時間がたっちゃって(現在11/4)よく覚えてないので,とりあえずうまく行った手順を書き残しておく.つもり.
どうやらext3(ext2も?)ってファイルシステムは,スーパーブロックと呼ばれる管理領域のバックアップを持ってるらしく,fsckやmountなどのコマンドでバックアップ側のスーパーブロックを指定することができるらしい.
まずはそのスーパーブロックのバックアップが保存されている場所を確認.
# mkfs.ext3 -n /dev/hdc5 … Superblock backups stored on blocks: 32768, 98304, 163840, 2294912, …
次に,バックアップを指定してfsck
# fsck.ext3 -n -b 32768 /dev/hdc5 (とりあえず確認) …(大量にメッセージが出る) # fsck.ext3 -y -b 32768 /dev/hdc5 (実際に実行)
次に,バックアップを指定して(指定しなかったかも)mount
# mount -o sb=32768 -o ro /dev/hdc5 /mnt
これでファイルシステムとして読み出せるようになったので,今のうちに全ファイルをバックアップ.
当分の間はEPIA-C800でしのぐことにして,見かけ上,以前と同じようなディスク構成になるようにして復旧.
メモリはもともと使ってたやつに入れ替えてみたけど,問題なく動いている模様.休眠中のマザーボードを見てみたら,コンデンサが1個膨張してる.これが不安定の原因かな.交換したら直るのかなぁ.CPU (Celeron 1.4GHz)は相棒さんからのプレゼントなので,手放したくないんだよなぁ.