メモ/LAN/外向サーバ

宅内サーバのHDDのサルベージ


目的

  • ほぼお亡くなりになった宅内サーバのHDDのデータサルベージ
  • 同時に、宅内サーバの仮復旧

状態について

バックアップを試みた後は?

方針の変更

  • 既にHDDが死にかけで、mountすること自体危険
  • サーバのダウンタイムを減らすのは諦めた
  • サーバをしばらく停止して運用する
    • できれば宅内サーバを仮復旧したい
    • ただし状況が許せば

やったこと

  • サーバがダウンする間のメールをどうにかする
    • iDCに置いてあるサーバ(以下iDCサーバ)にsecondary MXを振る
      • メモ/NET/サーバ/Postfix?
  • DNSの代行
    • 宅内サーバで動かしてたDNS serverは全てiDCサーバがslave DNS serverなので、expireを長くする
      • 14 daysに変更
      • さすがに2週間落ちっぱなしはないだろう

作業方針

  • サルベージなので、新しくOSをセットアップする
  • MXが向いてるサーバなので、メールロストだけはしないようにする
    • 既にsecondary MXを立てて受取り中
  • できるだけデータを吸い出す

サーバ復旧

  • とりあえずtemporarilyにOSを新しいディスクにセットアップ
  • ややこしいことになるので、まだ各種サーバは立てない
    • ある程度サルベージできたらその設定も使いたいし
    • ダウンタイム増えるけど、ここまで来たら仕方ない

準備作業

  • HDDを買ってくる
    • 元が8.4Gだし、そんなにデータ溜め込まないので40G
    • 買ってきたのはSEAGATE Barracuda 7200.7 40GB ST340014A
      • このついでに、マシンと一緒にもらってたRAIDカードを利用するつもり
      • というわけで、全部でST340014A(40G)を3本買ってきた

データサルベージ

ddで吸い出し1 (壊れたIDE HDD)

  • ddを使って、イメージにして吸い出す。
    • /home/BACKUP/broken とか作ってそこに出す。
      • 始めたのは2004/11/26 16:15前後。
# dd if=/dev/hdb of=hdb.img bs=512 count=16514064 conv=sync,noerror > dd-hdb.log 2>&1
  • LBAsect 336〜343 10754680〜10754695 14209536〜 が壊れてる模様。
    • まだ終わらないので14209536からどこまで壊れてるのか不明。
    • 今のところ14210966までエラーが出続けている。1430sector(732160bytes)分。-- 2004-11-27 (土) 05:11:25
    • 14211810までエラー。2274sector(1164288bytes)分。-- 2004-11-27 (土) 12:02:09
    • 14211887までエラー。2351sector(1203712bytes)分。大体1分あたり2sectorくらい。先は長い。-- 2004-11-27 (土) 12:36:32
    • 14214907までエラー。5371sector(2749952bytes)分。-- 2004-11-28 (日) 13:24:03
    • 14217346までエラー。7810sector(3998720bytes)分。もしかしてケツまで駄目なのか? -- 2004-11-29 (月) 09:16:03
    • 14217587までエラー。8051sector(4122112bytes)分。-- 2004-11-29 (月) 11:16:30
    • 14218536までエラー。ついに9000sector(4608000bytes)分。どこまで続くのか。-- 2004-11-29 (月) 19:06:21
    • 14220924までエラー。11388sector(5830656bytes)分。-- 2004-11-30 (火) 14:35:55
    • 14222650までエラー。13114sector(6714368bytes)分。-- 2004-12-01 (水) 04:49:36
  • 結局諦めた。一度寝かせてから再度ddを試みるつもり。
Nov 26 12:45:29 tetsu kernel: hdb: irq timeout: status=0xd0 { Busy }
Nov 26 12:45:29 tetsu kernel: end_request: I/O error, dev 03:40 (hdb), sector 14210072
Nov 26 12:45:34 tetsu kernel: hdb: status timeout: status=0xd0 { Busy }
Nov 26 12:45:34 tetsu kernel: hdb: drive not ready for command
Nov 26 12:45:35 tetsu kernel: ide0: reset: success
  • こんなんがずーっと出てるというわけ。

ddで吸い出し2(壊れたSCSI HDD1)

  • 2.1GBのディスク。
    • /varに割り当ててた。
  • 微妙にハードウェアエラーが出るので使うのをやめてバックアップ。
    • とりあえずafioで吸い出し。
# mount -o ro /dev/sda1 /mnt/sda
# cd /mnt/sda
# find . | afio -ovZ -L /home/BACKUP/sda1backup041207.log /home/BACKUP/sda1backup041207.afz 2>&1 | tee /home/BACKUP/sda1backup041207.lis
# umount /dev/sda1
  • ddでも吸い出し。
    • 4226725 hdwr sectorらしい。
      • 4226725×512=2164083200なので計算は合っている。
# dd if=/dev/sda of=sda.img bs=512 count=4226725 conv=sync,noerror > dd-sda.log 2>&1
  • 開始。-- 2004-12-07 (火) 14:57:33
  • 終了。-- 2004-12-07 (火) 15:30:52
4226724+0 records in
4226724+0 records out
  • ログに残ったのはこれだけ。問題なかったのかな?

ddで吸い出し3 (壊れたIDE HDD)

  • 前に失敗した経験を生かしてretry。
  • 吸い出す時はパーティションごとに吸い出す。
    • loopデバイスでmountするとき、ディスク丸ごとだとmountできない。

パーティションの調査

  • パーティションのblock数なんて覚えてない。
    • cfdiskで調査。
パーティションかつてのマウントポイント容量(MB)セクタ数
hde1/3002.235863725
hde3/home5149.0310056690
hde2swap296.12578340
  • 順番はcfdiskで表示された順
    • swapを先にケツに取って、後からhome作ったんだったかなあ。記憶にない。

吸い出し

  • 最優先なのは/homeのデータなのでhde3から。
# dd if=/dev/hde3 of=ide8p3.img bs=512 count=10056690 conv=sync,noerror > dd-ide8p3.log 2>&1
  • 最初間違ってcountを1005669にして一瞬で終わってびっくりした。
  • 開始 -- 2004-12-17 (金) 03:11
    • sector 4890832〜4890967 でerror。-- 2004-12-17 (金) 03:31:32
    • RAIDカード経由でmountしていた160GのHDDに吸い出していたが、HDDエラーでそっちのI/Fまでresetされてしまい、中断。
    • M/BのIDE I/Fに繋がっている/homeにディレクトリを作ってそこに吸い出すことにする。
  • 開始 -- 2004-12-17 (金) 04:07:30
    • sector 4890832〜4890967 でerror。-- 2004-12-17 (金) 04:30:24
      • 頭からだと 10754557〜10754692かな? -- 2004-12-17 (金) 04:30:24
    • sector 8345688〜10056690 でerror。2004-12-17 (金) 15:25:00
      • 4.2GB? ほとんど全部じゃん…。
  • 終了 -- 2004-12-17 (金) 07:22
  • 諦めずに再度トライ -- 2004-12-17 (金) 15:17
    • LBAsector 10754691〜 error。-- 2004-12-17 (金) 15:29:18

吸い出したimageをmountしてfsck

IDE8G home篇

  • パーティションごとに吸い出したHDDイメージをとりあえずmountしてみる。
    • 作業はとりあえずコピーしてから(イメージ破壊を防ぐため)
# cp ide8p3.img ide8p3.cp.img
# mount -t ext2 -o loop ide8p3.cp.img /mnt/ide8g3
# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda1             19534372    401468  19132904   3% /
tmpfs                    63576         0     63576   0% /dev/shm
/dev/hdc1             29293564     32840  29260724   1% /home
/dev/hdc5              9783248    101540   9681708   2% /var
/dev/hdg1            153834852  73978660  72041776  51% /mnt/ide160g1
/mnt/ide160g1/BACKUP/broken0412/ide8p3-2.cp.img
                       4949344   3802552    895376  81% /mnt/ide8g3
  • むむむむ、なんかmountできてるぞ。
  • 中を覗いてみる。
# cd /mnt/ide8g3
# ls
  • なんと一通り揃ってる!
    • 全部のデータが無事かはわからないが…。
    • 多分無事なのは2GB分くらいのはず。*1
      • それでも失われたのは2G弱で済むかも。
  • 余計なfsckとかせずに、とりあえずバックアップ。
# find . | afio -ovZ -L /mnt/ide160g1/BACKUP/rescue/homebackup041219.log /mnt/ide160g1/BACKUP/rescue/homebackup041219.afz 2>&1 | \ 
tee /mnt/ide160g1/BACKUP/rescue/homebackup041219.lis

リンク集

ソフトウェア

Debian

その他


失敗したもののログ。

吸い出したimageをmount

IDE8G篇

  • 吸い出したimageはNFSでWin2kに一度転送したのでそれをローカルにコピー
# mount -o rw,hard,sync,intr utsu:/NFS /mnt/utsu
# cp /mnt/utsu/* /home/BACKUP/recover/.
  • これをコピーして(破壊を防ぐため)、mount
# cp hdb.img hdb.cp.img
# mkdir /mnt/ide8g
# mount hdb.cp.img /mnt/ide8g -t ext2 -o ro,loop=/dev/loop1,blocksize=1024 
  • …とするつもりだったが、うまいことmountできない。
    • ケツまでやってないからだろうか。
mount: wrong fs type, bad option, bad superblock on /dev/loop1,
      or too many mounted file systems
      (could this be the IDE device where you in fact use
      ide-scsi so that sr0 or sda or so is needed?)
  • 考えてみたら複数パーティションが1つのイメージになってるのでmountできるわけがない。
  • FreeBSDならmdconfigで仮想ディスクとして設定できるようなのだが…。

mountについてのコメント

  • 吸い出しが終わらないのでまだ。
    • 上の状況からして、ケツまでだとすると1週間くらい掛かりそうだが…。-- 2004-11-29 (月) 11:16:30
      • 諦めるべきなのか? まあもう数日動かしてみよう。-- 2004-11-29 (月) 11:16:30
      • もう放置するしかないか…。
      • このまま1、2日変わらないなら、とりあえずddで吸い出しながら仮復旧させるしかないかな。-- 2004-12-01 (水) 04:49:36

コメント

最新の10件を表示しています。 コメントページを参照

  • COupqKvvlHp? -- zmcjpuotv? 2008-02-18 13:36:57 (月)
お名前:

*1 ddのlogから推測

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2004-12-19 (日) 07:05:53 (4484d)