1. gpt定义
全局唯一标识分区表(guid partition table, 缩写:gpt)是一个实体硬盘的分区表的结构布局的标准。它是可扩展固件接口(uefi)标准的一部分,被用于替代bios系统中使用32bits来存储逻辑块地址和分区大小信息的主引导记录(mbr)分区表。gpt标准使用64bits用于记录逻辑块地址,因此,gpt分区格式在同等逻辑块大小的情况下,比mbr分区格式支持更大的硬盘空间。
2. gpt磁盘格式
gpt分区格式包含传统mbr(主引导记录)、分区表头、分区表、备份分区表头、备份分区表以及数据区。
2.1 传统mbr(lba0)
出处于兼容性与安全性方面的考虑,gpt分区格式保留传统mbr,位于lba0(第一个逻辑扇区),用于防止不支持gpt的硬盘管理软件错误识别并破坏硬盘数据。在这个mbr中,只有一个标志为0xee的分区,以此表示这块硬盘使用gpt分区格式。不支持gpt分区格式的软件,会识别出未知类型的分区;支持gpt分区格式的软件,可正确识别gpt分区磁盘。
2.2 分区表头(lba1)
分区表头记录了磁盘可用空间大小、分区表项大小与个数,备份分区表的位置信息,详细可参见表1。
表1 gpt分区表头格式
起始字节
长度
内容
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个字节)
2.3. 分区表
分区表记录了每个分区的详细信息,包括分区类型guid、分区guid、分区大小与位置信息、分区的名称与属性,详细格式信息见表2。
表2 gpt分区表项的格式
起始字节
长度
内容
0
16字节
分区类型guid
16
16字节
分区guid
32
8字节
起始lba(小端序)
40
8字节
末尾lba
48
8字节
属性标签(如:60表示“只读”)
56
72字节
分区名(可以包括36个utf-16(小端序)字符)
3. 验证
使用本人硬盘验证如下:
3.1 gpt的mbr内容
使用磁盘内容查看工具查看mbr内容,16进制显示如下图所示。可见第一个主分区表项文件系统标识为“0xee”。
3.2 gpt表头
gpt表头内容如下:
3.3 gpt表项
gpt表项内容:
参考链接