概要
姿あるものは必ず壊れるように、ディスクは壊れます。「バックアップを取りましょうね」とはよく言われることですが、今時のディスクなんてバックアップは不可能と言っても良いでしょう。そして「壊れた」と持ち込まれるディスクは、たいていがWindowsのものです。「Windowsなんて知らんがな」と思うのですが、ディスクが壊れることに不用心で、復旧方法を知らないとなると、やっぱり素人が多いWindowsであることはしょうがありません。
ディスクの壊れ方もいろいろですが、特におかしなことをしてない場合は、経年変化でbad blockが増えて... というのが普通です。しかし、そんな時に使える復旧ツールはなかなかありません。壊れた場所によってはmount自体が出来なかったりします。
ということで、持ち込まれたWindows(NTFS)の復旧方法について説明します。
Scrounge NTFSについて
NTFSは仕様が複雑なのか、あまりフリーなソフトで操作するものがありません。今回はその中で、Scrounge NTFSというのを使うことにしました。
このソフトが「決定版のお勧め」というわけではありませんが、入れるのは簡単に出来ましたし、ちゃんと復旧できました。
インストール
Scrounge NTFSのページ に行き、 ソースを取って来ます。Linuxのことは何も書いてありませんが、普通の 手順、つまり
./configure make sudo make install
で入ります。
使い方
使うには特に設定もなく、scrounge-ntfsを起動してやるだけなのですが、通常のプログラムにありがちな-?でヘルプを出したりはしてくれません。そのくせ、自動判別の類も一切ありませんので、処理に必要なパラメータは自分でコマンドラインで正確に指定しなければなりません。
ということで、まずしなければならないことは manを見ることです。
その次にすることは、「ディスクの情報を得る」ことです。そのためには、
# scrounge-ntfs -l /dev/hdd
のようにしてやります(/dev/hddが問題のディスク)。そうすると、
Start Sector End Sector Cluster Size MFT Offset
==================================================================
Drive: /dev/hdd
63 78124032 8 6291456
78124095 1959930
80084088 89851482
89851608 93755277
のようにディスク情報が表示されます。ちなみに、このディスクをfdiskで見ると、
Disk /dev/hdd: 82.3 GB, 82348277760 bytes 255 heads, 63 sectors/track, 10011 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス Boot Start End Blocks Id System /dev/hdd1 1 4863 39062016 7 HPFS/NTFS /dev/hdd2 4864 4985 979965 82 Linux swap / Solaris /dev/hdd3 4986 10011 40371345 5 拡張領域 /dev/hdd5 4986 5593 4883728+ 83 Linux /dev/hdd6 5594 5836 1951866 83 Linux /dev/hdd7 5837 10011 33535656 83 Linux
のようになっています。ここで復活させるべきパーティションは/dev/hdd1だ ということがわかります。それ自体にはあまり意味はありませんが。
これを見ると、問題のパーティションを復活させるには、
# scrounge-ntfs -m 6291456 -c 8 -o foo /dev/hdd 63 78124032
のように入れてやれば良いことがわかります。読み込んだ結果はfooに格納されます。このディレクトリはあらかじめmkdirしておく必要がありま す。
処理の様子
scrounge-ntfsを起動すると、領域のスキャン等が行われてから(メッセージが出る)、ファイルの読み取りを行います。この実行例だと、/dev/hdd1にあるNTFSはfooにコピーされます。
scrounge-ntfsの処理自体はそう遅いものではありませんが、ディスク領域全体の複製を作りますから、それなりに時間がかかります。加えて、物理的にブロックが破壊されているディスクの復旧であることが多いので、その領域を読み込もうとして時間がかかります。なので、それなりの用意をしてから作業を開始するのが良いでしょう。
幸いなことに、scrounge-ntfsはメモリもCPUもほとんど食いませんので、裏で他の作業を行うことは何の問題もありません。
また当たり前のことですが、この作業をLinux上でやった場合(scrounge-ntfsはWindows上でも動くようです)、結果のコピーはLinuxの上に作られます。現在のところ(2006年1月)、Linux上でNTFSを正しく作る方法はありませんので、結果をどう運ぶかについて考えておく必要があります。