気の向くままに辿るIT/ICT/IoT
システム

GPT / GUID Partition Table

ウェブ造ホーム前へ次へ
GPTとは?

GPT / GUID Partition Table

GPT / GUID Partition Tableとは

 GPTとは、Globally Unique Identifier Partition Tableの略です。

 一般にGlobally Unique Identifierは、GUIDと略して呼ばれることが多いのでGUID Partition Tableと表記されることもあります。

 GUID/Globally Unique IDentifierとは、Microsoft社が提唱するUUID/Universally Unique Identifier(普遍的に一意な識別子)の実装の1つで広範囲に一意として認識可能な識別子といったような意味です。

 BIOS及びMBRパーティションにおいてディスク先頭の512バイト(実質440バイト)に納められるMBRでは、1パーティションとして管理できる総セクタ数が32ビット、1セクタは、512バイトとされてきたので容量は、2TiBとなり、これを超える容量を処理できません。

 これを改善すべく、ハードディスクの物理セクタサイズを512バイトから4KiBに拡張することで理論上16TBまでアクセス可能とすることが近年、一般的になっています。

 一方、GPTは、ハードディスク(やメモリ)などの大容量化に対応すべく、Intel社が提唱したEFI、後にUEFIとしてUnified EFI Forumで策定されるに至った仕様の一部であり、従来のBIOSを置き換えることを想定し、GPT自体は、理論上は、2TiBを遥かに超える8ZiB(8ZB)のハードディスク容量を扱うことができる仕様となっています。

 もちろん、MBRにしろ、GPTにしろ、それらの仕様だけでは、この2TiBを超えるディスクを扱うことはできず、ファイルシステムOS、デバイスドライバ、パーティショニングツールなども、この容量を扱うことができるように対応している必要があります。

 MBRについては、32ビット、64ビット共に近年、1セクタ4Kとする環境が整っている一方、一部ハイブリッド対応も見られますが、何れにせよUEFI/GPTは64ビットCPUが前提となっています。

 また、従来ハードディスク内のパーティションは、BIOSの制約により、最大でも基本パーティション4つ、もしくは、基本パーティション3つと拡張パーティション1つの計4つしかパーティションを作成できませんでした。

 拡張パーティションには、ディスク容量を上限に任意の数の論理パーティションを作成することができますが、パーティション同士を連結する形(芋づる式)で位置情報を保持している関係で途中のパーティションを削除してしまうと以降のパーティション情報も失われてしまうという柔軟性に欠ける部分もあります。

 MBRは、IBM PC/AT互換機に搭載されたBIOSにおいて採用された仕組みでCHS(Cylinder/Header/Sector)といった位置情報をパーティションテーブルに保持し、各パーティションを識別するのに比し、GPT/GUID Partition Tableは、UUID/Universally Unique Identifierを保持し、各パーティションを一意に識別するようになっており、他のパーティションの位置には依存しないのでMBR方式の論理パーティションのような心配は不要です。

 GPTでは、ディスク容量を上限に理論上は無制限、実際のところパーティションテーブルには最大128個の(基本)パーティション分まで書き込む領域が確保されており、GPTに対応したgdiskをはじめとするパーティショニングツールを使うと更にこれを増やすことも可能となっています。

 ただ、単純にGPTに置き換えてしまうと従来のシステムを起動できないのでGPTパーティションがある場合、未フォーマットと誤認されない為にMBRエミュレーションにより、MBRパーティションの限界値2TiBまでの領域を編集することができない1つの未使用領域(使用済みパーティション)として認識されるように工夫されています。

 尚、GPT対応のパーティショニングツールからは見えますし、編集も可能、初期状態、もしくは、設定済みパーティションを初期化すれば、MBRとGPT間で相互に変換すること、MBR方式で構成されたパーティション領域をGPT方式に変換することができるようになっています。

 容量認識をクリアする上での複数の課題もあり、64ビットでは対応しているGPTも32ビットではフルで利用できるケースは極々稀ですし、32ビットから64ビットへの移行期であることから、今後、32ビット環境への対応が進む可能性は極めて低いと考えられます。

 例えば、Windowsの場合、XP(32ビット)は認識すら不可、XP(64ビット)とVista SP1/7/2008/8(32bit)は、認識及びデータ領域としての使用は可である一方、GPTパーティションの作成/編集はできず、その領域にOSがあっても起動はできないことになっています。

 UEFIの前身のEFIの提唱が2000年頃だったこともあり、64ビット版ならWindows Server 2003やWindows Vista、Mac OS Xについても64ビットについては早々に対応している模様です。

 尚、32ビットのWindowsや64ビットでもWindows XPを起動する必要がある場合には、ハイブリッドでも32ビットOSは、32ビットモードで、64ビットOSは、64ビットモードでの起動しかサポートされておらず、そうでない場合には、1つのディスク内でGPTとMBRのパーティションは共存できないものとされているのでMBRパーティションを利用することになります。

 この1つのディスク内でGPTとMBRのパーティションが共存できないというのは、Windowsの制約とされていますが、そもそもMBRはCHT(Cylinder/Header/Sector)で、GPTはUUIDで識別するというディスク(円盤)上にある位置情報の識別方法が異なる為、整合性を保持できないでしょうから妥当な制限と言えるでしょう。

 Linuxについては、32ビット/64ビット問わず、早くからGPTに対応しており、HDDを全て使う場合には、GPT/MBR(UEFI/BIOS)を選択可能、Windowsを含むマルチブート構成とする場合には、既存のWindowsが使用するパーティションを自動的に判別できるようになっているようです。

 尚、Windows自体はマルチブートを考慮しておらず、パーティション分割せずHDD全体、または、1つめのパーティションにインストールされることを想定しているため、以前はそうするしかありませんでしたが、ブートローダとしてGRUB LegacyやGRUB2のドライブマッピング/パーティションマッピングによって他のパーティション内にあっても1つめのパーティションにあるかのようにWindowsに認識させることができるようになっている(仕様上は、必ずしも正確に機能するとは限らないが、たいていの場合、上手く作用するとのことな)ので、こうした制約も過去のものとなっています。

 ちなみに相応の容量のあるUSBメモリ(USBメモリスティック/ペンドライブ/ドングル...etc.)においては、パーティションタイプをGPTとする場合、GPT対応のGRUB2をUSBメモリ全体の先頭、または、特定パーティション内にインストールすることで使用するPCがUEFIかBIOSかに関わらず、USBブートさえすれば、USBメモリ内のGRUB2がGPTを認識してくれるのでパーティション数の制約を気にする必要はありません。(USBメモリ/GPT/GRUB2でのマルチブート)

 ただ、このように重宝するGPTですが、一方で、これを包含するUEFI仕様には、セキュアブートという機能もあり、これが固定だと他のOSをインストールできない為、デフォルトで有効とするならエンドユーザーが簡単に無効にできる機能を提供するか、デフォルトで無効にし、有効にする手段を提供するといった対策が講じられるべきといった意見に対し、そうした機能は搭載されると回答したMicrosoft社でしたが、少なくともWindows 8(32bit)の動作するARM(CPU)マシンにおいてWindows 8を搭載する場合、他のOSを排除することとする旨の通達を出していたことが発覚し、仮にそうした機能があったとしてもベンダーが無効にしてしまう可能性を含め、改めて懸念されています。

ウェブ造ホーム前へ次へ