GUID磁盘分割表

GUID磁盘分割表（GUID Partition Table，缩写：GPT）是使用全局唯一标识符（GUID，也称通用唯一标识符）对物理计算机存储设备（例如硬盘驱动器或固态驱动器）的分区表进行布局的标准。作为统一可扩展固件接口（UEFI）标准的一部分（统一可扩展固件接口论坛建议其为个人电脑BIOS的替代品），由于主引导记录（MBR）分区表的限制，它也被用在一些BIOS。MBR分区表使用32位用于传统512字节磁盘扇区的逻辑区块位址（LBA）。

对于那些扇区为512字节的磁盘，MBR分区表不支持容量大于2.2 TB（2.2×1012字节）的分区。然而，一些硬盘制造商（诸如希捷和西部数据）注意到这个局限性，并且将他们的容量较大的磁盘升级到4 KiB的扇区，这意味着MBR的有效容量上限提升到16 TiB。这个看似“正确的”解决方案，在临时地降低人们对改进磁盘分配表的需求的同时，也给市场带来关于在有较大的块（block）的设备上从BIOS启动时，如何最佳的划分磁盘分区的困惑。GPT分配64位给逻辑块地址，因而使得最大分区大小在264-1个扇区成为可能。对于每个扇区大小为512字节的磁盘，那意味着可以有9.4 ZB（9.4×1021字节=18,446,744,073,709,551,615（264-1）个扇区 × 512字节每扇区）的最大空间。

截止至2010年，大多数操作系统对GPT均有所支持，尽管包括Mac OS X和Windows在内的一些仅支持在EFI基础上自GPT分区启动，见#操作系统支持。

<image>

## 特点

在MBR硬盘中，分区信息直接存储于主引导记录（MBR）中（主引导记录中还存储着系统的引导程序）。但在GPT硬盘中，分区表的位置信息储存在GPT头中。但出于兼容性考虑，硬盘的第一个扇区仍然用作MBR，之后才是GPT头。

跟现代的MBR一样，GPT也使用逻辑区块位址（LBA）取代了早期的CHS寻址方式。传统MBR信息存储于LBA 0，GPT头存储于LBA 1，接下来才是分区表本身。64位Windows操作系统使用16,384字节（或32扇区）作为GPT分区表，接下来的LBA 34是硬盘上第一个分区的开始。

苹果公司曾经警告说：“不要假定所有设备的块大小都是512字节。”一些现代的存储设备如固态硬盘可能使用1024, 2048或4096扇区。

使用英特尔架构的苹果机也使用GPT。

为了减少分区表损坏的风险，GPT在硬盘最后保存了一份分区表的副本。

## 传统MBR (LBA 0)

在GPT分区表的最开头，出于兼容性考虑仍然存储了一份传统的MBR，用来防止不支持GPT的硬盘管理工具错误识别并破坏硬盘中的数据，这个MBR也叫做保护MBR。在支持从GPT启动的操作系统中，这里也用于存储第一阶段的启动代码。在这个MBR中，只有一个标识为0xEE的分区，以此来表示这块硬盘使用GPT分区表。不能识别GPT硬盘的操作系统通常会识别出一个未知类型的分区，并且拒绝对硬盘进行操作，除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。另外，能够识别GPT分区表的操作系统会检查保护MBR中的分区表，如果分区类型不是0xEE或者MBR分区表中有多个项，也会拒绝对硬盘进行操作。

在使用MBR/GPT混合分区表的硬盘中，这部分存储了GPT分区表的一部分分区（通常是前四个分区），可以使不支持从GPT启动的操作系统从这个MBR启动，启动后只能操作MBR分区表中的分区。如早期Boot Camp就是使用这种方式启动Windows 7。

## 分区表头（LBA 1）

分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位Windows Server 2003的机器上，最多可以创建128个分区，即分区表中保留了128个项，其中每个都是128字节。（EFI标准要求分区表最小要有16,384字节，即128个分区项的大小）

分区表头还记录了这块硬盘的GUID，记录了分区表头本身的位置和大小（位置总是在LBA 1）以及备份分区表头和分区表的位置和大小（在硬盘的最后）。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错，如果出错了，可以使用软件从硬盘最后的备份GPT中恢复整个分区表，如果备份GPT也校验错误，硬盘将不可使用。所以GPT硬盘的分区表不可以直接使用16进制编辑器修改。

起始字节｜长度｜内容

0｜8字节｜签名（"EFI PART", 45 46 49 20 50 41 52 54）

8｜4字节｜修订（在1.0版中，值是00 00 01 00）

12｜4字节｜分区表头的大小（单位是字节，通常是92字节，即5C 00 00 00）

16｜4字节｜分区表头（第0－91字节）的CRC32校验，在计算时，把这个字段作为0处理，需要计算出分区序列的CRC32校验后再计算本字段

20｜4字节｜保留，必须是0

24｜8字节｜当前LBA（这个分区表头的位置）

32｜8字节｜备份LBA（另一个分区表头的位置）

40｜8字节｜第一个可用于分区的LBA（主分区表的最后一个LBA + 1）

48｜8字节｜最后一个可用于分区的LBA（备份分区表的第一个LBA − 1）

56｜16字节｜硬盘GUID（在类UNIX系统中也叫UUID）

72｜8字节｜分区表项的起始LBA（在主分区表中是2）

80｜4字节｜分区表项的数量

84｜4字节｜一个分区表项的大小（通常是128）

88｜4字节｜分区序列的CRC32校验

92｜、｜保留，剩余的字节必须是0（对于512字节LBA的硬盘即是420个字节）

主分区表和备份分区表的头分别位于硬盘的第二个扇区（LBA 1）以及硬盘的最后一个扇区。备份分区表头中的信息是关于备份分区表的。

## 分区表项（LBA 2–33）

GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如，EFI系统分区的GUID类型是`{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}`。接下来的16字节是该分区唯一的GUID（这个GUID指的是该分区本身，而之前的GUID指的是该分区的类型）。再接下来是分区起始和末尾的64位LBA编号，以及分区的名字和属性。

起始字节｜长度｜内容

0｜16字节｜分区类型GUID

16｜16字节｜分区GUID

32｜8字节｜起始LBA（小端序）

40｜8字节｜末尾LBA

48｜8字节｜属性标签（如：`60`表示“只读”）

56｜72字节｜分区名（可以包括36个UTF-16（小端序）字符）

## 操作系统支持

### 类Unix操作系统

操作系统｜版本｜平台｜读写支持｜启动支持｜备注

FreeBSD｜7.0以后｜IA-32、x86-64、ARM｜是｜是｜在MBR/GPT混合硬盘中，可以同时使用GPT和MBR分区标识。

Linux｜大多数x86架构的Linux发行版 Fedora 8+、Ubuntu 8.04+｜IA-32、x86-64｜是｜是｜诸如gdisk、GNU Parted、util-linux v2.23+ fdisk、SYSLINUX、安装补丁后的GRUB 0.96和GRUB 2等新工具均已支持GPT。

macOS｜10.4.0以后（一些功能要到10.4.6以后）｜IA-32、x86-64、PowerPC、Apple芯片｜是｜是｜只有搭载英特尔芯片和Apple芯片的计算机支持GPT启动。

MidnightBSD｜0.4-CURRENT以后｜IA-32、x86-64｜是｜需要CSM｜在MBR/GPT混合硬盘中，可以同时使用GPT和MBR分区标识。

Solaris｜Solaris 10以后｜IA-32、x86-64、SPARC｜是｜是

HP-UX｜HP-UX 11.20以后｜IA-64｜是｜是

### 32位Windows

系统版本｜发售日期｜平台｜读写支持｜启动支持｜备注

Windows XP｜2001-10-25｜IA-32｜否｜否

Windows Server 2003｜2003-04-24｜IA-32｜否｜否

Windows Server 2003 SP1｜2005-03-30｜IA-32｜是｜否｜在MBR/GPT混合硬盘中优先使用MBR。

Windows Vista｜2006-07-22｜IA-32｜是｜否｜在MBR/GPT混合硬盘中优先使用MBR。

Windows Server 2008｜2008-02-27｜IA-32｜是｜否｜在MBR/GPT混合硬盘中优先使用MBR。

Windows 7｜2009-10-22｜IA-32｜是｜否｜在MBR/GPT混合硬盘中优先使用MBR。

Windows 8｜2012-08-01｜IA-32｜是｜需要UEFI｜在MBR/GPT混合硬盘中优先使用MBR。

Windows 8.1｜2013-08-27｜IA-32｜是｜需要UEFI｜在MBR/GPT混合硬盘中优先使用MBR。

Windows 10｜2015-07-29｜IA-32｜是｜需要UEFI｜在MBR/GPT混合硬盘中优先使用MBR。

### 64位Windows

系统版本｜发售日期｜平台｜读写支持｜启动支持｜备注

Windows XP Professional x64 EditionWindows Server 2003｜2005-04-25｜x64｜是｜否｜在MBR/GPT混合硬盘中优先使用MBR。

Windows Server 2003｜2005-04-25｜IA-64｜是｜是｜在MBR/GPT混合硬盘中优先使用MBR。

Windows Vista｜2006-07-22｜x64｜是｜需要UEFI｜在MBR/GPT混合硬盘中优先使用MBR。

Windows Server 2008｜2008-02-27｜x64｜是｜需要UEFI｜在MBR/GPT混合硬盘中优先使用MBR。

Windows Server 2008｜2008-02-27｜IA-64｜是｜是｜在MBR/GPT混合硬盘中优先使用MBR。

Windows 7｜2009-10-22｜x64｜是｜需要UEFI｜在MBR/GPT混合硬盘中优先使用MBR。

Windows Server 2008 R2｜2009-10-22｜IA-64｜是｜是｜在MBR/GPT混合硬盘中优先使用MBR。

Windows 8Windows Server 2012｜2012-08-01｜x64｜是｜需要UEFI｜在MBR/GPT混合硬盘中优先使用MBR。

Windows 8.1｜2013-08-27｜x64｜是｜需要UEFI｜在MBR/GPT混合硬盘中优先使用MBR。

Windows 10｜2015-07-29｜x64｜是｜需要UEFI｜在MBR/GPT混合硬盘中优先使用MBR。

Windows Server 2016｜2016-10-12｜x64｜是｜需要UEFI｜在MBR/GPT混合硬盘中优先使用MBR。

Windows 11｜2021-10-05｜x64、ARM64｜在MBR/GPT混合硬盘中优先使用MBR。

## 分区类型GUID

相关操作系统｜分区类型｜GUID

（None）｜未使用｜00000000-0000-0000-0000-000000000000

MBR分区表｜024DEE41-33E7-11D3-9D69-0008C781F39F

EFI系统分区｜C12A7328-F81F-11D2-BA4B-00A0C93EC93B

BIOS引导分区｜21686148-6449-6E6F-744E-656564454649

Windows｜微软保留分区｜E3C9E316-0B5C-4DB8-817D-F92DF00215AE

基本数据分区linwin｜EBD0A0A2-B9E5-4433-87C0-68B6B72699C7

逻辑软盘管理工具元数据分区｜5808C8AA-7E8F-42E0-85D2-E1E90434CFB3

逻辑软盘管理工具数据分区｜AF9B60A0-1431-4F62-BC68-3311714A69AD

Windows恢复环境｜DE94BBA4-06D1-4D40-A16A-BFD50179D6AC

IBM通用并行文件系统（GPFS）分区｜37AFFC90-EF7D-4e96-91C3-2D7AE055B174

HP-UX｜数据分区｜75894C1E-3AEB-11D3-B7C1-7B03A0000000

服务分区｜E2A1E728-32E3-11D6-A682-7B03A0000000

Linux｜数据分区linwin｜0FC63DAF-8483-4772-8E79-3D69D8477DE4

RAID分区｜A19D880F-05FC-4D3B-A006-743F0F84911E

交换分区｜0657FD6D-A4AB-43C4-84E5-0933C84B4F4F

逻辑卷轴管理员（LVM）分区｜E6D6D379-F507-44C2-A23C-238F2A3DF928

保留｜8DA63339-0007-60C0-C436-083AC8230908

FreeBSD｜启动分区｜83BD6B9D-7F41-11DC-BE0B-001560B84F0F

数据分区｜516E7CB4-6ECF-11D6-8FF8-00022D09712B

交换分区｜516E7CB5-6ECF-11D6-8FF8-00022D09712B

UFS分区｜516E7CB6-6ECF-11D6-8FF8-00022D09712B

Vinum volume manager分区｜516E7CB8-6ECF-11D6-8FF8-00022D09712B

ZFS分区｜516E7CBA-6ECF-11D6-8FF8-00022D09712B

macOSDarwin｜HFS (HFS+) 分区｜48465300-0000-11AA-AA11-00306543ECAC

Apple UFS 容器｜55465300-0000-11AA-AA11-00306543ECAC

APFS 卷宗容器APFS 型 FileVault 卷宗容器｜7C3457EF-0000-11AA-AA11-00306543ECAC

ZFS｜6A898CC3-1DD2-11B2-99A6-080020736631

Apple RAID 分区｜52414944-0000-11AA-AA11-00306543ECAC

Apple RAID 离线分区｜52414944-5F4F-11AA-AA11-00306543ECAC

Apple 开机卷宗 (恢复模式)｜426F6F74-0000-11AA-AA11-00306543ECAC

Apple 卷标｜4C616265-6C00-11AA-AA11-00306543ECAC

Apple TV 恢复分区｜5265636F-7665-11AA-AA11-00306543ECAC

Apple Core Storage 卷宗容器 HFS+ 型 FileVault 卷宗容器｜53746F72-6167-11AA-AA11-00306543ECAC

SoftRAID_Status｜B6FA30DA-92D2-4A9A-96F1-871EC6486200

SoftRAID_Scratch｜2E313465-19B9-463F-8126-8A7993773801

SoftRAID_Volume｜FA709C7E-65B1-4593-BFD5-E71D61DE9B02

SoftRAID_Cache｜BBBA6DF5-F46F-4A89-8F59-8765B2727503

Solaris｜启动分区｜6A82CB45-1DD2-11B2-99A6-080020736631

根分区｜6A85CF4D-1DD2-11B2-99A6-080020736631

交换分区｜6A87C46F-1DD2-11B2-99A6-080020736631

备份分区｜6A8B642B-1DD2-11B2-99A6-080020736631

/usr分区solmac｜6A898CC3-1DD2-11B2-99A6-080020736631

/var分区｜6A8EF2E9-1DD2-11B2-99A6-080020736631

/home分区｜6A90BA39-1DD2-11B2-99A6-080020736631

备用扇区｜6A9283A5-1DD2-11B2-99A6-080020736631

保留分区｜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

NetBSDnetbsd｜交换分区｜49F48D32-B10E-11DC-B99B-0019D1879648

FFS分区｜49F48D5A-B10E-11DC-B99B-0019D1879648

Log-structured File System (BSD)分区｜49F48D82-B10E-11DC-B99B-0019D1879648

RAID分区｜49F48DAA-B10E-11DC-B99B-0019D1879648

concatenated分区｜2DB519C4-B10F-11DC-B99B-0019D1879648

加密分区｜2DB519EC-B10F-11DC-B99B-0019D1879648

- guidord本表中的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部分的字节序被交换了。
- linwinlinwin Linux过去和Windows的数据分区使用相同的类型GUID（基本数据分区：EBD0A0A2-B9E5-4433-87C0-68B6B72699C7），这对在UEFI GPT配置下的双启动系统造成了一些问题。新的类型GUID（Linux数据分区：0FC63DAF-8483-4772-8E79-3D69D8477DE4）被引入以解决这一问题
- solmacsolmac Solaris系统中`/usr`分区的GUID在Mac OS X上被用作普通的ZFS分区。
- netbsd具体定义见 src/sys/sys/disklabel_gpt.h。NetBSD的GUID在单独定义之前曾经使用过FreeBSD的GUID。

## MBR与GPT互相转换

### Windows操作系统

在Win10 1703及更高版本，执行命令“mbr2gpt /convert /disk:盘号 /allowfullos”

或者使用DiskGenius等软件将MBR转换为GPT。

## 外部链接

- Microsoft TechNet: Disk Sectors on GPT Disks
- Microsoft TechNet: Using GPT Drives on x86-64 Systems
- Apple Developer Connection: Secrets of the GPT
- Make the most of large drives with GPT and Linux
- GPT fdisk : Information on Hybrid GPT-MBR, Converting MBR and BSD disklabels to GPT and Booting from GPT disks
- Microsoft : FAQs on Using GPT disks in Windows
- A forum post describing steps to modify existing Windows x64 BIOS-MBR based installations to boot from UEFI-GPT