TestDiskで失われたパーティションをリカバリする

TestDiskは、MBR(マスターブートレコード)にあるパーティションテーブルが損傷した事が原因で、パーティションを認識できなくなってしまったときのリカバリソフトです。

ハードディスク上に点々と散在する残骸から、パーティションの位置・サイズ・種類などを拾い出す能力は、フリーソフトでありながら、市販のソフトを上回るものを持っています。

また、ブートセクタが壊れてしまったときに、バックアップブートセクタを使って復旧する機能を持っています。

セクタのバックアップ作業は意外と手間がかかり、なおかつ、ある程度の専門知識を必要とするので、このような機能は貴重です。さらに、オリジナル&バックアップの両ブートセクタともに壊れている場合でも、ブートセクタを新規作成する機能があるので、これで窮地を脱せる可能性があります。

このようにすばらしいソフトなのですが、日本ではあまり紹介されていないようなので、解説を載せておこうと思います。

ただし、このソフトの性格上、使い方を誤れば完全にOSが立ち上がらなくなるので、ブートの原理をよく理解したうえでお使い下さい。

TestDiskは、様々なOS上で動くバージョンが、公式ページで配布されています。

Windowsが起動しない場合のリカバリは、起動ディスク型のものを用意しましょう。

実は既に紹介したULTIMATE BOOT CDには、このソフトが含まれています。

また【KNOPPIX】にもLinux版が入っています。

また、アクティブな基本領域は壊れていないが、それ以外の領域のパーティションテーブルの情報が壊れている場合があります。

もっと簡単に言うと、Cドライブは大丈夫なのでWindowsは起動するが、Dドライブにアクセスできない場合などです。このような場合には Vista/XP/2K/Win10ではWindows版を使ってWindows上で修復することもできます。

基本的な使い方はすべてのバージョンで共通なので、自分のケースにあったバージョンを用意してください。

パーティションテーブルを回復する

MBRのパーティションテーブルが壊れた場合、一般的には、修復するための専門的な知識と技術と根気が必要です。なぜならば、そのHDDに存在するパーティションの各種情報を、あちこちのセクタを回って拾い集めてこなければならないからです。

ところが、TestDiskを使えば、面倒な検索から修復までを全てこのソフトが代わりに行ってくれます。

ULTIMATE BOOT CDから起動する場合は、CDを入れて起動し、メニューから Filesystem Tools を選び、Partition Tools 経由で【TestDisk】を起動します。途中何回かダイアログが出ますが、全てOK、あるいはそのまま放っておいても起動します。

Windows版では、ダウンロードしたwinフォルダの中の testdisk_win.exeを実行します。

すると下図のような初期画面になります。物理的に存在するHDDの台数分だけ、列が表示されます。(下図の例では2台) 

誤解のないように確認しておきますが、物理的なHDDの数であって、パーティションの数ではありません。(新しいバージョンのTestDiskでは、HDDの機種名も表示されます。)

分析・復旧したいHDDを上下矢印キーで選択し、左右キーで[Proceed]を反転表示させてEnterキーを押します。(以下面倒なので、単に[Proceed]を選ぶと書きます。)

画面での注意書きのように、この段階でHDDのサイズが間違って表示されているようならば、今後の作業が正しく行われる可能性はありません。[Quit]でTestDiskを終了させてください。

また、物理的にHDDが壊れている場合でも、ここの表示が正しくならない場合があるでしょう。このような場合は、TestDiskを含めてソフトウェアでの修復は不可能であると考えられます。


今回はWindowsのパソコンなので[Intel]を選びます。(たとえCPUがIntelではなくAMDだという場合でもIntelです。)


[Analyse]を選びます。

[Analyse]/[Advaced]/[Quit] 以外は、専門的知識のある人のみの選択肢です。素人は選ばないようにしましょう。([Geometry]に関しては、Incorrect number of heads/cylinder 255(NTFS) != 240(HDD) のようなエラーが出た場合は、選んで設定する必要があります。TestDisk非公式ヘルプ参照)


1番が*マークなのでアクティブな基本領域、2番の領域はEなので拡張領域、5番はLで、 Start End の値が2番の領域に含まれている点からして、2番の拡張領域の中の論理領域であることが分かります。

またファイルシステムがNTFSであることも分かります。これらの情報は全て、パーティションテーブルおよび拡張パーティションブートレコードに記載されている情報でしたね。すなわち、壊れている/壊れていないに関わらず、現在のパーティションテーブルおよび拡張パーティションブートレコードから読み取れるパーティション情報を表示しているわけです。


それから、Start も End も3つずつの数字で表されていますが、これはCHS形式の表現です。

ここでCHSについて説明しておきます。CHSとは、HDDのセクタの位置を、Cylinder/Head/Sector の3つの物理的構造を使ってあらわす方法です。

CHSと並ぶもう1つのセクタ位置の表現方法がLBAで、これは単純に0から始まる整数値で全てのセクタに番号を付けていく方法です。絶対セクタ番号などとも呼ばれます。



上の図の1行目を見てください。CHS 10337 240 63 と書いてありますね。これは、Cylinderが0~10336の10337個の整数で、Headが0~239の240個の整数で、Sectorが1~63の63個の整数で表すことができる量のセクタが、このHDD上に存在することを示しています。1セクタが512バイトで、1KB=1024バイト、1MB=1024KBですから、このHDDの総容量は、

10337×240×63×512÷1024÷1024=76316(MB)

になるわけですね。CylinderとHeadは0から数え始めるのに対し、Sectorは1から数え始める習慣を覚えておきましょう。なお私の今回の例に使ったHDDはHeadが240ですが、大多数の人がHeadが255(0~254)になっていると思います。

ここで多くの方が、CylinderやSectorはともかく、Headが240というのはどういうことだ?と疑問を感じることでしょう。Headが240ということは、表裏を使えるとは言え、120枚ものプラッタ(磁気ディスク)が厚さ数cmのHDDの中に収納されていなければなりません。そんなHDDが現実に存在するわけはありません。

実際には、CHSは仮想的に考えて与えられた数値で、過去の方式との互換性を保つために使われている方式なのです。ですから、プラッタが1枚のHDDなのに255Headと言う場合も当たり前のように存在しています。

むしろCHSとは時刻の表現のようなものだと考えてください。60秒で1分になり、60分で1時間になり、24時間で1日になりますよね。したがって1日の時刻は、真夜中の零時を起点にして、h時m分s秒で表すことができます。この場合のhは0~23、mとsは0~59の整数になります。

CHSでは、Cが時、Hが分、Sが秒と考えてください。時刻と同じように、下のほうが最大値を超えると上の位が繰り上がる方式で増加していきます。

正常なパーティションテーブルがある場合でしたが、パーティションテーブルが壊れていて、アクティブな領域がない場合には、下図のようなメッセージが出ます。


MBR末尾のブートシグニチャが壊れている場合には、下図のようなメッセージになります。


いずれの状態であっても[Quick Search]を選びます。

すると調べようとしているHDDのパーティションが、Windows Vista を使って作られたものかどうかを訊かれます。Vistaを使ったならばキーボードのYキーを、違うならばNキーを押します。

この段階で確認を求められる理由は、Vistaで作られたパーティションは、シリンダの変わり目でパーティションを区切るという境界ルールが当てはまらないためで、これ以降のTestDiskでのSearchのやり方が変わってくるためです。

Vistaの場合には2048セクタ(1MByte)を1単位として、その単位の境界で区切ります。 

このページでのこれ以後の解説は、従来の境界ルールで作られた例なので、Nキーを押した場合となっています。 もしも自分ではどちらか分からない場合には、Yキーを押せと画面にはあります。私個人としては、わからなければ1回Nキーでやってみて、適切な候補が出なかったときにYキーでやり直すのが良いように思います。


次にこのような画面になります。この段階では Enter キーでこの画面をスキップします。

*補足今回の例では、正常なHDDを例にしているので、Quick Searchで正しい情報が得られています。パーティションの区切り方に矛盾がない場合には緑色の表示になります。この画面において、パーティションの領域は正しいのだが種類が違うというエラー(たとえばPrimary bootableのはずなのにただのPrimaryになってしまっているなど)が見つかった場合には、当該行を反転させておいて、キーボードの左右キーで種類を切り替え、次画面で[Write]すれば、その後のDeeper Searchへ進まなくても修復完了になるようなトラブルケースもあります。


ここからがTestDiskの真骨頂です。下図の[Deeper Search]というのは、HDDのセクタをスキャンして紛失したパーティションを検索する命令です。実際に試してみましょう。[Deeper Search]を選びます。


TestDiskが探しているものは、各領域のブートセクタやそのバックアップセクタの残骸です。それらのセクタから見失ったパーティションの情報が得られるからです。

(Vistaで作られたパーティション以外では)パーティションの境界は必ずシリンダの変わり目に設置されるというルールがあるため、Start の値はヘッドが必ず0、セクタは必ず1になります。但し第1パーティションは、MBRが0,0,1に存在するため 0,1,1になります。0,0,2ではなく、0,1,1になるのは、シリンダの境界がダメならば、せめてヘッドの変わり目に境界を作ろうというトラック境界ルールがあるためです。また論理領域も拡張領域のEPBRがn,0,1に存在するため、n,1,1になります。(nは0または正の整数) 以上のことを考えると、Start の値は必ずn,0,1 ないし n,1,1 になることになります。そしてブートセクタは、そのようなセクタ上に存在するはずです。このルールは重要なので覚えておいてください。

一方、バックアップセクタはNTFSの場合には各領域の最終セクタにあり、FAT32ではオリジナルブートセクタの6セクタ後方にあるので、そのセクタもTestDiskはチェックしています。一連の検索作業には数分から数十分掛かるかもしれません。(HDDの容量やパソコンの能力によって変わってきます) Stopを選ばずに、お待ちください。

図をもう少し良く見て見ましょう。この図の段階でほぼ99%検索が終わっています。(10336セクタ中の10219セクタ目) 12個情報が見つかっていますが、全く同じものが2行あるものがいくつかありますね。(1&7/2&3/9&10/11&12)  これは、オリジナルとバックアップの両方ともブートセクタが見つかったものです。また、End値がシリンダ境界にないものもあります。こういうものは候補からはずしても良い可能性が高いです。過去にDisk geometry が変更されていたりすると、こういうことが起こりえます。逆に言うと、Disk geometryを変更してからは使っていないパーティションだと言う可能性が高いと言えるわけです。あと、ラベル名がついているものがありますね。FAT32のディスクパラメータにはラベル名の情報も記載されるので、それを参考情報として表示しているわけです。なかなか親切な機能ですね。

さて、検索が終わると自動的に図10の画面になります。ダブった情報は1つにまとめられ、パーティション修復の候補となる情報が、ずら~っと表示されました。私のHDDは市販ソフトでパーティションを広げたりくっつけたり、OSを入れ変えたり、今まで色々なことをしているので候補が多いですが、一般の人は、もう少し分かりやすい情報になると思います。(何も問題がない方ならば上図のように正しい候補が緑色表示されるだけになるはずです。)

ただし、今の場合は例題としてはこれくらいの複雑さがちょうど良いので、順次説明していきます。ここからは人間の頭脳を使って矛盾のないような候補を選ぶ仕事です。

まず基本情報として、私のパソコンは、75GBのHDDをCドライブ(45GB)とDドライブ(30GB)の2つの領域に区切っています。どちらもNTFSです。皆さんも自分のHDDがどうなっているのか、このくらいの情報は覚えていると思います。まあ、覚えていなくても回復操作はできますから安心してください。今は忘れてしまったと仮定しましょう。

まず、下図の1つ目と2つ目の候補を見て、どちらも0/1/1から始まっていますから、どちらかが本物で、どちらかが偽者(つまり過去に使っていたパーティション情報)だと考えられます。

上下矢印キーで、候補を反転表示にして選択できますが、その際に、最下段にその候補に関するコメントが出ます。1番目の候補は、バックアップセクタによって見つかったものだと言うことと、領域のサイズが分かります。(Cドライブのサイズを覚えていた人は、この段階でこれは違うと判るわけです。)

ここで、図の中にも書いてありますが、Pキーを押してみると、この領域のルートにある、ファイルやフォルダ名を見ることができるので、1つの判断材料になります。Pキーを押します。


エラーが出て、リストが表示されませんでした。このことによって、1番目の候補がほぼ偽者であることが分かりました。[Quit]で上作業に戻ります。

(*注:ファイルなどのリストが出たからと言って本物とは限りません。ですが出なかったら偽者かあるいは復旧不能なほど破壊が進んでいるかと考えられます。つまり必要十分条件ではないが必要条件であるということです。)


続いて下矢印キーを使って、図12のように2番目の候補を反転表示させます。

今度の最下段の表示は、オリジナル&バックアップの両ブートセクタが存在していることを示しています。図10の時のメッセージと比べてみてください。ここでもPキーを押します。


今度は、フォルダ名やファイル名が表示されました。(途中までで省略してあります) これでこっちが本物と分かりました。[Quit]で戻ります。


さて、2番目の候補が正しい事が判ったので、6176/239/63 セクタまでは第1領域となります。よって、第3~5の候補は領域が重なってしまいますから、選択候補から落ちます。6番目の候補は、1番目のすぐ後ろからスタートしていますから理想的な候補です。そしてそのまま 10336/239/63 というHDD末尾のセクタまで行っていますから、これ以降の第7&8候補も落選です。(ごくまれに第1領域の後に不確定領域があり、第2領域と離れているという環境もありえるので、2&7とか2&8という組み合わせの可能性も捨て切れません。しかしまずは常識的なものを選んでおいて、もしトラブルが直らないようならば組み合わせを変えれば良いでしょう。)

さて、2番目と6番目が正しい候補だと分かりました。図12で選んだ候補を反転しておいて、左右の矢印キーで各行左端の記号を変更していきます。各記号の意味は以下のとおりです。

*:アクティブな基本領域
P:アクティブではない基本領域
L:論理領域
E:拡張領域
D:パーティションとして取り扱わない ここでは2番目をにし、6番目をLにします。2番目のに疑問を感じる人は少ないでしょうが、6番目がなぜLなのか?と思う人も多いでしょう。それは 6177/0/1 ではなく、6177/1/1 だからです。基本領域や拡張領域では、Headが0になるはずです。論理領域は拡張ブートパーティションレコードの1トラック後ろ(+1Head)から始まるので、ここは論理領域だと考えるのが自然です。ちなみに、Eはこの場合選べませんでした。

2番目の候補だって基本領域なのにHeadが0じゃなく1じゃないかですって? 0/0/1にはMBRがあるんですよ。それで1シリンダ目に限って、一般の領域は 0/1/1 から始まるのです。

最近のTestDiskのバージョンでは、矛盾のある設定をすると赤字で警告が出ます。下図は、第2基本領域が完全に第1基本領域の中にあると言うムチャクチャな設定で進めようとしたときの警告画面です。赤字でStructure: Bad. と表示されています。


下図のように、左右矢印キーで適切な設定が済んだら、Enter キーです。


TestDiskを使って拡張パーティションブートレコードを回復

今度は、MBRのパーティションテーブルではなく、拡張パーティションブートレコード(EPBR)のテーブルが壊れた例を考えます。

Windowsは起動するものの、Dドライブにアプローチしようとすると、Dドライブの存在を認識していないか、下図のように「フォーマットしますか?」と聞かれてしまい、どちらにせよこのドライブにアプローチできません。

(*注:下図の場合、決して『はい』を選ばないで下さい。修復が一段と困難になります。)


TestDiskで[Analyse]すると、下図のように訳がわからない結果が出ます。



ブートシグニチャまで壊れると、下図のように、AA55がないというメッセージになります。

修復法は上の項目の、MBRのパーティションテーブルの回復方法と全く同じです。正しく行えば簡単に直ります。しかし、生半可な知識でやると、(MBRのPTも一緒に書き換えることから)最悪の場合Windowsまで立ち上がらなくなります。きちんとこのコーナーの内容を理解した上で、実行してください。


TestDiskを使ってブートセクタ(ディスクパラメータ)を回復

TestDiskのもう1つの花形機能が、ブートセクタの回復です。

既に説明したように、ブートセクタは、IPLとディスクパラメータから成り立っています。末尾には例のブートシグニチャがあります。

このうちのIPLの回復は簡単で、XP/2Kの場合、回復コンソールから FIXBOOT を実行するだけです。Dドライブを指定したいのならば FIXBOOT D: のようにします。

一方、ディスクパラメータを回復するのはかなり難しいのです。それは、ディスクパラメータにはその環境固有のデータが含まれるからです。もしも同じOSを使っているのならば、あなたと私のIPLは全く同じですが、ディスクパラメータは全然違ったもののはずなのです。

ところが幸いなことに、NTFSやFAT32では、あなたのオリジナルのブートセクタを丸ごとバックアップしたセクタが自動的に作られています。【TestDisk】はそのバックアップセクタを見つけ、損傷したブートセクタをセクタごと上書きすることで修復する機能を持っています。

まず実験のために、故意にDドライブのブートセクタのディスクパラメータを全て0で埋めて破壊してみました。【TestDisk】を起動し、[Analyse]すると、図21のようになります。(もしブートシグニチャまで破壊されていると、上の図20のようになります。)


それでは、TestDiskを使った回復方法を説明します。ログを残すかどうか、HDDの選択、Partition Tableのタイプの選択(Intelを選ぶところ)までは、上記のパーティションを回復する時と同様です。

メニュー選択画面(図22)になったら、ブートセクタのバックアップに特化した選択肢である、[Advanced]を選びます。


ここで、直したいブートセクタのあるパーティションを選んで[Boot]を選びます。


下図のように結果が出ます。オリジナルブートセクタが、Bad になっていますね。一方、バックアップの方はOKです。そこで、バックアップでオリジナルを上書きすることにします。[Backup BS]を選びます。
(この段階で、すぐにこの操作に入らずに、[Dump]画面で分析することを強くお奨めします。詳しくは図28以降を参照してください。)


確認が出ます。Yキーを押します。これで修復完了です。

あらためて結果を確認した画面です。両方ともOKになりましたね。Sectors are identical. というのは、2つのセクタに差異がないということです。まぁ、上書きしたのだから当たり前ですね。


[Quit]:前の画面に戻る
[Org.BS]:オリジナルでバックアップを上書きする
[Backup.BS]:バックアップでオリジナルを上書きする
[Rebuild BS]:ブートセクタを作り直す
[Dump]:ダンプ表示にする

ところで、オリジナルもバックアップも壊れてしまっている時は、どうしたら良いのでしょうか?これもまた実験として、オリジナル&バックアップともにディスクパラメータを0で埋めてやってみました。現実的には、ここまで壊れていたらあきらめてOS再インストールや、データ領域ならばフォーマットを考えざるを得ないかもしれませんが、TestDiskにはブートセクタをオリジナル・バックアップともに作り直す選択肢があるので、最後の手段として一応試してみるべきです。図29の両ブートセクタともBad状態から[Rebuild BS]を選択します。


少し見にくいですが、スペースを挟んで左が新しく書き込む値、右が今の値(全部0)です。なんと破壊前の正しい値をはじき出しました。[List]で当該パーティションのルートに存在するファイルが確認できるようになっていれば成功です。[Write]でHDDに書き込みます。

1クラスタあたりのセクタ数、1ファイルレコードセグメントあたりのクラスタ数、1インデックスレコードあたりのクラスタ数は、一般的な値が代入されるようです。。
MFTとMFTミラーの開始クラスタ番号は、MFTに特徴的なパターンを基にスキャンして範囲を決めるようです。


TestDisk ステップ バイ ステップ

このページでは、消失したり損傷したりして正常にアプローチできなくなってしまったパーティションを、TestDiskを使って修復する手順の一例を示す。

今回のトラブルの概要

36GBの容量を持つHDDを、3つのパーティション(基本領域1つと拡張領域の中の論理領域2つの合計3つ)に分割して使用していた。ところが

NTFSでフォーマットされていたアクティブな基本領域のブートセクタが損傷してしまった
拡張領域に存在していた2つのNTFS形式の論理領域のうち、2つ目が消失してしまった
このトラブルに対する具体的な修復手順を示すことによって、TestDiskの基本的な使い方をお示ししたい。今回扱うものはファイルシステムがNTFSの例であるが、FAT32の場合であっても手順は変わらない。

基本的なTestDiskの操作方法

管理者権限のあるユーザーとしてTestDiskを実行すること
項目の選択は、キーボードの矢印キーやPage Up/Page Downキーを用いること。
選択項目を確定して実行する時はEnterキーをつかうこと。
前画面に戻る時や終了するときはQキーを押すこと。
Yes/Noの選択を求められた時は、Yキー/Nキーを使うこと。
実際にデータを書き込むときには、[Write]を選びEnterすること。

トラブルの具体的な症状

Windowsのブート領域が損傷しているため、Windowsが起動しない。このトラブルを抱えたHDDを別の正常なWindows XPが搭載されたパソコンのセカンダリチャンネルなどに繋ぎなおして、そちらのXPからアプローチした場合には

先頭の基本領域をディスクの管理(diskmgmt.msc)でみると「未割り当て」になっており、Explorerでアプローチしようとすると、「ドライブ*のディスクはフォーマットされていません。今すぐフォーマットしますか?」という警告が出てしまう。(このとき絶対に「はい」を選ばないこと)

消えた論理領域のほうは、Explorerからでは見えない。ディスクの管理からは拡張領域の中の「空き領域」として表示される。


ログの作成

TestDiskを起動させると、まず下図のような画面が表示される。ログをどうするかという選択画面である。

ログと言うのは、TestDiskの操作中の画面・分析結果などをテキストファイル形式で保存したものである。TestDiskには、自動的にログを作成し保存する機能がある。上下キーを使って、ログを新規作成するか、前回までに作成したログファイルに追記するか、ログファイルを作らないかを選択する。

読み取り専用の媒体から起動しておりログファイルの保存に適した場所が存在しない場合を除いては、Createを選ぶこと。すでに前回までのログファイルが存在しており、そのファイルに今回のログを追記したい場合には、Appendを選ぶ。
Enterキーで次画面へ。


検出された全てのハードディスクが、機種名や容量とともに1行ごとに表示される。


TestDiskで分析・修復したいハードディスクを上下キーで反転表示させる。
[Proceed]が反転している状態でEnterキーで次画面へ。
もしもこの画面の時に、HDDの容量が正しく認識されていないようであれば以下のことを確認する。

たとえば120GBのはずなのに32GBと表示されている場合、BIOSの設定を確認する。3.5インチIDEのHDDの場合には、32GBに容量を制限するジャンパピンの設定になっていないかも確認する。

もしも130GB以上の容量のHDDなのに130GBしか認識されていない場合には、LBA48をサポートしていない場合がある。「137GBの壁」とか「Big Drive」・「LBA48」などの用語でGoogle検索してみると良い。

パーティションテーブルの形式の選択肢が一覧表示される。

自分の環境に合致した選択肢を上下キーで反転させる。ただし通常の場合は、TestDiskが自動的に適切な選択肢を選んで反転表示させているはずである。
Enterキーで次画面へ。


TestDiskのメニューが表示される。



現在のパーティション構成を調べたり、消失したパーティションの検索を行うときは、[Analyse]を選ぶ。
Enterキーで次画面へ
すると現在のパーティションの構成が表示される。消失していたりエラーが出ているパーティションがないか吟味してみよう。

最初の領域が二度重複してリストアップされている。このようなエラーは、パーティションテーブルに異常があるか、ブートセクタが壊れているかによってもたらされている。それから、拡張領域のなかの1つめの論理領域([Partition 2]というラベルの領域)は正常に認識されているが、もう一つあるはずの2つめの論理領域が表示されていない。

[Quick Search]を選んで先に進む。


Pキーを押すことで、反転表示されているパーティションのルートにあるファイル・フォルダ名が表示される。元の画面に戻るときはQキーを押せばよい。
Enterで次画面へ。

TestDiskはほとんどが白黒画面だが、下の図では緑色表示されている。緑色で表示されている行は、同じ領域を共有している候補が他には無いということを示している。


この段階で全ての領域が正しくリストアップされているようであれば、[Write]を選んで、実際にパーティションテーブルを書き換える作業に進む。[Extd Part]というメニューは、拡張領域の範囲を使用可能な範囲を全て利用するように拡げるか、現状のままにしておくかという選択肢である。


まだなお完璧で無い場合には、[Deeper Search]を選びEnterを押して次へ進む。今回の例では最初の基本領域(0/1/1~1274/254/63)が表示されていないので当然[Deeper Search]を選ぶ。


Deeper Searchでは、ブートセクタやバックアップブートセクタがHDD上に残っていないか、セクタをスキャンして検索する。それらのなかには、パーティションの領域を推定できる情報が含まれているからである。

このときに、TestDiskはHDD上の全てのセクタを調べるわけではなく、ブートセクタ・バックアップブートセクタが存在する可能性があるセクタのみを検査する。


パーティションの境界は、シリンダの境界で区切るのが一般的である。CHS表示で書くと n/0/1という位置から始まることになる。(nは自然数)

そのほか、マスターブートレコード直後の第1基本領域は0/1/1から始まるし、論理領域は拡張パーティションブートレコードを避けてn/1/1から始まる。

MBR直後の最初の領域が拡張領域だった場合には、その中の最初の論理領域は0/2/1から始まるだろう。FAT32のバックアップブートセクタはオリジナルブートセクタの6セクタ後方にあり、NTFSのバックアップブートセクタは領域の最後方セクタに存在する。

TestDiskはこれらの重要なセクタが存在する可能性があるセクタのみを拾い出して分析するわけである。

この際に、かつて何回かパーティションの切りなおしをしたHDDの場合には、今は使っていない昔の領域情報を持ったブートセクタが見つかったりする。

その結果、互いに領域が重なり合う矛盾した候補が表示されたりするわけだ。

Deeper Searchは現在のものであろうと過去のものであろうと、とにかく見つかった領域情報は全てリストアップするので、ユーザーが自分の思考力で正しい候補を選別することが必要になる。

ちなみにTestDiskのGeometryの設定が間違っていると、大前提であるシリンダ境界セクタの位置を誤認識してしまうので、関係ないセクタばかりをスキャンすることになる。これでは正しいブートセクタを見つけられなくなる。

Windows Vistaの場合は例外で、インストールDVDを使ってまっさらなHDDを複数のパーティションに区切ると、シリンダの境界ではなく、2048セクタを1単位としたグループの変わり目で区切る。

1セクタは512バイトであるから、2048セクタはちょうど1MBである。つまり、HDDの先頭からきっちりnMBの位置に境界が来るわけである。したがって従来の方法と検索方法を全く変えてやる必要がある。

TestDiskの操作中に、パーティション作成にVistaを使ったかどうかを確認されるのは、そのためである。C言語のコードが読める人は、公式サイトからソースを入手して、next.cというファイルを見ると、具体的にどのようにセクタを選んでいるのかが(なんとなく)わかる。

Deeper Searchが終了すると、結果が下図のように表示される。

[Partition 1]とラベルの付いた最初の領域が新たに見つかっている。この行を反転表示させると、画面の最下行に”NTFS found using backup sector!”と表示される。これは、この領域がバックアップブートセクタの情報によって見つかったことを意味している。

それから[Partition 2]というラベルの付いた領域が、異なるサイズで2回リストアップされている。これら2つの候補は同じ領域を共有しており、同時に存在することが出来ないので、行頭の記号はD表示になっており色も緑色表示にはなっていない。


ブートセクタおよびバックアップブートセクタをスキャンして探し出し、その中に記録されている情報からパーティションの領域を導き出すのがTestDiskのAnalyse機能である。

もしも今回の例がパーティションテーブルの損傷だけであったならば、上のアクティブな基本領域の情報は、オリジナルブートセクタとバックアップブートセクタの両方の情報によって確認されたはずである。

ところが今回の例では、オリジナルが損傷していたため、バックアップのみの情報でしか見つからなかったわけである。

Analyse機能によってこのあとパーティションテーブルが復旧されるが、このままではオリジナルブートセクタは壊れたままなので、Windowsは相変わらず起動しない。

知識のないユーザーは「ああ、TestDiskでは治せなかったなぁ」と勘違いして終わるだろう。TestDiskがここまでに表示してきた情報をしっかりと読み取って、どうして起動しないのかを正しく理解できている人ならば、さらにもうワンステップの修復作業(TestDiskで言うところのAdvanced機能)をしてはじめて修復作業が完遂することを理解しているので、Analyse作業後に起動しなくても少しも慌てなくて済むわけだ。

ここで1つ言っておきたいことは、TestDiskは画面上に有益な情報を「さりげなく」表示することが多い。今の最下行の情報などはその良い例である。

英語表記だからといって毛嫌いすることなく、英語が苦手なら英和辞典を片手に持ちながらでも、書いてあることをよく読んでおくことである。

このページのような解説ページには出て来ない様な警告画面が出ることもあるし、作業の流れが解説とは変わってしまうこともある。そういうときにも画面の表示をよく読んでいれば、誤った操作をするようなことが防げると思う。

それから再び緑色表示に関する事だが、上の図では1つ目と4つ目の領域は緑色表示である。

これは前述のように、他のどの候補とも領域が重なり合っていないからである。

このような候補の場合、行頭の記号は*・P・Lのような領域の種類を示したものになっている。2つ目と3つ目の候補は領域が重なり合っている(同じ始点で始まり3つ目が2つ目を完全に含んでいる状態)ので白色表示のままだ。

このような場合には、ユーザーがどちらか選択してやらねばならないので、行頭の記号もDになっている。Dの意味は「この候補は選択しない」と言う意味なので、この画面をEnterで抜けると次の画面からは出て来ない。残したければ左右キーでD以外の記号に変えておく必要がある。

2つ目の候補([Partition 2]のうち上の行)を反転表示させておき、Pキーを押す。


Pキーは、選択している領域のルートに存在するファイル・フォルダを表示させる命令であるが、ファイルシステムが開けないというエラーが出てしまった。[Quit]またはQキーで前画面に戻る。

  • エラーがでたので、この行はこのままDにしておく。
  • 次にすぐ下の行([Partition 2]のうち下の行)に反転表示を移す。
  • Pキーを押す。

今度はファイルやフォルダのリストが確認できた。こちらが正しい候補だと判断する。

  • フォルダに合わせて左右キーを押すと、下層・上層のディレクトリに移動できる。

注釈 FATの場合は10クラスタまでの範囲しかリストに表示されないという制限がある。しかし、この段階で表示されないファイルがあるからといって、実際にリカバリーされないという意味ではないので心配には及ばない。

  • [Quit]またはQキーで前画面に戻る。
  • 中身を確認できた行([Partition 2]のうち下の行)を反転表示し、左右キーで行頭の記号をLに変更する。

注釈 行頭の記号が*(アクティブな基本領域)になっていたとしても、この領域からブートしない場合には、Pに変更しても構わない。

  • Enterで次画面へ。

さていよいよ新しいパーティションテーブルを書き込む段階にきた。

注釈 拡張領域の情報は自動的に書き加えられている。

  • [Write]を選択してEnter。その後の確認でYキーを押す。


これで、パーティションテーブルの修復まで完了しました。


NTFSのブートセクタの修復


[Partition 1]というラベルの付いたアクティブな基本領域は、まだ修復が完了していない。今度はこれを修復する番である。下図を見ると、オリジナルのブートセクタはBad、バックアップブートセクタはOKと表示されている。2つのセクタは異なっている為に、”Sectors are not identical”と表示されている。

バックアップブートセクタでオリジナルブートセクタを上書きしてやる場合には、[Backup BS]を選びEnterする。続いての確認画面ではYキーを押す。


TestDiskには自己診断機能みたいなものがあって、ブートセクタに異常が認められると、自動的に上の画面まで進んでくることがある。自動的に画面が進まないときには起動後、「ログ」→「対象HDD選択」→「パーティションテーブル形式」と進み、メニュー選択画面で[Advanced]を選ぶ。その後ブートセクタを修復したいパーティションを選んでおいて[Boot]を選ぶと、下の画面になる。

修復後、再び確認すると、両方ともOKになっている。もちろん”Sectors are identical”になる。NTFSのブートセクタは無事修復された。

[Quit]を選択してEnter。

TestDiskは再起動を求めてくる。Enterキーを押し、再起動してHDDからブートし、元通り正常に起動するかを確認しよう。

“TestDiskで失われたパーティションをリカバリする” への1件の返信

  1. 質問は可能ですか?

    1度stopしました。
    再度stopする方法がわかりません。
    1度stopした後、進行状態のみ表示されます。
    友人のPCを使用させてもらっています。
    友人が放送するのでstopしたいのです。
    本当は違うssdをtestdiskしたかったのですが間違いました。

    質問
    どうすればstopできますか?
    testdisk中に他の作業しても問題ないですか?

    宜しくお願いします。

    win11 i5 THIRDWAVE
    途中でしたい作業 ツイキャス放送
    ssd 1tb sandisk 
    ※クローンを失敗したdisk フォーマットしたい
    ※他のdiskに、仮想ファイルを作成して回復してしまい、usb接続があると認識されるだけ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です