概要

姿あるものは必ず壊れるように、ディスクは壊れます。「バックアップを取りましょうね」とはよく言われることですが、今時のディスクなんてバックアップは不可能と言っても良いでしょう。そして「壊れた」と持ち込まれるディスクは、たいていが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を正しく作る方法はありませんので、結果をどう運ぶかについて考えておく必要があります。

 
MODx Content Manager »

« MODx Parse Error »

MODx encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
 
PHP error debug
  Error: Cannot modify header information - headers already sent by (output started at /home3/ogochan/public_html/manager/includes/document.parser.class.inc.php:466) 
  Error type/ Nr.: Warning - 2 
  File: /home3/ogochan/public_html/manager/includes/document.parser.class.inc.php 
  Line: 430 
  Line 430 source: header($header);  
 
Parser timing
  MySQL: 0.0722 s s(13 Requests)
  PHP: 0.3037 s s 
  Total: 0.3759 s s