\r\n\r\n
コンピュータをいじくり回している方なら(ここにいらっしゃるからには、その可能性は高いでしょう)、次のような恐ろしい光景を目にしたことがあるはずです:プロジェクトが終了し、再起動したところです。真っ黒な画面に小さな白い文字で "Invalid partition table!"と表示されます。これは、あなたのマシンが起動中に取得するものであるため、恐ろしいことです。
ここでは、パーティションテーブルとは何か、そしてコンピュータのドライブを再構成する際になぜ注意しなければならないかを見てみましょう。
パーティショニングを理解するためには、メディア(ハードディスク)を知ることが有効です。
ハードディスクの取り扱いは、ドライブ本来の構造に基づいています。(最近のソリッドステートドライブはこのような作り方をしていませんが**、フォーマットは同じです)。これらのディスクは、1枚または複数枚のディスクで構成されています。ディスクはアーム(レコードプレーヤーの針のアームに似ている)の上で回転し、アームもディスクの半径の上を往復する。
ハードディスクの円形プラッターは、磁気トラックと呼ばれるディスクの周囲の円形領域に分割されています。ドライブに複数のディスクがある場合、これらは立体的であるためシリンダーとも呼ばれます。セクタは円形トラックのセグメントで、各セクタには何バイトかのデータ(当初は512バイト、最近は4096バイトまで)が入っています。前回の記事には、実際にデータがどのように保存されているかについての詳細な情報が含まれています(下の写真のセクタは「B」と表示されています)。
しかし、今回の目的では、ファイルがこれらのセクタに分散していることが分かれば十分である。ファイルを保存すると、オペレーティングシステムは、そのデータを完全に保存されるまで、一度に1セクターずつハードディスクに書き込みを開始します。後でファイルを開くと、ファイルが再び読み込まれるまで、アームは1セクタずつ読み込むことになります。セクタが一緒に配置されている場合は、ブロックを形成しています。デフラグを行う際、Windowsはこれらのブロックを並べ替えて、同じファイルに関連するセクタを近くに配置しようとします。
しかし、オペレーティングシステムがディスクのセクタにアクセスするとき、目に入るのは1と0だけである。これらをファイルやフォルダとして解釈する方法を、オペレーティングシステムに知らせる必要があります。
各オペレーティングシステムは、独自の方法でハードディスクにデータを保存します。ファイルシステムと呼ばれる形式です。例えば、オリジナルのWindowsファイルシステムでは、FAT(File Allocation Table)を使って、ディスク上のすべてのディレクトリとファイルに関する情報を保存していました。この情報はハードディスクのスタートセクタにあり、それらが何らかの形で破損すると、データにアクセスできなくなるのである(仕方がない)。一方、Linuxのext3ファイルシステムでは、ファイルデータを含むセクタサマリー(inodeと呼ばれる)をほとんど使用せず、ディスク全体に分散して配置している。これらのinodeリストが破損した場合、ユーザーはユーティリティを実行して再構築することができます(inode自体はまだ存在するため)。
ファイルシステムは、ディスクパーティションに適用されます。昔はディスクのパーティションは1つだけでしたが、最近は多くのディスクに複数のパーティションが入っています。この追加パーティションには、例えば、マシンの**マーチャント・リカバリ・イメージを格納することができます。下図は、異なる種類のパーティションが複数存在するハードディスクです。
パーティションテーブルは、0と1がどのようにパーティションに分割され、どのファイルシステムを使用するかを記述していきます。この情報があれば、OSはディスクのセクタを正しく解釈し、どのセクタにファイルがあるのかを知り、ファイルを読み込むことができるので、猫**を楽しむことができるのです。この情報がないと、ブートローダは起動時に何百万ものビットを見ることになり、OSがどこにあるのかわからなくなります。それにブートローダは周りを見る習慣がないんです。短い不機嫌なメッセージが流れるだけです。
お使いのコンピュータには、すでに次のいずれかのタイプのパーティションテーブルがある可能性があります。
パーティションテーブルがすでに存在する場合、この記事のポイントは何ですか? パーティションテーブルのエントリを修正したり、削除してやり直す必要がある場合もあります。
本当に必要でない限り、ディスクパーティションテーブルをいじることはお勧めしません。その都度、何か問題が起こる可能性があるからです。次の項では、気づかないうちに変更している場合があることを説明します。
もしあなたが熱心なLinuxファンなら、どんなOSが搭載されていても、新しいマシンの足元をすくわれることでしょう。このとき、インストーラはどのパーティションを使うか尋ねてきます。LinuxにしたパーティションのIDを変更して、パーティションテーブルを更新します。これで、次にマシンが起動したときに、制御を渡すためのLinuxカーネルを探すことができます。
システムパーティションのサイズ変更、名前変更、再フォーマットを行う場合、パーティションテーブルの変更も必要です。下図のようにパーティションの名前(ラベル)だけを変更しても、パーティションテーブルに情報を書き込んでいることに変わりはありません。その結果、パーティションテーブルの更新がうまくいかず、立ち往生してしまうことがあるのです。
ディスククローニングツールを使用してコンピュータをバックアップする場合、パーティションをハードディスクに直接書き込むことがあります(ファイルを1つずつ同期したりコピーしたりするのではありません)。この場合、パーティションテーブルの内容と一致するようにすることが重要です。ドライブ全体のクローンを作成する場合、パーティションテーブルも含まれるため、通常は問題ありません。ただし、1つのパーティションだけをクローンした場合、パーティションテーブルに記載されているサイズやファイルシステムと一致しないパーティションは、リストア時に書き戻される可能性があります。
これらの問題を回避する最も簡単な方法は、バックアップを終了する際にディスク全体のクローンを作成することです。定期的にバックアップをとっているんですよね?復元するとき、実際にはディスクを少しずつ元の状態に戻しているのです。
しかし、おそらくバックアップを最適化する必要があります(例えば、ドライブ全体をクローンするスペースがないため)。この場合、パーティションテーブルもバックアップしていることを確認してください。これは通常、クローニングプログラムのオプションです(上の画像はClonezillaを使って作成したバックアップMBRです)。ただし、ドライブ全体のクローン作成に比べると、信頼性はやや劣ります。その間、誰かがドライブの設定に干渉するのを止めることはできません。
また、バックアップを正確なパーティションに依存しないように設計する方法もあります。その代わり、システムの各要素(オペレーティングシステム、プログラム、データ、設定)を別々にバックアップする方法を見つけてください。その後、異なるパーティショニングスキームのシステムにリストアすることができます。例えば、Windowsのシステムがあるとします。OSとプログラムはC:ドライブに、個人データはD:ドライブに(2つのパーティションに分かれています)。後で新しいマシンのC:ドライブに両方を復元する必要がある場合でも、そうすることができます。少なくとも、データはすべて無傷です。
パーティションテーブルは繊細な生き物です。上記の作業を行う前に、必ずバックアップをとってください。2種類ある方が良い(例えば、プログラム、設定、ファイルを別々にバックアップしたディスクのクローンコピーなど)。ちょっとしたミスで、システムを起動できない状態にしてしまい、データの復旧が望めなくなることもあります。
上記のようなエラーが出ていませんか?あるいは、信頼できるバックアップ戦略を持っていますか?パーティションテーブルを踏んだ(または踏まなかった)経験について、以下のコメント欄でお聞かせください。