GUIDパーティションテーブル

GUIDパーティションテーブル (英: GUID Partition Table, GPT) は、ハードディスクドライブ上のパーティションテーブルの配置に関する標準規格である。 これはインテルの提案しているEFI標準の一部であり、旧来のBIOSで使用されているマスターブートレコード (MBR) の置き換えを意図している。 従来のMBRパーティションが、テーブルのパラメータから、1セクタ512Byteで定義した場合、最大2TiB迄の領域までしか管理できないのに対し、GPTでは、最大8ZiB迄の領域を定義、管理できる。 2013年頃には、PC用として一般に市販のHDDの大容量化で、2T越えが始まっておりGPT導入は必至の課題であったが、マザーボード上のROM内などのシステムソフトウェアのEFI対応もだいたい進んできていたことで、無事に導入が進んだという状況であった。 MBRがマスターブートコード（ブートローダ：起動できるアクティブパーティションを探してプログラムをそこからロードして実行する機械語コードが入っている）で始まるのに対して、GPTはEFIが持つ拡張機能を使ってその処理を実現している。MBRのエントリがディスクの保護と互換性維持の目的で存在しているのに対して、GPTはパーティションテーブル・ヘッダーとしての役割を担っている。 GPTはLogical Block Addressing (LBA) を使ってディスク内の位置を示す。MBRではCHSによって位置を指定していた。古いMBR情報は LBA 0 に含まれていて、GPTヘッダーは LBA 1 に置かれ、その後にパーティションテーブルが続く。Windowsオペレーティングシステム (OS) では、16,384バイト（32セクター、16KiB）がGPT用に予約されていて、LBA 34 から通常の使い方ができるようになっている。 GPTは冗長性も提供している。GPTヘッダーとパーティションテーブルはディスクの先頭と最後部の両方に書き込まれている。 GPTを使用するディスクにもMBRが存在するのは、MBRを前提としたディスクユーティリティを利用した場合の事故の防止のため（誤って何も中身がないと判断されないため）である。MBRにはそのディスク全体がひとつのパーティションになっているという情報が記述されることになっている。 GPT自体がBIOSによるMBRパーティションの代替であるため、そのパーティション識別子はシステムIDとして 0xEE が設定され、GPTを使用していることを示すことになっているが、双方のパーティションテーブルに有効な値を定義し、それをハイブリッドMBRと呼称する向きもある。但し、これはGPTの「MBRパーティションに対する置き換え」という目的から標準化、明示的な定義がされていない実装であり、OSによって扱いが異なる。ハイブリッドMBRの構成では多くの場合GUIDパーティションの方が優先されるが、Windowsをベースとするシステムでは、GPTをサポートするものであっても有効なMBRが存在する場合は、そちらを優先して解釈する。また、本来EFIとセットの実装であるが、MBRからGPTを理解するローダへ処理を移すという手段により、比較的最近のLinuxではEFIが実装されていないシステムであっても、GPTからの起動や利用を可能としている。 パーティションテーブル・ヘッダーでは、ユーザが使用可能なディスクの範囲を定義している。また、パーティションテーブル内のパーティションエントリ数とサイズを定義している。Windowsマシンでは、128エントリであり、それぞれ128バイトである。したがって、最大128個のパーティションを作成できる。 ヘッダーはディスクのGUID (英: Globally Unique Identifier) を含んでいる。また、ヘッダー自身のサイズと位置（常に LBA 1）と、第二GPTヘッダーのサイズと位置（常にディスクの最後のセクター）を記録している。また重要な点として、自身のCRC32チェックサムを持っているので、専用のユーティリティ以外でGPTを変更するとチェックサムと不整合を起こす。チェックサムが不整合を起こすと、EFIは第二GPTを第一GPTにコピーする。第二GPTのチェックサムも不正だった場合はディスクにアクセスできなくなる。 パーティションエントリは単純である。最初の16バイトにパーティションの種類を表すGUIDが書き込まれている。たとえば、EFIシステムパーティションのGUIDは{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}である。ただし先頭3項目（8バイト）は項目内でリトルエンディアンなので、実際には先頭から、28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3Bのように書き込まれている。次の16バイトにはそのパーティション固有のGUIDが書き込まれている。続く8バイトにパーティションの最初のLBA、その次の8バイトにパーティションの最後のLBAがリトルエンディアンで書き込まれている。さらにその後に、パーティション名と属性を書き込めるようになっている。 古いバージョンの32ビット版（x86版）Windowsでは、2TiB以上の容量のディスク、およびGUIDパーティション自体を扱えないという問題がある。これは各ベンダーの32ビット版デバイスドライバに起因する。 Vista以降では、32ビット版でもこれらの問題は修正されている。2TiB以上のパーティションを扱えないのはMBRパーティションの制限である。 下記の表にない、以前のOS（x86版）ではGPTはサポートされない。x86より以前のアーキテクチャでも同様。 IA-64版とx86-64版を列挙している。下記の表にないOS（64ビット版）ではGPTはサポートされない。 IA-64アーキテクチャのOSでは当初から、EFIとGPTからの起動をサポートしている。 [脚注の使い方] ^ a b ユーザーからはGUIDパーティションにアクセス不可。サードパーティー製のツール経由でだけGUIDパーティションにアクセス可能。 ^ この表にあるGUIDはリトルエンディアンで表記されている。例えば、EFIシステムパーティションのGUIDはC12A7328-F81F-11D2-BA4B-00A0C93EC93Bとなっているが、これは次のような16バイトの並びである: 28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B。先頭3ブロックだけバイト順序が入れ替わっている点に注意。 ^ 当初はWindowsのデータパーティションと同じ値を使用していた。のちに変更が提案され、現在に至る。 ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al dm-verityの検証データの保存用 ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak dm-verityの署名データの保存用 ^ Solaris の/usrのGUIDは、macOSでZFS通用GUIDとも使われている。 ^ http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html ^ https://help.ubuntu.com/community/MacBook ^ http://www.rodsbooks.com/gdisk ^ http://refit.sourceforge.net/myths/ ^ a b http://www.microsoft.com/whdc/device/storage/GPT_FAQ.mspx#ELD ^ a b c http://www.rodsbooks.com/gdisk/hybrid.html ^ http://codeidol.com/windows/inside-windows-server-2003/Configuring-Data-Storage/Working-with-GPT-Disks/ Working with GPT Disks ^ UEFI と Windows http://www.microsoft.com/japan/whdc/system/platform/firmware/UEFI_Windows.mspx ^ a b c “Table 5.7 Defined GPT Partition Entry — Partition Type GUIDs, 5. GUID Partition Table (GPT) Disk Layout — UEFI Specification 2.10 documentation” (英語). Unified Extensible Firmware Interface Forum (2022年8月). 2023年10月8日閲覧。 ^ “GNU GRUB Manual 2.04: BIOS installation”. 2021年5月8日閲覧。 ^ “create partition primary”. Microsoft Learn. 2022年9月23日閲覧。 ^ “Discoverable Partitions Specification | UAPI Group Specifications”. The Linux Userspace API (UAPI) Group. 2023年10月1日閲覧。 ^ Smith, Rod (2011年6月23日). “Need for a unique Linux GPT GUID type code (PATCH included)”. bug-parted Archives. 2021年5月8日閲覧。 ^ “985974 – document GPT partition type for LVM” (英語). Red Hat Bugzilla (2016年5月11日). 2023年10月7日閲覧。 ^ Peter Rajnoha (2016年1月19日). “man: mention GPT id for LVM in pvcreate man page (7f6a1e6b)” (英語). team / lvm2 · GitLab. 2023年10月7日閲覧。 ^ a b “LUKS GPT GUID” (英語). NARKIVE. 2023年10月7日閲覧。 ^ a b Rod Smith (srs5694) (2018年7月5日). “Added Ceph and Linux encrypted (LUKS and dm-crypt) partition type codes. · samangh/gptfdisk@8dab6f2” (英語). GitHub. 2023年10月7日閲覧。 ^ “FreeBSD System Manager's Manual gpart(8)”. 2021年8月15日閲覧。 マスターブートレコード (MBR) GUID Unified Extensible Firmware Interface ウィキメディア・コモンズには、GUIDパーティションテーブルに関連するカテゴリがあります。 GUID パーティション テーブル マイクロソフト社のWebサイトにある説明