特点
跟现代的MBR一样,GPT也使用逻辑区块地址(LBA)取代了早期的CHS寻址方式。传统MBR信息存储于LBA0,GPT头存储于LBA1,接下来才是分区表本身。64位Windows操作系统使用16,384字节(或32扇区)作为GPT分区表,接下来的LBA34是硬盘上第一个分区的开始。
苹果公司曾经警告说:“不要假定所有设备的块大小都是512字节。”一些现代的存储设备如固态硬盘可能使用1024字节的块,一些磁光盘(MO)可能使用2048字节的扇区(但是磁光盘通常是不进行分区的)。一些硬盘生产商在计划生产4096字节一个扇区的硬盘,但截至2010年初,这种新硬盘使用固件对操作系统伪装成512字节一个扇区。使用英特尔架构的苹果机也使用GPT。为了减少分区表损坏的风险,GPT在硬盘最后保存了一份分区表的副本。
分区方法
GPT分区的一大优势就是针对不同的数据建立不同的分区,同时为不同的分区创建不同的权限。就如其名字一样,GPT能够保证磁盘分区的GUID唯一性,所以GPT不允许将整个硬盘进行复制,从而保证了磁盘内数据的安全性。想比与我们目前通常使用的MBR分区,GPT本身就有着得天独厚的优势。在图像生成模块,利用全新的编码器-解码器架构,实现从一张图片生成关于该图片的短文本描述;在连接模块,主要利用集束搜索算法对模块一输出部分以及模块三的输入端进行改进,将更多的图像信息融入文本中;在文本生成模块,改进了最新的语言模型GPT-2,用于生成长文本(童话故事)。
GPT分区的创建或者更改其实并不麻烦,但是一块硬盘如果想从MBR分区转换成GPT分区的话,就会丢失硬盘内的所有数据。所以我们在更改硬盘分区格式之前需要先将硬盘备份,然后使用Windows自带的磁盘管理功能或者使用DiskGenius等磁盘管理软件就可以轻松地将硬盘转换成GPT(GUID)格式,转换完成后,我们就可以真正开始系统的安装过程了。
传统MBR(LBA0)
在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR,用来防止不支持GPT的硬盘管理工具错误识别并破坏硬盘中的数据,这个MBR也叫做保护MBR。在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。不能识别GPT硬盘的操作系统通常会识别出一个未知类型的分区,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。另外,能够识别GPT分区表的操作系统会检查保护MBR中的分区表,如果分区类型不是0xEE或者MBR分区表中有多个项,也会拒绝对硬盘进行操作。
在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区。如Boot Camp就是使用这种方式启动Windows。
分区表头
分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节,即128个分区项的大小)
分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总是在LBA1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。所以GPT硬盘的分区表不可以直接使用16进制编辑器修改。
分区表头的格式
主分区表和备份分区表的头分别位于硬盘的第二个扇区(LBA1)以及硬盘的最后一个扇区。备份分区表头中的信息是关于备份分区表的。
分区表项(LBA2–33)
GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。