「TestDisk」の使い方

パーティションの復旧

パーティションに関する情報を修正することで、パーティションを復旧できるソフト、それが「TestDisk」です。
GNUライセンスなので、無料で使えます。
突然認識できなくなったパーティションも、「TestDisk」によって復旧できる可能性があります。

実行中 - TestDisk

これは、「TestDisk」実行中のスクリーンショットです。
「TestDisk」は、記憶装置内に残っているパーティションの痕跡をたどって、
パーティションテーブルを書き換えます。

やってることはちょっと難しいかもしれませんが、「TestDisk」の操作自体は簡単です。
セクタエディタを使う方法に比べれば、危険性も低いと思います。

「TestDisk」は、MBRGPTを書き換えます。
従って、パーティションテーブルの不具合で起動できなくなったパソコンも、「TestDisk」によって復旧可能です。
ということは、「TestDisk」の操作を間違えると、Windowsが起動できなくなることもあるので、
そのつもりでいてください。

また、「TestDisk」はデータを復元するソフトではありません
データを正しく書き換えるためのソフトです
※バージョン6.10で「Undelete」機能が追加され、ファイルの復元もできるようになりました。
「TestDisk」を使うということは、対象となる記憶装置を使い続けることを意味します。
記憶装置内に必要なデータがある場合は、データのバックアップを最優先してください
最善の方法は、「ddrescue」を使ってディスク全体のコピーを取ること。
あるいは、「PhotoRec」や「ファイナルデータ」を使って、ファイル単位の復元を試みてもいいです。

なぜこんな危機感をあおるようなことを冒頭に書いているかというと、
安易に「TestDisk」を実行して、Windowsが起動できなくなったり、
ハードディスクのデータを元に戻せなくなったりして、
「助けてくれ」という連絡をこれまでに何度も受けてきているからです。
※これだけ書いていても、まだ同様の連絡が年に数回あります。

「TestDisk」を使用する状況は、非常に多岐にわたります。
すべてのケースを網羅することは不可能なので、ここでは最も多いであろうケースを代表して書いています。
具体的には、パーティションテーブルの破損が原因で、パーティションを認識できなくなった場合についてです。
パーティションを誤って削除した場合も、これに含まれます。

従って、「TestDisk」は、ここに書いてある通りに操作すればいいというものではありません
実際に目の前で起こっていることと照らし合わせて考え、実行する必要があります。
このページは、そのヒントとすべきものです。

「TestDisk」の入手

「TestDisk」の入手先は以下のとおりです。

ソフトウェアページ CGSecurity
ダウンロードページ TestDisk Download

DOS版、Windows版、Linux版等いろいろありますが、お使いのOSに合ったものを選んでください。

以下、Windows版の「TestDisk」をベースに説明していきます。
他のプラットフォームでも、「TestDisk」を起動した後は基本的に同じです。

ダウンロードした「TestDisk」のファイルはZIPで圧縮されているので、各種解凍ソフトを使って解凍してください。
「testdisk-○○」(○○はバージョン番号)というフォルダができ、その中にファイルが展開されます。
Windows版であれば、「testdisk_win.exe」という「TestDisk」の実行ファイルがあるはずです。

OSが起動しない場合

パーティションテーブルに問題があるということは、Windowsが起動できない状況も十分考えられます。
そんな時は、CD等から適当なDOSやLinuxを起動して、DOS版、Linux版の「TestDisk」を実行する必要がありますが、
面倒なので、Ultimate Boot CDを使うと楽です。
具体的な起動方法については、下記ページ参照。

「TestDisk」を「UBCD」から起動する

復旧対象について

「TestDisk」による復旧の難易度は、簡単な順に、

パーティションが1つだけ < パーティションが複数ある < パーティションを変更したことがある

です。※残存ブートセクタの個数順。
従って、内蔵ハードディスクやSSDの復旧作業には特に注意が必要で、
逆に、外付けハードディスクやUSBメモリは簡単に復旧できる場合が多いです。(選択肢が少ないから。)

例として、古いパソコンの内蔵ハードディスクを使います。
論理構造が複雑で、復旧しにくいからです。
OSは「Windows 2000」、かつて「Windows Me」がインストールされていました。
パーティションをいろいろ区切った経歴があります。

初期状態 - ディスクの管理

テスト用のハードディスクは、「ディスクの管理」にて上の画像の状態としました。

「Dドライブ」は、パーティション作っただけ、未フォーマット。
「Eドライブ」は、パーティション作ってからNTFSフォーマット
最後の拡張パーティションは、「True Image」というソフト用のリカバリ領域です。

「TestDisk」実行前 - ディスクの管理

とりあえず、「Cドライブ」以外みんな削除してみた。

「TestDisk」の起動

実際に、「TestDisk」を実行していきます。
ここではWindows版なので、「testdisk_win.exe」を実行します。

ログを残すか - TestDisk

「TestDisk」は英語のソフトですが、気にしないでください。
キーボードのみの操作ですが、気にしないでください。
「TestDisk」の優秀な機能にはかえられません。

「TestDisk」は、コマンドプロンプトのようなコンソール上で動作します。
でも、ほとんどカーソルキーと「Enter」キーで操作できるTUIなので、
純粋なコマンドプロンプトのCUIに比べれば、はるかにハードルは低いです。

まず初めに、「TestDisk」の動作履歴をファイルとして残すか聞いてきます。
どれでも好きなものを選択してください。
慣れないうちは、「Create」を選択しておいたほうがいいです。
「Enter」キーで、次へ進めます。

「Create」や「Append」を選択すると、
「TestDisk」の実行ファイルと同じ場所に、「testdisk.log」というログファイルを作成します。
「Create」はログファイルの新規作成(上書き)、「Append」は追記です。
後で確認したり、第三者に情報提供する場合に有効です。
※当サイトの掲示板でも、質問の際にログファイルがアップロードされていると、状況がわかりやすいです。
万一操作を誤った場合にも、ログファイルがあると復旧が容易です。

ディスクの選択 - TestDisk

「TestDisk」による修復対象のディスクを上下カーソルキーで選び
「Proceed」を選択します。
「次へ」ということです。
「Quit」=「戻る」です。
これらの表記は「TestDisk」使用中、何度も出てきますが、同じ意味です。
※バージョン7.0では、ディスクに加えドライブまで表示されていましたが、パーティションの復旧が目的の場合はディスクを選択します。

パーティションテーブル種別の選択 - TestDisk

パーティションテーブル種別を選択します。
「TestDisk」は、あらかじめ検出されたパーティションテーブル種別を選択しています
ただし、デフォルトで選択されているものが必ずしも正しいわけではありません。
「TestDisk」を使用する状況では、そもそも前提となる記憶装置内のデータに問題がある場合が多いからです。

従来通り、MBRのパーティションテーブルを使っていれば、「Intel」を選択します。
USBメモリやSDカードもこっちです。

一方、2TBを超える(正確には2TiB以上の)ハードディスクや、64bit版Windowsのシステムディスク等で、
GPT(GUIDパーティションテーブル)を使っている場合は、 「EFI GPT」を選択してください。

「TestDisk」のメインメニューです。
「TestDisk」のすべてを説明するには、あまりに多機能かつ難解なので、要点だけ書きます。

Analyse パーティションの構造を解析する。主に使用。
Advanced ブートセクタPBSの修復や、ファイル操作、イメージの作成を行う。
Geometry CHSの各値、及びセクタサイズを変更する。
Options 「TestDisk」自体の動作オプション。
MBR Code 「TestDisk」によってMBRコード(ブートストラップローダ)を書き直す。
Delete パーティションテーブルを「0」で埋めて消去する。
Quit 戻る。

基本的に意味がわからなければ、むやみやたらと操作しないでください。
「TestDisk」の操作は、正しく意味を理解していないと、新たなトラブルを招く恐れがあります。

ここではパーティションの復旧を目的としているので、「Analyse」を選択します。

Quick Search

Quick Search - TestDisk

メインメニューで「Analyse」を選択すると、
「TestDisk」が動作する前の、現在のパーティション情報が表示されます。
ここでまず、「Quick Search」を選択します。

ちなみに、「Backup」を選択すると、
「TestDisk」の実行ファイルと同じ場所に「backup.log」ファイルを作成し、
現在の情報を保存してから進行します。

「Quick Search」の結果 - TestDisk

スキャンが終わると、「Quick Search」で調べた結果のパーティションが表示されます。
先ほどの画面とは似て非なるものです。
注意して見てください。

データの整合性がとれていれば、各パーティションは緑表示されます。
パーティションの左に記載されている記号の意味は以下の通り。

P プライマリパーティション
* アクティブなプライマリパーティション。※つまり、システムパーティション。
GPTの場合は無関係。
E 拡張パーティション
L 論理ドライブ
D 削除されたパーティション。※つまり、復旧対象でないパーティション。

任意のパーティションを選択し、左右カーソルキーを押すと、
パーティションの種類を変更できます。
ただし、つじつまの合わない設定はできないようになっています
ここが、「TestDisk」が簡単かつ安全だと思う一番の理由です。

削除してすぐのパーティションだったら、「Quick Search」であっさり見つかります。
そして、勝手に追加されてます。
修正が必要なパーティションがあれば、適宜変更してください。

なお、そもそもパーティションの意味がわからない場合は、
パーティションの解説ページでも参考にしてみてください。

ファイル一覧表示 - TestDisk

有効なパーティションかどうかを判断するひとつの方法として、
任意のパーティションを選んで「P」キーを押すと、ファイル一覧が表示されます。

上の画面はフォーマットしただけのパーティションなので、「ごみ箱」すらないんですが。
でも、何もないということがわかります。

ファイル一覧の画面は、「Q」キーまたは「Esc」キー退出します。

ファイルシステムの破損 - TestDisk

逆に、ファイルを表示できない場合は、
無効なパーティションである可能性が高いと考えていいでしょう。

「Quick Search」の結果 - TestDisk

以上の操作を通じて、自分の希望通りにパーティションを設定したら、
「Enter」キーを押して先へ進めてください。
また、復旧対象のパーティションが見つからない場合も、一旦先に進めてください。

Deeper Search - TestDisk

「TestDisk」で修正した後の、書き込む予定のパーティション情報が表示されます。
多くの場合、ここですでに復旧対象のパーティションが表示されているはずです。
表示されているパーティション構成で問題なければ、Writeの項目まで進んでください。

ちなみに、私のこの事例では、復旧すべきパーティションが一部見つかりませんでした。
「Quick Search」では、先頭から見つけたブートセクタの順にパーティションを設定していくようです。
このため、先に検出された正常っぽいパーティションの領域はスキャンされません。
その分、時間はかからないのですが。

従って、ブートセクタの残骸が多数存在するハードディスクでは、
「Quick Search」だと思うような結果を得られない可能性が高いです。

Deeper Search

この状態で必要なパーティションがまだ表示されない場合は、「Deeper Search」を選択します。
時間はかかりますが、ハードディスク全体に渡ってパーティションの痕跡を探してくれます。

「Deeper Search」は、必須の操作ではありません
「Quick Search」で復旧対象のパーティションが見つかったのなら、それで書き込むべきです。
じゃないと、「Deeper Search」は時間の無駄であるとともに、
不必要な選択肢を増やしてユーザーを混乱させるだけです。

「Deeper Search」実行中 - TestDisk

様々なパーティションの履歴があるハードディスクに対して「Deeper Search」を実行すると、
途中で警告が出てくる場合があります。
逆に言えば、これらも含めて検出するのが「Deeper Search」の役割です。
基本的には警告を受け入れたうえで続行し、結果をユーザーが判断します。

Warning: number of heads/cylinder mismatches 240 (FAT) != 255 (HD)

等という警告内容の詳細については、下記ページにて解説しています。

ブートセクタとディスクジオメトリの関係 - 「TestDisk」によるブートセクタの修復

ここでは本題ではないので、説明を省きます。

「Deeper Search」は、非常に長い時間を要します。
大容量のハードディスク等、状況によっては、丸一日以上放置するつもりでいたほうがいいです。

なお、「Deeper Search」実行中に必要なパーティションが見つかった場合は、
途中で「Stop」を選択してスキャンを止めても構いません

「Stop」を選択した時点で検出されているパーティションの中から、復旧対象を選べます。
特に、もともとパーティションが1つしかなかった場合、
必要な情報はディスクの先頭部分に集中しているはずですので。

回復できないパーティション - TestDisk

「Deeper Search」終了時に、

The harddisk (XX GB / XX GiB) seems too small! (< XX GB / XX GiB)

と表示されることがあります。
直訳すると、ハードディスク容量が小さすぎるらしいですが、実はそんなわけない場合がほとんどです。
これは、検出されたブートセクタで指定されている領域が、ハードディスクの領域の外にあることを意味します。
つまり、この情報をもとにしたパーティションは無効なので、選択肢から除外されることの通知です。

このようなブートセクタは、たとえば、パーティションを丸ごとコピーした場合に発生することがあります。
どちらにせよ不要なパーティションなので、「Continue」を選択して次へ進めます。

「Deeper Search」の結果 - TestDisk

「Deeper Search」の結果です。
パーティションの候補が増えています。

選択肢が多すぎるので、各パーティションは一旦削除扱いとされています。
実際に削除されているわけではありませんので、ご安心を。
画面の見方や操作方法は、「Quick Search」のときと同じです。

左右のカーソルキーで、パーティションを希望通りに変更してください。
また、「P」キーを押してファイル一覧が表示可能か確認します。

特に、いろいろパーティションを区切った履歴のあるハードディスクでは、
「Deeper Search」で多くのパーティション候補が検出されるので、
いろんな手がかりをもとにパーティションを選んでいく必要があります。
そのへんについては、ヒントとなるような事柄を下記ページにまとめました。

「TestDisk」での復旧パーティションの選び方

逆に、購入時からパーティションの変更を行っていないのであれば、
この例のように多数行出てくることはないので、判断しやすいと思います。

Structure: Bad. - TestDisk

わざと、つじつまが合わない設定をしてみました。
「Structure: Bad.」と怒られます。
候補が多い時には、何気にありがたい機能です。

パーティション設定終了 - TestDisk

復旧するパーティションを選び終わったら、「Enter」キーを押してください。

Write

確認画面 - TestDisk

「TestDisk」が設定するパーティションの一覧が表示されます。
十分に確認しておいてください。
「Write」を選択すると、
現在画面に表示されているパーティションの情報をパーティションテーブルに書き込みます。

最終確認 - TestDisk

最終確認です。
「Y」キーを押すと、いよいよ実際にパーティションテーブルに書き込みます

そうです、実はここまで、
「TestDisk」はハードディスクに対して、一切変更を加えていない状態なんです。
「あ、ヤバいかも。」と思ったら、いつでも途中でやめてください。

ブートセクタのチェック

ブートセクタ - TestDisk

パーティションテーブルを書き込む際に、上のような画面が表示される場合があります。
これは、ブートセクタが破損していて、パーティションテーブルを修正しただけでは復旧できないことを意味します。
でも、「TestDisk」ではブートセクタを修復することも可能です。
詳細は下記ページにて。

「TestDisk」によるブートセクタの修復

再起動してください - TestDisk

再起動をうながすメッセージが出てきて、完了です。
「TestDisk」を終了し、再起動して動作確認します。
また、外付けハードディスク、USBメモリ、SDカードの場合は、再接続してもいいです。

再起動や再接続が必要なのは、
パーティションテーブルの読み込みが、補助記憶装置への初回アクセス時にしか行われないからです。
この時点ですでに書き込みは行われていますが、OSに設定を反映させるため、再起動、再接続します。

結果と考察

「TestDisk」終了後 - TestDisk

再起動後、「ディスクの管理」を開いてみました。
「TestDisk」によって、使えていたパーティションはすべて復旧しました
リカバリ領域から起動する「True Image」も、正常動作しました。

ただし、ひとつだけ「TestDisk」で見つからないパーティションがありました。
なぜ、見つからなかったのでしょうか?

それは、このパーティションがまだフォーマットされていなかったので、
このパーティションに関するブートセクタが一度も作られていないんですね。
唯一情報のあったMBRのパーティションテーブルは、
パーティションを削除した段階で「0」で埋められ、消去されています。
「TestDisk」が必死にパーティションの痕跡を探しても、ないものは見つけようがありません。

「未フォーマット」=「使ってない」ということなので、実はどうでもいいんです。
作り直したらいいだけの話です。

復旧できない場合

ここまでの操作で、「TestDisk」ではパーティションが確認できているものの、
「Write」としても、Windowsからは当該パーティションにアクセスできない場合
があります。
このようなときは、ブートセクタを確認してみることを強くおすすめします
つまり、下記ページを参考にしてみてください。

「TestDisk」によるブートセクタの修復

先に説明したように、パーティションテーブルを書き込む際に、
「TestDisk」が自動的にブートセクタの修正を提示することもありますが、
この判定は確実なものではありません。

「TestDisk」がエラーなく終了したとしても、それが正しいデータ構造になっているとは限りません。
特に、「TestDisk」は動作のあやしい記憶装置に対して使われることが多いソフトなので、
「TestDisk」自体が記憶装置を誤認識してしまうこともあります。
最終的には、ユーザー本人が状況を見極め、判断する必要があるのです。

「Read error」について

「Read error」が表示され、セクタの読み込みができないためにパーティションを検出できない場合は、
「TestDisk」を使ってどうこう、という問題ではありません。
セクタを読めないってことで、物理障害のたぐいです。

以下、参考ページです。

不良セクタのあるハードディスクへの対応