更新时间:2024-09-28 09:25
全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体磁盘的分区表的结构布局的标准。它是可扩展固件接口(EFI)标准(被Intel用于替代个人计算机的BIOS)的一部分,被用于替代BIOS系统中的一32bits来存储逻辑块地址和大小信息的主引导记录(MBR)分区表。
全局唯一标识分区表的出现是为了替代旧式的MBR。对于那些扇区为512字节的磁盘,MBR分区表不支持容量大于2.2TB(2.2 × 10字节)的分区,然而,一些硬盘制造商(诸如希捷和西部数据)注意到了这个局限性,并且将他们的容量较大的磁盘升级到了4KB的扇区,这意味着MBR的有效容量上限提升到了8.8TB。这个看似“正确的”解决方案,在临时地降低了人们对GPT的需求的同时,也给市场带来了,关于在有较大的块(block)的设备上从BIOS启动时,如何最佳的划分磁盘分区的困惑。
苹果公司曾经警告说:“不要假定所有设备的块大小都是512字节。”一些现代的存储设备如固态硬盘可能使用1024字节的块,一些磁光盘(MO)可能使用2048字节的扇区(但是磁光盘通常是不进行分区的)。一些硬盘生产商在计划生产4096字节一个扇区的硬盘,但截至2010年初,这种新硬盘使用固件对操作系统伪装成512字节一个扇区。
GPT作为MBR的继任者,正是为了解决MBR所带来的诸多限制。
在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。
跟现代的MBR一样,GPT也使用逻辑区块地址(LBA)取代了早期的CHS寻址方式。传统MBR信息存储于LBA 0,GPT头存储于LBA 1,接下来才是分区表本身。64位Windows操作系统使用16,384字节(或32扇区)作为GPT分区表,接下来的LBA 34是硬盘上第一个分区的开始。
为了减少分区表损坏的风险,GPT在硬盘最后保存了一份分区表的副本。
总的来说,GPT都将修复 MBR 的许多限制:
在GPT分区表的最开头,出于兼容性考虑仍然存储了一份传统的MBR(LBA 0),这个MBR也叫做保护性MBR(Protective MBR)。
保护性MBR保护GPT磁盘不受以前发布的MBR磁盘工具(比如FDISK或WindowsNT磁盘管理器)的危害。这些工具不能感知GPT,也无法正确地访问GPT磁盘。不能识别GPT的旧软件在访问GPT磁盘时只解释保护性MBR。这些工具通过解释保护性MBR,将GPT磁盘看成一个封装的(可能无法识别)分区,而不是错误地当成一个未分区的磁盘,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。例如,当在32位的Windows XP系统中挂载GPT磁盘时,会将其识别为“GPT 保护分区(GPT Protective Partition)”,并且用户无法对这个分区进行任何操作(除非使用命令行工具),这是因为32位的Windows XP并不支持GPT,它仅仅只是知道挂载的是一个GPT磁盘而已。
在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。
另外,能够识别GPT分区表的操作系统会检查保护MBR中的分区表,如果分区类型不是0xEE或者MBR分区表中有多个项,也会拒绝对硬盘进行操作。
在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区。如Boot Camp就是使用这种方式启动Windows。
分区表头(LBA 1)定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节,即128个分区项的大小)
分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总是在LBA 1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。所以GPT硬盘的分区表不可以直接使用16进制编辑器修改。
主分区表和备份分区表的头分别位于硬盘的第二个扇区(LBA 1)以及硬盘的最后一个扇区。备份分区表头中的信息是关于备份分区表的。
LBA 2–33的位置存放的是分区表项。GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。
能在所有基于x64平台上用作存储卷,包括运行Windows XP Professional x64 Edition的平台。从Windows Server 2003 SP1开始,GPT磁盘也可用作基于x86的Windows平台上的存储卷。
可用作基于x64的Windows 7、Windows Vista和Windows Server 2008版本上的引导卷。从Windows Server 2003 SP1开始,GPT磁盘也可用作基于Itanium的系统上的引导卷。
尽管GPT规范对分区数量几乎没有限制。但是,Windows实现限制的分区数量为128个。GPT中的分区项的保留空间大小会限制分区数量。对于Windows Server 2003 SP1、Windows XP x64版本及更新的版本,支持的最大原始分区为18EB。(Windows文件系统目前的限制为每个256TB)。
注1:此处混合硬盘指MBR/GPT混合硬盘。
Mac OS X 10.4或者更高的版本都支持挂载GPT磁盘。
使用英特尔架构的苹果机也使用GPT。
Linux内核必须提供GPT支持,以便对磁盘分区上的数据提供访问。幸运的是,长久以来,Linux一直包含这种支持。
注:以上表中GUID为小端格式。