「プライマリパーティション」と「拡張パーティション」の違い

あと「論理ドライブ」も

初めてパーティションの操作をしようとしたときに、まず引っかかる疑問は、
「プライマリパーティション」と「拡張パーティション」が何かということだと思います。

容量とか、ファイルシステムなんてのは、
パーティションの操作以前に、いろんな所で目にしますから、
ある程度予備知識があることが多いです。

でも、「プライマリパーティション」と「拡張パーティション」については、
文字通りパーティションの種類なので、
パーティションに関する操作をするまでは、ほとんど目にすることがありません。

ディスクの管理

これは「ディスクの管理」の画像ですが、
3つの「プライマリパーティション」と、1つの「拡張パーティション」、
さらに、「拡張パーティション」の中に「論理ドライブ」が1つある状態です。

なぜこうなっているのか、何が違うのか、個別に説明していきます。

「プライマリパーティション」とは何か

「プライマリパーティション」は、最も原始的なパーティションです。
ほとんどのパーティションは、プライマリパーティションです。
何も意識することなく使っているとすれば、多分それはプライマリパーティションです。

MBRのパーティションテーブルには、パーティションの情報を4つまで格納できます
そもそもMBR自体が、たった1セクタ分のデータサイズしかないので、
パーティションテーブルに保存できる情報量にも限りがあるわけで。
従って、1つの記憶装置に対し、4つまでプライマリパーティションを作成することができます。
※ちなみに、「Windows 9x」系のOSでは、プライマリパーティションは1つしか作成できませんでした。

プライマリパーティションは、起動ドライブとして指定することができます
逆に、起動ドライブとして設定できるのも、プライマリパーティションだけです。
起動ドライブとして指定されたパーティションを、アクティブパーティションと言います。

なお、GPTにはこの制限はありません
パーティションテーブルに保存できる情報量が大幅に増えたからです。
作成可能なパーティションは最大128個と、
パーティションの数については上限を気にしなくていいほどになっています。

「拡張パーティション」とは何か

「拡張パーティション」は、「論理ドライブ」を格納するためのパーティションです。
箱を入れるための箱みたいなもので、
それ単体では存在価値のない、特殊なパーティションです。
プライマリパーティションとは違い、ちょっと複雑な構造をしています。
拡張パーティション自体に直接ファイルを保存することはできません。

また、拡張パーティションは、1つの記憶装置内に1つしか作成できません
仮に複数の拡張パーティションを作成できたとしても、意味がありません。

先に、1つの記憶装置に対し、パーティションは4つまでしか作成できないと書きました。
このルールには、拡張パーティションも従います。
つまり、1つの記憶装置に対し、
プライマリパーティションと拡張パーティションは、合わせて4つまでしか作成できません

ただし、拡張パーティション内に作成できる「論理ドライブ」を用いると、
4つを超えた領域を確保することが可能になります。

「論理ドライブ」とは何か

「論理ドライブ」は、「拡張パーティション」の中に作成できるドライブです。
パーティションのようにふるまいますが、厳密には他のパーティションとは違います。

論理ドライブは、数に制限なく作成できます
そんな細切れにする必要があるかどうかは別として、
ドライブレターが枯渇するほど領域を作ることも可能です。
ただし、論理ドライブは拡張パーティションの中にしか作成できません
それは、拡張パーティションという特別区域があるおかげだからです。

1つの記憶装置につきパーティションを4つまでしか作成できないのは、
パーティションテーブルのデータサイズがパーティション4つ分しかないからです。
では、論理ドライブに関する情報はどこに保存されているのでしょうか?
もちろん、MBRのパーティションテーブルではありません。

論理ドライブが、拡張パーティションの中でだけ作成できるのは、
拡張パーティションと論理ドライブのブートセクタが特殊だからです。
ここから先、ちょっとややこしい話になってきますので、眠たい人は読み飛ばしてください。

「拡張パーティション」と「論理ドライブ」の構造

拡張パーティションには、EBR(拡張ブートレコード)というブートセクタがあります。
別名、EPBR(拡張パーティションブートレコード)
位置的にはブートセクタっぽいんですが、内容的にはMBRに近いです。
つまり、EBRの中にパーティションテーブルがあります
論理ドライブの領域情報は、MBRではなく、EBRの中に書かれているのです。

そして、拡張パーティションの中にある論理ドライブには、
プライマリパーティションと同様、ブートセクタがあります。
拡張パーティションのEBRと、論理ドライブのブートセクタが一対になって、
初めて1つのドライブとして認識されている
わけです。

ちなみに、論理ドライブを複数作成した場合は、
それぞれの論理ドライブの直前に、自動的にEBRが作られます。
EBRとブートセクタは、必ず一対になっています。

EBRの中には、直後の論理ドライブの領域情報と、次のEBRの位置が記されています。
つまり、拡張パーティションとは、
EBR同士を参照することで論理ドライブを特定する仕組みのこと
なのです。

言葉だけだとわかりにくくてしょうがないので、図にしてみました。

拡張パーティションの模式図

拡張パーティションと論理ドライブの構造は、このようになっています。
ユーザーが作成する拡張パーティションは1つだけですが、
内部的には、論理ドライブの数だけ拡張パーティションが存在しているのと同じです。
そして、それらが入れ子になっているイメージです。

プライマリパーティションの模式図

比較対照として、プライマリパーティションの構造も図にしてみました。
こちらは、拡張パーティションと違って単純でわかりやすいです。

これらのパーティションとは別に、記憶装置の先頭セクタにMBRがあり、
MBRの中にあるパーティションテーブルに、各パーティションの情報が書かれています。

ちなみに、GPTディスクの場合は、パーティションの管理は文字通りGPTによって行われるので、
拡張パーティションのような特殊な構造を必要としません。
従って、GPTディスクで作成できるのは、プライマリパーティションだけです。