もうタイトルの通りです。
この前処理した古いPCとCRTモニタに加えて、ブラウン管TVまで処分しました。
やっとすっきりした!と思ったとたんに、ファイルサーバのディスクが
CRCエラー多発。
読み込みがおかしいなぁと思っていたらログにエラーがいっぱいです。
この外付けHDD(HD-CB2.0TU2)は、もう何年目だろうか、良く持ったといっていいでしょう。
が、あまり故障に縁がないのでバックアップなんて殆ど取っていない。
というか、 このHDDがバックアップ用途も兼ねてた・・・orz
とりあえず、 大事なデータの救出と思って、NUCから外して、Windowsマシンへ繋ぎ替え。
そのままデータをコピー・・・と普通にしていったのですが、当然エラーで止まる。そして遅い。
これはツールを探さないといけないです。
1.FastCopy編
読めないファイルもあるし、速度も大事ということでググると、
FastCopyというのが出てきた。
かなり有名そうで、しかもOSS(素敵!)
まずは使ってみる。
確かに速い、エラーが出ても負けずに継続してくれるので、これは良い。
が、CRCエラー多発状況なのでよく止まったような状況になる。
子供の映像系が多いの、1GBクラスで停止してエラーとなると時間ロスが半端ない。
50GB分ぐらいを仕掛けて1日かかる・・・
とりあえず処理を流しながら、エラースキップが早いものがないか捜索を開始。
2.TeraCopy編
すると、
TeraCopy なるものが見つかった。しかも、どこぞのブログによると
読めなかったファイルも回収してくれたりするらしい。。。これは期待大!
見た目はいいけど、最初はわかりづらいかな。
これも、同じく速い、エラーが出ても負けずに継続できて、頑張ってリードしている様子も見えるし、大きすぎて時間がかかりそうなものをスキップすることできる。FastCopyで取れなかったファイルも一部取得できていたりする。
とりあえずこれで行こうかと思っていたけど、CRCエラーの発生状況はひどく、大事な映像データがエラーで回収できないていない。それも、TeraCopyで、80%ぐらい進んだ状況でエラースキップとか出るので泣けてくる。
これはいよいよHDD復旧業者への依頼かな、と、なんて考えない。
TeraCopyの様子からすると、読めてる部分が多く、少しのCRCエラーでこけてる感じがする。ということは、一部分でも回収ができるはず。
CRCエラーが出ていても、ファイルとして形があればエラー部分が欠けてもファイルとして読めるはずってこと。映像や画像が多少欠けていても
ゼロよりはまし。
ということで、
次は、CRCエラーが出ても、そのファイルを強引にコピーするソフトを探し回る。
3.fcopy編
CRCエラーが出てもコピーするというのを探すが、ヒット率が悪い。HDD復旧業者ばかりだw
まぁそんな中で出てきたのが、CD Recover と
fcopy
CD Recoverは、取得元がわからなかった。
fcopyは、こちらの要求そのまんまの素敵な内容でソースも公開されていた。
fcopyを使ってみる。コマンドプロンプトで実行なんて久しぶりです。
これは使えます。時間はかかるけどエラー部分をNULLにしてファイルとして回復してくる。
が、ファイル単位での指定なのが大変。
しかも、それなりの時間がかかる。
試しに回収できたファイルを再生させるとノイズが発生してます。子供に何で?と聞かれて、壊れかけているの、ゴメンね、と謝っておきました。
さて、これで何とかと思っていましたが、
3つぐらい1GB クラスのファイルを復旧させるのに時間がかかりすぎて待ち疲れてしまった。
しかも、その待っている最中に、HDD復旧業者のサイトとか読んでいたら、
CRCエラー多発のHDDを無理やり動かしているとエラーが拡大してしまうので、早めに全体を取得した方が良い、とか書いてある。
これは、TeraCopyで全体コピーして、エラー結果を使ってfcopyするか、FastCopyにfcopyの機能を追加して、一気読みとサルベージができるように改造かなと思ったけど、作れる気がしないし面倒くさいw
なんかこう、一気にできないものかと・・・・(´・ω・`)
4.思い出はプライスレス
そういえば HDD障害の復旧といえばLinuxでCDブートして復旧というパターンが良くあるのを思い出す。このパターンって、PCが起動しないときとかって思い込んでいたけど、HDD丸ごと復旧させるんだから同じだろ、って、探していると、ddrescueってのが引っかかる。
dd_rescueってのもあるらしいけど、ほとんど一緒?とりあえず
ここ読む。
違うらしい。GNU謹製の方がいいかなって感じw
これらはディスクダンプして救うタイプ。ダンプ用のHDDが必要。
故障しているHDDは1TBで、WindowsPCには2TBのHDDがあって1,5TBは余裕はある。でも、ddrescueってLinuxよね。ファイルサーバのNUC5PPYHに、内蔵3.5インチのHDDをつけられる余裕はないし、USB外付け用のアダプタも持っていない。
新しく買うか?って、買えばいいのにって思うけど、
すでにこの時点で、新たに外付けでRAIDが組める構成を手配済。到着は明日。それまで待つ?でもせっかくの新規RAIDに変なダンプデータ突っ込むのも悲しい。じゃぁ買う?
いやいや2重投資になるよね、なんて悩みながら家族と会話へ・・・
「HDDの故障で、運動会やら卒業式のデータが半分以上無くなりそう。頑張って回復させているけど時間がかかって大変、もう取れる分だけでいい?あんまり見てないのも多いし・・・」
「できるだけ復旧できないかなぁ・・・悲しいなぁ」
で、いったん終了。我ながら冷たい対応と思いながら一人で思いにふける。
最初からRAIDやバックアップを取っていなかった自分が悪い。
消えたら悲しい映像データをさっきまで必死に回復させてた自分は何?
この期に及んで金の話など、外付けHDD1台ぐらい、思い出の消失に比べたら大した金額ではないでしょ!
思い出はプライスレスだ!
ということで、夜遅くに近くドンキで2TBの外付けHDD SGD-NX020UBK を購入。
ファイルサーバ(NUC5PPYH)に、壊れかけのHDDと新品のHDDを繋げます。
どちらもNTFSだけど、つながるようにしてあるので問題なし。
壊れかけのHDDは、/dev/sdb
新品のHDDは、/dev/sdc
ddrescueは、なぜかyumではインストールできなかったので、rpmで入手
# yum list | grep rescue
ddrescue.x86_64 1.22-1.el7 installed
dracut-config-rescue.x86_64 033-463.el7 installed
dd_rescue.x86_64 1.99-1.el7 epel
libguestfs-rescue.x86_64 1:1.32.7-3.el7.centos.2 updates
こちらのサイトを参考に、下記の通り実行中!
が今の状態。さて、続きは回収が終わってから。
# ddrescue -n -v /dev/sdb /mnt/usbhdsg/usbhdd2.img ddrescue.log
GNU ddrescue 1.22
About to copy 1000 GBytes from '/dev/sdb' to '/mnt/usbhdsg/usbhdd2.img'
Starting positions: infile = 0 B, outfile = 0 B
Copy block size: 128 sectors Initial skip size: 19584 sectors
Sector size: 512 Bytes
ipos: 170441 MB, non-trimmed: 0 B, current rate: 40632 kB/s
opos: 170441 MB, non-scraped: 0 B, average rate: 38070 kB/s
non-tried: 829763 MB, bad-sector: 0 B, error rate: 0 B/s
rescued: 170441 MB, bad areas: 0, run time: 1h 14m 37s
pct rescued: 17.04%, read errors: 0, remaining time: 6h 12m
time since last successful read: 0s
Copying non-tried blocks... Pass 1 (forwards)
プライスレスなら、業者に回復してもらえばいいのに、なんて今頃気づいたw
#2017/4/23 誤字訂正