GUID 分区表
From Wikipedia, the free encyclopedia
In computer hardware, GUID 分区表 (GPT) 是物理硬盘分区表的一种标准. 它是由Intel提出的用于替代从IBM PC上遗留下来的古老 PC BIOS 的 Extensible Firmware Interface (EFI) 标准的一部分. EFI 使用 GPT 而 BIOS 使用 Master Boot Record (MBR).
Contents |
[edit] 特点
现今的 PC BIOS 构架使用 Master Boot Record (MBR) 来进行磁盘的初始化过程. MBR 开头是一段 Master Boot Code 主启动代码, 包含一段用于识别和引导激活的启动分区的可执行二进制文件. PC BIOS的替代物, EFI, 自身就带有这种能力同时还保留了向下兼容性, GPT 保留 MBR 项在磁盘的第一个扇区,然后是主分区表头- GPT的真正的开头.
GPT 是用现代的 logical block addressing (LBA) 来代替 MBR 使用的 cylinder-head-sector (CHS) 地址. 传统 MBR 信息包含在 LBA 0, GPT 位于 LBA 1, 分区表紧随其后. 在64位 Windows 操作系统中, 16,384 字节, 或者说 32 扇区, 被预留给 GPT, 因此 LBA 34 是磁盘上第一个可以使用的扇区.
GPT 同时支持冗余. GPT 表头和分区表同时被写在磁盘的开头和结尾.
[edit] 传统 MBR (LBA 0)
磁盘开头的 MBR 的目的是防止基于MBR的磁盘工具错误识别或者写入 GPT 磁盘. 其将整个的 GPT 分区描述成一个单个分区. 这个分区的系统 ID 被设置为 0xEE, 以指明其使用 GPT. 因此, EFI 忽略 MBR. 一些 32-位 不能支持 GPT 磁盘的操作系统只识别 ID 而将整个盘识别为不可用的 GPT 磁盘. 旧式的操作系统将该磁盘认作是包含一个未知格式的分区并且没有可用空间, 并且通常他们会拒绝修改该分区除非有显式的的要求删除该分区. 这样的结构用以防止意外的清除分区数据.
[edit] 分区表头 (LBA 1)
分区表头定义了可以被用户使用的区块. 它同时也定义了分区表中分区项的数量和大小. 在 64-位 Windows Server 2003 计算机中, 保留有 128 个分区项, 每个长 128 字节. 因此, 最多可以创建 128 个分区.
表头包含了磁盘的 GUID (全局唯一标识). 其记录了其自身的大小和位置 (通常在 LBA 1) 以及第二个 GPT 表头和分区表的位置 (通常在磁盘的最后一个扇区). 重要的是, 它还包含一个对其自身和分区表的 CRC32 校验码, 在启动时用于 EFI 的验证. 由于 EFI 使用并且验证这个校验码, 所以不要使用 8 进制编辑器来修改 GPT. 这样的修改会导致校验码失效. 这种情况下, EFI 会使用第二个 GPT 覆盖重写第一个, 或者, 如果两个 GPT 都包含无效校验码, 将无法读写磁盘.
| 偏移 | 长度 | 内容 |
|---|---|---|
| 0 | 8 bytes | 签名 ("EFI PART", 45 46 49 20 50 41 52 54) |
| 8 | 4 bytes | 版本号 (For version 1.0, the value is 00 00 01 00) |
| 12 | 4 bytes | 表头大小 (in bytes, always 5C 00 00 00 meaning 92 bytes) |
| 16 | 4 bytes | 表头的CRC32校验值 (cyclic redundancy check) |
| 20 | 4 bytes | 预留, 必须为0 |
| 24 | 8 bytes | 主 LBA (这个 LBA, 通常为 1) |
| 32 | 8 bytes | 备份 LBA (通常与磁盘最后的 LBA 相同) |
| 40 | 8 bytes | 第一个对分区可用的 LBA (分区表最后的 LBA + 1) |
| 48 | 8 bytes | 最后一个可用的 LBA (备份 LBA - 分区表大小 - 1) |
| 56 | 16 bytes | 磁盘 GUID (在类UNIX系统中被称为 UUID) |
| 72 | 8 bytes | 分区项起始 LBA (通常紧靠表头, 2) |
| 80 | 4 bytes | 分区项数量 |
| 84 | 4 bytes | 一个分区项大小 (通常为 128) |
| 88 | 4 bytes | 分区列表的 CRC32 值 |
| 92 | 420 bytes | 预留, 必须为0 |
| 512 | TOTAL | |
[edit] 分区项 (LBA 2–33)
分区项是简单的由前到后的. 开头的16 字节指明了分区类型 GUID. 比如说, EFI系统分区的 GUID 是 {C12A7328-F81F-11D2-BA4B-00A0C93EC93B}. 第二个 16 字节该分区唯一的 GUID. 开头和结尾的 64-位 LBA a也记录于此, 以及分区名称和属性. 不幸的是, there is no central registry for GUID partition type designators, either de jure or de facto.
| 偏移 | 长度 | 内容 |
|---|---|---|
| 0 | 16 bytes | 分区类型 GUID |
| 16 | 16 bytes | 分区唯一 GUID |
| 32 | 8 bytes | 起始 LBA (little-endian) |
| 40 | 8 bytes | 结束 LBA (inclusive, usually odd) |
| 48 | 8 bytes | 属性标志 (e.g. bit 60 denotes read-only) |
| 56 | 72 bytes | 分区名称 (36 UTF-16LE code units) |
| 128 | 总计 | |
[edit] Partition type GUIDs
| Assoc. OS | Partition type | Globally-Unique Identifier (GUID) |
|---|---|---|
| (None) | Unused entry | 00000000-0000-0000-0000-000000000000 |
| MBR partition scheme | 024DEE41-33E7-11D3-9D69-0008C781F39F | |
| EFI System Partition | C12A7328-F81F-11D2-BA4B-00A0C93EC93B | |
| BIOS Boot Partition | 21686148-6449-6E6F-744E-656564454649 | |
| Windows | Microsoft Reserved Partition | E3C9E316-0B5C-4DB8-817D-F92DF00215AE |
| Basic Data Partition[2] | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 | |
| Logical Disk Manager metadata partition | 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 | |
| Logical Disk Manager data partition | AF9B60A0-1431-4F62-BC68-3311714A69AD | |
| HP-UX | Data partition | 75894C1E-3AEB-11D3-B7C1-7B03A0000000 |
| Service Partition | E2A1E728-32E3-11D6-A682-7B03A0000000 | |
| Linux | Data partition[2] | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 |
| RAID partition | A19D880F-05FC-4D3B-A006-743F0F84911E | |
| Swap partition | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F | |
| Logical Volume Manager (LVM) partition | E6D6D379-F507-44C2-A23C-238F2A3DF928 | |
| Reserved | 8DA63339-0007-60C0-C436-083AC8230908 | |
| FreeBSD | Boot partition | 83BD6B9D-7F41-11DC-BE0B-001560B84F0F |
| Data partition | 516E7CB4-6ECF-11D6-8FF8-00022D09712B | |
| Swap partition | 516E7CB5-6ECF-11D6-8FF8-00022D09712B | |
| Unix File System (UFS) partition | 516E7CB6-6ECF-11D6-8FF8-00022D09712B | |
| Vinum volume manager partition | 516E7CB8-6ECF-11D6-8FF8-00022D09712B | |
| ZFS partition | 516E7CBA-6ECF-11D6-8FF8-00022D09712B | |
| Mac OS X | Hierarchical File System (HFS+) partition | 48465300-0000-11AA-AA11-00306543ECAC |
| Apple UFS | 55465300-0000-11AA-AA11-00306543ECAC | |
| ZFS[3] | 6A898CC3-1DD2-11B2-99A6-080020736631 | |
| Apple RAID partition | 52414944-0000-11AA-AA11-00306543ECAC | |
| Apple RAID partition, offline | 52414944-5F4F-11AA-AA11-00306543ECAC | |
| Apple Boot partition | 426F6F74-0000-11AA-AA11-00306543ECAC | |
| Apple Label | 4C616265-6C00-11AA-AA11-00306543ECAC | |
| Apple TV Recovery partition | 5265636F-7665-11AA-AA11-00306543ECAC | |
| Solaris | Boot partition | 6A82CB45-1DD2-11B2-99A6-080020736631 |
| Root partition | 6A85CF4D-1DD2-11B2-99A6-080020736631 | |
| Swap partition | 6A87C46F-1DD2-11B2-99A6-080020736631 | |
| Backup partition | 6A8B642B-1DD2-11B2-99A6-080020736631 | |
| /usr partition[3] | 6A898CC3-1DD2-11B2-99A6-080020736631 | |
| /var partition | 6A8EF2E9-1DD2-11B2-99A6-080020736631 | |
| /home partition | 6A90BA39-1DD2-11B2-99A6-080020736631 | |
| EFI_ALTSCTR | 6A9283A5-1DD2-11B2-99A6-080020736631 | |
| Reserved partition | 6A945A3B-1DD2-11B2-99A6-080020736631 | |
| 6A9630D1-1DD2-11B2-99A6-080020736631 | ||
| 6A980767-1DD2-11B2-99A6-080020736631 | ||
| 6A96237F-1DD2-11B2-99A6-080020736631 | ||
| 6A8D2AC7-1DD2-11B2-99A6-080020736631 | ||
| NetBSD[4] | Swap partition | 49F48D32-B10E-11DC-B99B-0019D1879648 |
| FFS partition | 49F48D5A-B10E-11DC-B99B-0019D1879648 | |
| LFS partition | 49F48D82-B10E-11DC-B99B-0019D1879648 | |
| RAID partition | 49F48DAA-B10E-11DC-B99B-0019D1879648 | |
| concatenated partition | 2DB519C4-B10F-11DC-B99B-0019D1879648 | |
| encrypted partition | 2DB519EC-B10F-11DC-B99B-0019D1879648 |
- ^ The GUIDs in this table are written assuming a little-endian byte order. For example, the GUID for an EFI System partition is written as C12A7328-F81F-11D2-BA4B-00A0C93EC93B here, which corresponds to the 16 byte sequence 28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B — only the first three blocks are byte-swapped.
- a b Linux and Windows use the same GUID for their respective data partitions.
- a b
The GUID for
/usron Solaris is used as a generic GUID for ZFS by Mac OS X. - ^ Definitions are in src/sys/sys/disklabel_gpt.h. NetBSD had used the FreeBSD GUIDs before unique NetBSD-specific GUIDs were created.
[edit] See also
[edit] External links
- Microsoft TechNet: Disk Sectors on GPT Disks
- Microsoft TechNet: Using GPT Drives on x86-64 Systems
- Apple Developer Connection: Secrets of the GPT


