GPT 和 MBR¶
1 GPT(GUID partition table) 磁盘分区的结构原理¶
- 文章来源: https://www.dgxue.com/huifu/124.html
GPT 磁盘由 6 部分结构组成,如图 4-200 所示。
图 4-200 GPT 磁盘的结构
1.1 保护 MBR¶
保护 MBR 位于 GPT 磁盘的第一个扇区,也就是 0 号扇区,由磁盘签名、MBR 磁盘分区表和结束标志组成,如图 4-201 所示。
图 4-201 保护 MBR
在保护 MBR 扇区中没有引导程序,分区表内只有一个表项,这个表项描述一个类型为 0xEE 的分区,分区起始地址是 1 号扇区,大小为四个字节所能存储的最大值(FF FF FF FF)。该分区的存在可以使计算机认为这个磁盘是合法的,并且已被使用,从而不再去试图对其进行分区、格式化等操作,而 EFI 根本不使用这个分区表。
1.2 GPT 头¶
GPT 头位于 GPT 磁盘的第二个扇区,也就是 1 号扇区,该扇区是在创建 GPT 磁盘时生成的,GPT 头会定义分区表的起始位置、分区表的结束位置、每个分区表项的大小、分区表项的个数及分区表的校验和等信息。
图 4-202 所示是一个 GPT 头扇区。
图 4-202 GPT 头扇区
GPT 头中各个参数的含义见表 4-15。
表 4-15 GPT 头中各个参数的含义
再用模板的形式看一下 GPT 头的结构参数,如图 4-203 所示。
图 4-203 GPT 头的结构参数模板
对这些参数具体分析如下。
①00H~07H。长度为 8 字节,是 GPT 头的签名,十六进制为“45 46 49 20 50 41 52 54”,ASCII 码为“EFI PART”。
②08H~0BH。长度为 4 字节,表示版本号。
③0CH~0FH。长度为 4 字节,是 GPT 头的总字节数,当前值为 92,说明 GPT 头占用 92 字节。
④10H~13H。长度为 4 字节,是 GPT 头的 CRC 校验和。
⑤14H~17H。长度为 4 字节,保留不用。
⑥18H~1FH。长度为 8 字节,表示 GPT 头所在扇区号,通常为 1 号扇区,也就是 GPT 磁盘的第二个扇区。
⑦20H~27H。长度为 8 字节,是 GPT 头备份的所在扇区号,也就是 GPT 磁盘的最后一个扇区,当前值为 2 503 871。
⑧28H~2FH。长度为 8 字节,是 GPT 分区区域的起始扇区号,当前值为 34,GPT 分区区域通常都是起始于 GPT 磁盘的 34 号扇区。
⑨30H~37H。长度为 8 字节,是 GPT 分区区域的结束扇区号,当前值为 2 503 838。
⑩38H~47H。长度为 16 字节,是 GPT 磁盘的 GUID。
⑪ 48H~4FH。长度为 8 字节,表示 GPT 分区表的起始扇区号,当前值为 2,GPT 分区表通常都是起始于 GPT 磁盘的 2 号扇区。
⑫50H~53H。长度为 4 字节,表示分区表项的个数。Windows 系统限定 GPT 分区个数为 128,每个分区占用一个分区表项,所以该值为 128。
⑬54H~57H。长度为 4 字节,每个分区表项占用字节数,该值固定为 128。
⑭58H~5BH。长度为 4 字节,是分区表的 CRC 校验和。
⑮5CH~1FFH。长度为 420 字节,保留不用。
1.3 分区表¶
分区表位于 GPT 磁盘的 2~33 号扇区,一共占用 32 个扇区,能够容纳 128 个分区表项,每个分区表项大小为 128 字节。因为每个分区表项管理一个分区,所以 Windows 系统允许 GPT 磁盘创建 128 个分区。
每个分区表项中记录着分区的起始和结束地址、分区类型的 GUID、分区名字、分区属性和分区 GUID,图 4-204 是一个 GPT 磁盘 2 号扇区的四个分区表项。
图 4-204 四个分区表项
分区表项中各参数的含义见表 4-16。
表 4-16 分区表项中各个参数的含义
再用模板的形式看一下分区表项的结构参数,如图 4-205 所示。
图 4-205 分区表项的模板
对这些参数具体分析如下。
①00H~0FH。长度为 16 字节,用来描述分区类型,其类型可以是前面提到过的 EFI 系统分区(ESP)、微软保留分区(MSR)、LDM 元数据分区、LDM 数据分区、OEM 分区、主分区。
微软公司为 GPT 分区定义的类型见表 4-17。
表 4-17 微软公司定义的分区类型
分区类型
GUID
微软保留分区(MSR)
16 E3 C9 E3 5C 0B B8 4D 81 7D F9 2D F0 02 15 AE
LDM 元数据分区
AA C8 08 58 8F 7E E0 42 85 D2 E1 E9 04 34 CF B3
LDM 数据分区
A0 60 9B AF 31 14 62 4F BC 68 33 11 71 4A 69 AD
主分区
A2 A0 D0 EB E5 B9 33 44 87 C0 68 B6 B7 26 99 C7
Intel 公司为 GPT 分区定义的类型见表 4-18。
表 4-18 InteI 公司定义的分区类型
分区类型
GUID
未分配
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
EFI 系统分区
C1 2A 73 28 F8 1F 11 D2 BA 4B 00 A0 C9 3E C9 3B
含 DOS 分区表的分区
02 4D EE 41 33 E7 11 d3 9D 69 00 08 C7 81 F3 9F
②10H~1FH。长度为 16 字节,是分区表的 GUID,这个 GUID 对于分区来讲是唯一的。
③20H~27H。长度为 8 字节,是分区的起始地址,用 LBA 地址表示,在分区表项 1 中该值为 34,说明第一个分区开始于 GPT 磁盘的 34 号扇区。
④28H~2FH。长度为 8 字节,是分区的结束地址,用 LBA 地址表示,在分区表项 1 中该值为 65 569,说明第一个分区结束于 GPT 磁盘的 65 569 号扇区。
⑤30H~37H。长度为 8 字节,是分区的属性。
⑥38H~7FH。长度为 72 字节,是分区的名称,用 Unicode 码表示。例如,在第一个分区表项中分区名为“Microsoft reserved partition”,说明这是一个微软保留分区;第二个分区表项中分区名为“Basic data partition”,说明这是一个基本数据分区,也就是主分区。
1.4 分区区域¶
GPT 分区区域通常都是起始于 GPT 磁盘的 34 号扇区,是整个 GPT 磁盘中最大的区域,由多个具体分区组成,如 EFI 系统分区(ESP)、微软保留分区(MSR)、LDM 元数据分区、LDM 数据分区、OEM 分区、主分区等。分区区域的起始地址和结束地址由 GPT 头定义。
1.5 GPT 头备份¶
GPT 头有一个备份,放在 GPT 磁盘的最后一个扇区,但这个 GPT 头备份并不是 GPT 头的简单复制,它们的结构虽然一样,但其中的参数却有一些区别。
图 4-206 所示是一块 GPT 磁盘的最后一个扇区,也就是其 GPT 头的备份。
图 4-206 GPT 头的备份
GPT 头备份中各个参数的含义如图 4-207 所示。
图 4-207 GPT 头备份的结构参数模板
对这些参数具体分析如下。
①00H~07H。长度为 8 字节,是 GPT 头的签名,十六进制为“45 46 49 20 50 41 52 54”,ASCII 码为“EFI PART”。
②08H~0BH。长度为 4 字节,表示版本号。
③0CH~0FH。长度为 4 字节,是 GPT 头备份的总字节数。当前值为 92,说明 GPT 头备份占用 92 字节。
④10H~13H。长度为 4 字节,是 GPT 头备份的 CRC 校验和。
⑤14H~17H。长度为 4 字节,保留不用。
⑥18H~1FH。长度为 8 字节,表示 GPT 头备份所在扇区号,当前值为 2 503 871 号扇区,也就是 GPT 磁盘的最后一个扇区。
⑦20H~27H。长度为 8 字节,是 GPT 头的所在扇区号,当前值为 1 号扇区,也就是 GPT 磁盘的第二个扇区。
⑧28H~2FH。长度为 8 字节,是 GPT 分区区域的起始扇区号,当前值为 34,GPT 分区区域通常都是起始于 GPT 磁盘的 34 号扇区。
⑨30H~37H。长度为 8 字节,是 GPT 分区区域的结束扇区号,当前值为 2 503 838。
⑩38H~47H。长度为 16 字节,是 GPT 磁盘的 GUID。
⑪ 48H~4FH。长度为 8 字节,表示 GPT 分区表备份的起始扇区号,当前值为 2 503 839,这也是分区区域结束地址的下一个扇区,GPT 分区表备份通常都是起始于 GPT 磁盘分区区域结束地址的下一个扇区。
⑫50H~53H。长度为 4 字节,表示分区表项的个数。Windows 系统限定 GPT 分区个数为 128,每个分区占用一个分区表项,所以该值为 128。
⑬54H~57H。长度为 4 字节,每个分区表项占用字节数,该值固定为 128。
⑭58H~5BH。长度为 4 字节,是分区表的 CRC 校验和。
⑮5CH~1FFH。长度为 420 字节,保留不用。
1.6 分区表备份¶
分区区域结束后,紧跟着就是分区表的备份,其地址在 GPT 头备份扇区中有描述。
分区表备份是对分区表 32 个扇区的完整备份。如果分区表被破坏,系统会自动读取分区表备份,也就能够保证正常地识别分区。
在图 4-207 中“GPT 分区表备份起始扇区号”参数的值就是分区表备份所在的扇区号了。当前值为 2 503 839,跳转到该扇区,看到的内容与 GPT 磁盘的 2 号扇区中分区表完全一样,其如图 4-208 所示。
图 4-208 分区表备份
其模板如图 4-209 所示。
图 4-209 分区表备份的模板
WinHex 本身并没有提供 GPT 磁盘各数据结构的模板,这需要读者自己根据对 GPT 磁盘数据结构的掌握写出这些模板。
2 分区表 GPT 和 MBR 有什么区别¶
文章来源: https://zhuanlan.zhihu.com/p/114350934
2.1 关于 GPT¶
GUID 分区表(简称 GPT。使用 GUID 分区表的磁盘称为 GPT 磁盘) 与普遍使用的主引导记录 (MBR) 分区方案相比,GPT 提供了更加灵活的磁盘分区机制。
优点是支持 2TB 以上的大硬盘;每个磁盘的分区个数几乎没有限制,分区大小也几乎没有限制。
2.2 关于 MBR¶
MBR 分区表(master boot record)的英文缩写,简称主引导记录,还可以叫做主引导扇区。它的运行机制存在于硬件的基础之上,它存储在硬盘的第一个扇区上。当我们在硬盘上安装 win10 系统时,win10 操作系统的分区软件可以将 MBR 分区信息写入到硬盘中保存起来。
优点就是兼容性比较好,缺点就是不支持管理大硬盘结构。
2.3 GPT 和 MBR 两者的区别¶
1、MBR 分区表最多只能识别 2TB 左右的空间,大于 2TB 的容量将无法识别从而导致硬盘空间浪费;GPT 分区表则能够识别 2TB 以上的硬盘空间。
2、MBR 分区表最多只能支持 4 个主分区或三个主分区 +1 个扩展分区 (逻辑分区不限制);GPT 分区表在 Windows 系统下可以支持 128 个主分区。
3、在 MBR 中,分区表的大小是固定的;在 GPT 分区表头中可自定义分区数量的最大值,也就是说 GPT 分区表的大小不是固定的。
何选择?
建议一:新买的电脑是传统的 BIOS 主板,那建议继续使用 MBR 硬盘模式;若是 UEFI 主板的话,则继续使用 GPT。
建议二:如果需要重装系统,在重装前了解清楚所安装的系统版本是否支持 MBR 或者 UEFI,这就是所谓的“兼容性”。
但是,不管是新旧系统版本,或是 32/64 位系统,它们都能同时兼容 MBR。相反,不是所有的 windows 版本都兼容 GPT!一定要注意了!