smartのエラーが出てしまったので、HDDを交換することにする。
早速、amazonで新しいHDDとSATAケーブルを注文した。
で、HDDが届いたので、エラーが出始めているHDDと交換するためにケースを開けると、SATAの口は開いているけど、電源ケーブルが1本のケーブルに口が2つあるタイプだった。
どう見ても入りそうになかったので、現在は使用していない3.5インチのFDDを外して、代わりに新しいdiskを入れる。
既存のHDDはSATAの1番目に刺さっていたので、後のことを考えて新しいHDDをSATAの1番目に、古いHDDをSATAの2番目に繋いだ。
そして、用意しておいたKNOPPIXのCD-Rで起動することに。boot時に knoppix noswap を指定するようにとの指示を何箇所かで見たんだけど、エラーになっていたので気にせずデフォルトで起動してしまった。(後で、swapon -l とかで見ても何も出なかったので、たぶん問題ないだろう)
ちなみに、knoppixはKNOPPIX Japanese editionからknoppix_v6.4.4CD_20110130-20110301.isoを持ってきた。(ツールの方も、dd_rescueの他にddrescueとかdd_rhelpとかいろいろあるみたいだけど、なんとなくdd_rescueにした)
で、なんかGUIが起動したんだけど、ディスプレイとの相性が悪かったのかまともに表示されなくて使えない。
しょうがないので、Ctrl + Alt + F1を押してコンソールを表示して、そこで作業することにする。
ls /dev/sd* とかやると、/dev/sda と、/dev/sdb そして /dev/sdb1, /dev/sdb2, ... と表示されたので、狙い通り新しいHDDが/dev/sda, 古いHDDが/dev/sdbになったようだ。
後は、dd_rescueの実行。オプションなしで実行すると、ヘルプが出るので、適当に読んだところたぶん-Aオプション(読めなかったら0で埋める)を指定すればいいだろう。
結局、コピー中にはエラーが出なかったので、古いdiskも再度newfsか何かしてやれば使えるんじゃないかと思う。
knoppix上でshutdown -r とすると、CD-Rがイジェクトされて、ENTER押さないと2分で再起動するよとか言われるので、CDを取り出してENTERを押すと、無事に新しいHDDからFreeBSDが起動した。
dmesgを見ると、新しいHDDが/dev/ad4, 古いHDDが/dev/ad6として認識されていた。(以前は、古いHDDが/dev/ad4)
さて、これで古いHDDがmountされない状態で起動するようになったので、ddによる修復を試みて見よう。
b = (int)((L-S)*512/B) を計算すると、13258037になっていたので、まずは該当のブロックを読んでみる。
気を取り直して、smartctlでテストを実行する。
早速、amazonで新しいHDDとSATAケーブルを注文した。
で、HDDが届いたので、エラーが出始めているHDDと交換するためにケースを開けると、SATAの口は開いているけど、電源ケーブルが1本のケーブルに口が2つあるタイプだった。
どう見ても入りそうになかったので、現在は使用していない3.5インチのFDDを外して、代わりに新しいdiskを入れる。
既存のHDDはSATAの1番目に刺さっていたので、後のことを考えて新しいHDDをSATAの1番目に、古いHDDをSATAの2番目に繋いだ。
そして、用意しておいたKNOPPIXのCD-Rで起動することに。boot時に knoppix noswap を指定するようにとの指示を何箇所かで見たんだけど、エラーになっていたので気にせずデフォルトで起動してしまった。(後で、swapon -l とかで見ても何も出なかったので、たぶん問題ないだろう)
ちなみに、knoppixはKNOPPIX Japanese editionからknoppix_v6.4.4CD_20110130-20110301.isoを持ってきた。(ツールの方も、dd_rescueの他にddrescueとかdd_rhelpとかいろいろあるみたいだけど、なんとなくdd_rescueにした)
で、なんかGUIが起動したんだけど、ディスプレイとの相性が悪かったのかまともに表示されなくて使えない。
しょうがないので、Ctrl + Alt + F1を押してコンソールを表示して、そこで作業することにする。
ls /dev/sd* とかやると、/dev/sda と、/dev/sdb そして /dev/sdb1, /dev/sdb2, ... と表示されたので、狙い通り新しいHDDが/dev/sda, 古いHDDが/dev/sdbになったようだ。
後は、dd_rescueの実行。オプションなしで実行すると、ヘルプが出るので、適当に読んだところたぶん-Aオプション(読めなかったら0で埋める)を指定すればいいだろう。
# dd_rescue -A /dev/sdb /dev/sda dd_rescue: (info): ipos: 488386584.0k, opos: 488386584.0k, xfrerd: 488386584.0k errs: 0, errxfer: 0.0k, succxfer: 488386584.0k +curr.rate: 21883kB/s, avg.rate: 39190kB/s, avg.load: 15.9% Summary for /dev/sdb -> /dev/sda: dd_rescue: (info): ipos: 488386584.0k, opos: 488386584.0k, xfrerd: 488386584.0k errs: 0, errxfer: 0.0k, succxfer: 488386584.0k +curr.rate: 601kB/s, avg.rate: 39190kB/s, avg.load: 15.9%500GBのHDDのコピーに、だいたい4時間くらいかかったか。(途中で外出したので、正確な時間はわからない)
結局、コピー中にはエラーが出なかったので、古いdiskも再度newfsか何かしてやれば使えるんじゃないかと思う。
knoppix上でshutdown -r とすると、CD-Rがイジェクトされて、ENTER押さないと2分で再起動するよとか言われるので、CDを取り出してENTERを押すと、無事に新しいHDDからFreeBSDが起動した。
dmesgを見ると、新しいHDDが/dev/ad4, 古いHDDが/dev/ad6として認識されていた。(以前は、古いHDDが/dev/ad4)
さて、これで古いHDDがmountされない状態で起動するようになったので、ddによる修復を試みて見よう。
b = (int)((L-S)*512/B) を計算すると、13258037になっていたので、まずは該当のブロックを読んでみる。
# dd if=/dev/ad6 of=ad6 bs=16384 count=1 skip=13258037 1+0 records in 1+0 records out 16384 bytes transferred in 0.973938 secs (16822 bytes/sec)んで、/dev/zeroを書く代わりにこのデータを書き戻してみる。
# dd if=ad6 of=/dev/ad6 bs=16384 count=1 seek=13258037 1+0 records in 1+0 records out 16384 bytes transferred in 0.000354 secs (46275742 bytes/sec)すると、/var/log/messagesに以下のメッセージが出た。
Aug 5 21:13:41 sv kernel: GEOM: ad6s1: geometry does not match label (255h,63s != 16h,63s).なんか間違ってしまったような気もするけど、今の知識では良くわからない。
気を取り直して、smartctlでテストを実行する。
# smartctl -t long /dev/ad6 smartctl 5.39 2009-12-09 r2995 [FreeBSD 8.2-STABLE i386] (local build) Copyright (C) 2002-9 by Bruce Allen, http://smartmontools.sourceforge.net === START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION === Sending command: "Execute SMART Extended self-test routine immediately in off-line mode". Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful. Testing has begun. Please wait 107 minutes for test to complete. Test will complete after Fri Aug 5 23:04:04 2011 Use smartctl -X to abort test.後は、テストが終わったらログを確認してみよう。
続き と、言うわけで long testが終わったので結果。
# smartctl -l selftest /dev/ad6 smartctl 5.39 2009-12-09 r2995 [FreeBSD 8.2-STABLE i386] (local build) Copyright (C) 2002-9 by Bruce Allen, http://smartmontools.sourceforge.net === START OF READ SMART DATA SECTION === SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed without error 00% 20645 - # 2 Extended offline Completed: read failure 50% 20581 424257192 # 3 Short offline Completed without error 00% 20579 - # 4 Short offline Completed: read failure 20% 20573 424257195#2 でエラーが出ていたのが、今回の手当てをした後の#1ではエラーが出なくなっている。(まあ、#3のshort testでも一度エラーなしで終了したりしているので、微妙といえば微妙だけど)
とりあえず修復できたっぽいので、file system を作りなおして新しいHDDのdump先にでもするかなあ。
カテゴリ
FreeBSDトラックバック(0)
このブログ記事を参照しているブログ一覧: dd_rescueでHDD交換
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/2730
コメントする