之前讲过,磁盘的分区方式有两种,MBRGPTMBR方式通过在启动扇区的分区表中记录分区的开始和结束位置来管理分区,由于分区表最多包含4项,且采用32位数据来表示分区偏移和大小,造成的主分区的个数限制,以及分区大小的限制。现在,硬盘容量越来越大,也变得廉价的多,为了管理超过2TB的大硬盘和分区,显然基本MBR分区方式已经无法满足要求了,且MBR分区方式无法满足UEFI主板系统的要求。

GPT,即GUID分区表,顾名思义,即使用GUID来表示每个分区,GPT磁盘用唯一的GUID来表示,磁盘分区使用唯一的分区GUID来表示。GPT分区表中,每个分区表项使用128字节,其中包括分区的GUID,分区的偏移、大小,分区的名称、类型等,并且所有这些信息只占用了92个字节,所以分区表项还保留了对未来的兼容性。GPT分区表项使用648字节数表示分区的偏移、大小,支持18千兆兆字节的分区大小,这已经远远超过我们现在的磁盘和分区容量了。

为了兼容不支持GPT磁盘的操作系统,GPT分区格式保留了磁盘第一个扇区MBR的使用,并且也填写MBR的第一个分区表项,这个扇区又被称为保护MBR,而实际上EFI根本不使用这个分区表。在第一个分区表项中,分区开始扇区为1,分区大小扇区数为FFFFFFFF,分区类型为0xEE,它的目的是使计算机认为这个磁盘是合法的,并且已经被划分了分区,从而使系统不再试图重新初始化或格式化磁盘。

真正的GPT区域从硬盘的第二个扇区即1号扇区开始,主要包括GPT头、分区表、GPT分区、分区表备份、GPT头备份这几个部分。GPT磁盘布局如下图所示。

Windows基本磁盘结构简析(四)——GPT磁盘_基本磁盘

GPT头:也称为EFI信息区,从硬盘1号扇区开始,占用1个扇区的空间,其中记录了磁盘的GUID,当前GPT头的位置和GPT头备份的位置,分区表的开始扇区、分区表项的个数以及每个分区表项的大小,GPT头校验和,GPT分区表校验和等。GPT结构如下图所示:

Windows基本磁盘结构简析(四)——GPT磁盘_GPT分区_02

分区表:分区表一般从2号扇区开始,占用32个扇区,即从GPT头之后一个扇区开始。理论上,GPT磁盘上可以创建任意多个主分区,但是由于在初始化GPT磁盘上,只给GPT分区表保留了32个扇区,且每个分区表项128个字节,所以最多也只能创建128个分区,而128个分区也就足够了。分区表项中包含分区的开始、结束位置,类型GUID,分区GUID,名字,属性标志等内容。分区表项结构如下图所示。

Windows基本磁盘结构简析(四)——GPT磁盘_基本磁盘_03

GPT分区:GPT分区有不同的分区类型,每种类型都在分区表项中使用类型GUID来标识,主要包括微软保留分区、OEM保留分区、LDM元数据分区、LDM数据分区、EFI系统分区、主分区。Windows使用保留分区来存放临时文件、配置数据,以及保留兼容性,或者其他用途。LDM元数据分区、LDM数据分区用户动态GPT磁盘,元数据分区即LDM数据库,包含动态磁盘和动态卷的配置信息,LDM数据分区包含所有动态卷,用来划分数据卷。EFI系统分区中存在系统引导文件,类似于MBR磁盘的活动分区。主分区是普通的数据分区,也是唯一一种普通用户能够在我的电脑里看见的分区。这几种分区的类型ID如下图所示。

Windows基本磁盘结构简析(四)——GPT磁盘_GPT分区_04