1:友人がレグザで使っていたディスクが壊たので持って来た

Date 2011-7-5 2:59:57 | Topic: レグザのディスクが壊れた

BUFFALOのUSBの2テラのディスクで、linuxにつなげると認識しない。
/dev以下を見ると、それまで無かった、sddとsdd1があるので、これがこのデスクの筈。
# mount /dev/sdd1 /test1
でマウントしてみるが、ファイルタイプを指定しろ、と怒られる。
# fdisk /dev/sdd
としてパーティションを見ると、EFI GPTになっている。BIOSでなくEFI??
レグザ ディスクでググると色々ヒットし、調べるとレグザはファイルシステムとしてXFSを使っているという。centosはXFSをdefaultではサポートしていないので
yum から xmod-xfs,xfsprogs,xfsdumpをインストールし再起動
http://www.4682.info/repairと言うWEBを見つけ、その様にやるが
# xfs_repair -Lv /dev/sdd1
の所で、
Phase 1 - find and verify superblock...
superblock read failed, offset 406337564672, size 2048, ag 13, rval -1

となり復旧出来ない。
もうー、頭に来たぞ!意地でも直してやると憤ったのですが....
色々調べると、mountオプションに norecovery があるのを発見、
# mount -t xfs /dev/sdd1 /test1 -o ro,norecovery
でマウントするとエラーが出ない。
# ls -la
とするとたくさんのファイルが見えた。
友人が持ってきた新しいUSBディスクを付ける。これは問題無く自動でマウントされたが、私は自動マウントだとマウントの指定が長くなるので、アンマウントし、
# mount /dev/sde1 /test2
とし、/test2にマウントした。
又、色々ググって
http://docs.cray.com/books/S-2377-22/html-S-2377-22/fixed6bhdyq9i26.htmlというWEBを見つけ、早速試す。このWEBの7.7.3によるとxfs_dumpとxfs_restoreを使えとあるので、
# xfsdump -J - /test1 | xfsrestore -J -p 60 - /test2 → -p 60は60秒毎に経過を表示するオプション。
とコマンドを打ったが、
4時間ぐらい立っても 1.8% recoverから進まない。別ウィンドウから
# ls -la /test2
と/test2 の中を見ても全然コピーしている様子は無いし、ファイル数も増えていないので ctrl+c で強制リセット
うーむ、困った。WEBにはパス1でエラーが出たら、バックアップからコピーをしろと書いてある。普通レグザで記録する人はバックアップなんかしていないと思う。私の場合はパス1でエラーが出ている。
少なくとも上記の方法でマウントしファイルが見えているので、方法がある筈。
linuxに標準のext3というファイルシステムだと、バックアップされているsuperblockを使って復旧する方法があるのですが、どう調べてもXFSでバックアップされているsuperblockの復修方法が判らない。
どうも xfs_repair がそうだと思うのですが、オプションの中にそれらしき物は試した -Lv しかありそうに無い。
ダメ元で
# cd /test1 → カレントディレクトリーを移し、
# cp -pr ./ /test2 -pr は パーミッションやタイムスタンプを保持したままコピーし、ディレクトリを再帰的にコピーする(つまり、サブディレクトリーがあったらその下もコピーする)
とコピーが始まった。但しものすごく遅い、1時間に5GB弱位しかコピーしていない。それでも出来ないよりましと、コピーを続けるが、1日たっても115GB 遅すぎる。そう言えばコマンドからでなくファイルブラウザから(windowでいう所のエクスプローラ−−インターネット・エクスプローラじゃないよ−−)/test2を見た時ものすごく時間がかかったのだ。5分間位ディスクのアクセスランプが点滅した後、点滅が止まるとやっとファイル達が見えた!!
多分superblockが壊れているのが原因で時間がかかると思う。仕方ないか
コピーをしながらググっていると mount に nobarrier と言うオプションがあるのを発見、マニュアルには無いぞー(man mount)
ダメ元で試して見よう。
コピーを強制終了(コピーが動いているウィンドウの上にマウスを持っていきで ctrl+c)
# cd → カレントディレクトリがtest1だとアンマウントできないので
# umount /test1
# umount /test2

強制終了したのでコピーされる側(新しいディスク)はおかしくなっているので
# xfs_repair -Lv /dev/sde1
(この時、USBでは速度が遅くなることも考え両方のディスクを裸にし、SATAで直接コンピュータに接続した。もちろん電源を落とし、接続後起動**ここでBUFFALOに一言:ハードディスクのケースの下側の爪が弱すぎる。型番はケースにHD-CL2.0TU2/NとHD−CB2.0TU2/WHとある。2個の爪2台とも壊れた。プラリペアで修理)
再度nobarrierを使ってマウントする
# mount -t xfs /dev/sdd1 /test1 -o ro,norecovery,nobarrier
# mount /dev/sde1 /test2 -o nobarrier

コピー途中にエラーが出ていたので、そのファイル2個(更新日時がコピーした日になっている筈)と最後にコピーされたファイル(終っていない)を消去する。
コピーする
# cd /test1
# cp -p -u * /test2
→ -u は同じか新しい物があるとコピーをしない(つまり以前のコピーの続きからコピーをする)-rが無いのはサブディレクトリーはコピーが終っていたから。
するとコピーの速度は1時間で10GB強位になった。しめしめ。まだ遅いが仕方ない。友人のディスクは半分くらい使っていたのであと3日位かる。
現在はコピーの途中なので、コピーが終わり、テスト後、報告します。


This article comes from 錦稜会 KINRYOKAI
https://www.kinryokai.net

The URL for this story is:
https://www.kinryokai.net/article.php?storyid=79