数据恢复专题:GPT 磁盘分区,USB 的工作模式(10)
前言
本节将进行学习 GPT(GUID Partition Table 全局唯一标识分区表)与三种 U 盘的工作模式。
知识点总览
GPT 磁盘分区的特点
GPT 磁盘分区的结构
U 盘 的工作模式
- HDD 模式
- FDD 模式
- ZIP 模式
GPT 磁盘分区的特点
GPT 是 GUID Partition Table 的缩写,其含义为“全局唯一标识磁盘分区表”,GUID 是 “全局唯一标识符(Globally Unique Identifier)”的缩写
GPT 分区有如下特点:
目前能够支持 GPT 磁盘分区的操作系统有
| 系统名称 | 备注 |
| :—————————————————- | ————————- |
| Windows Server 2008 64 位 及以后版本 | |
| Windows XP 64 位 | 无法作为 efi 引导 |
| Windows 7 64 位 及以后版本 | |
| MacOS X | |
| Linux | |理论上,GPT 磁盘在长度上最大可达 264 个逻辑块,每个逻辑块容量一般为 512 字节,最大分区(磁盘)容量受操作系统版本的影响。Windows XP 和 Windows Server 2003 的原始版本中,每个区物理磁盘的最大容量为 2TB。对于 Windows Server 2003 SPI、Windows XP x64 版本及以后的版本,支持最大原始分区为 18EB。
EFI 规范对分区数量几乎没有限制,但是 Windows 实现限制的分区数量为 128 个。
与支持最大卷为 2 TB(Terabytes)并且每个磁盘最多有 4 个主分区(或 3 个主分区,1 个扩展分区和无限制的逻辑驱动器)的 MBR 磁盘分区的样式相比,GPT磁盘分区样式支持最大为 128 个分割,一个分割最大 18 EB(Exabytes),只受到操作系统限制(由于分区表本身需要占用一定空间,最初规划硬盘分区时,留给分区表的空间决定了最多可以有多少个分区,IA-64版 Windows 限制最多有 128 个分区,这也是EFI标准规定的分区表的最小尺寸)。与 MBR 分区的磁盘不同,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT 分区磁盘有备份分区表来提高分区数据结构的完整性。在UEFI系统上,通常是通过 ESP 分区中的 EFI 应用程序文件启动 GPT 硬盘上的操作系统,而不是活动主分区上的引导程序。
GPT 中分区表的存储空间大小会限制分区数量。
Windows Server 2008 等操作系统只能在 GPT 磁盘分区上进行数据操作,只有基于 Itanium 的 Windows 系统才能从 GPT 分区上启动。
GPT 和 MBR 结构可以在支持 GPT 的系统上混合使用,但支持 EFI 的系统要求启动分区位于 GPT 磁盘上,另一个硬盘可以是 MBR,也可以是 GPT。
在系统支持的情况下可以将 MBR 磁盘转换为 GPT 磁盘,但是只有在磁盘为空的情况下才可以将 GPT 磁盘转换为 MBR 磁盘,否则会清空所有数据。
GPT 磁盘尾部存有分区表备份。在磁盘的首尾部分存有相同的分区表,当其中一份被破坏后,可以通过另一份进行修复。
GPT 磁盘分区的结构
原上传者为英语维基百科的Kbolino - Transferred from en.wikipedia to Commons. Transfer was stated to be made by User:Kbolino.
- CC BY-SA 2.5
- File:GUID Partition Table Scheme.svg
- 创作时间:2007 年 1 月 27 日 (原始上传日期)
保护 MBR
保护 MBR 位于 GPT 磁盘的第 1 个扇区,即 0 号扇区,由磁盘签名、MBR 磁盘分区表和结束标志组成,如下图所示。
GPT 头
GPT 头位于 GPT 磁盘的第 2 个扇区,即 1 号扇区,该磁盘是创建 GPT 磁盘时生成的,GPT 头会定义分区表的起始位置、分区表的结束位置、每个分区表项的大小、分区表项的个数及分区表的校验和等信息,如下图所示。
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 磁盘的最后一个扇区,当前值为 83,886,079。
⑧28H ~ 2FH。长度为 8 字节,是 GPT 分区区域的起始扇区号,当前值为 34,GPT 分区区域通常都是起始于 GPT 磁盘的 34 号扇区。
⑨30H ~ 37H。长度为 8 字节,是 GPT 分区区域的结束扇区号,当前值为 83,886,046。
⑩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 字节,保留不用。
分区表
分区表位于 GPT 磁盘的 2 ~ 33 号扇区,一共占用 32 个扇区,能够容纳 128 个分区表项,每个分区表项大小为 128 字节。因为每个分区表项管理一个分区,所以 Windows 系统允许 GPT 磁盘创建 128 个分区。
每个分区表项中记录着分区的起始和结束地址、分区类型的 GUID、分区名字、分区属性和分区 GUID。
分区表项中各个参数的含义
对这些参数具体分析如下。
①00H ~ 0FH。长度为 16 字节,用来描述分区类型,其类型可以是前面提到过的 EFI 系统分区(ESP)、微软保留分区(MSR)、LDM 元数据分区、LDM 数据分区、OEM 分区、主分区。
GPT 头备份
GPT 头有一个备份,放在 GPT 磁盘的最后一个扇区,但这个 GPT 头备份并不是 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 头备份所在扇区号,当前值为 83,886,079 号扇区,也就是 GPT 磁盘的最后一个扇区。
⑦20H ~ 27H。长度为 8 字节,是 GPT 头的所在扇区号,当前值为 1 号扇区,也就是 GPT 磁盘的第二个扇区。
⑧28H ~ 2FH。长度为 8 字节,是 GPT 分区区域的起始扇区号,当前值为 34,GPT 分区区域通常都是起始于 GPT 磁盘的 34 号扇区。
⑨30H ~ 37H。长度为 8 字节,是 GPT 分区区域的结束扇区号,当前值为 83,886,046。
⑩38H ~ 47H。长度为 16 字节,是 GPT 磁盘的 GUID。
⑪ 48H ~ 4FH。长度为 8 字节,表示 GPT 分区表备份的起始扇区号,当前值为 83,886,047,这也是分区区域结束地址的下一个扇区,GPT 分区表备份通常都是起始于 GPT 磁盘分区区域结束地址的下一个扇区。
⑫50H ~ 53H。长度为 4 字节,表示分区表项的个数。Windows 系统限定 GPT 分区个数为 128,每个分区占用一个分区表项,所以该值为 128。
⑬54H ~ 57H。长度为 4 字节,每个分区表项占用字节数,该值固定为 128。
⑭58H ~ 5BH。长度为 4 字节,是分区表的 CRC 校验和。
⑮5CH ~ 1FFH。长度为 420 字节,保留不用。
分区表备份
分区区域结束后,紧跟着就是分区表的备份,其地址在 GPT 头备份扇区中有描述。
分区表备份是对分区表 32 个扇区的完整备份。如果分区表被破坏,系统会自动读取分区表备份,也就能够保证正常地识别分区。
“GPT 分区表备份起始扇区号”参数的值就是分区表备份所在的扇区号了。当前值为 83,886,047,跳转到该扇区,看到的内容与 GPT 磁盘的 2 号扇区中分区表完全一样:
Winhex 本身并没有提供 GPT 磁盘各数据结构的模板,文章中出现的模板为《数据恢复技术深度揭秘(第二版)》中随书附赠的光盘中所提供的。
U 盘的工作模式
HDD 模式
将 U 盘模拟成硬盘模式,现在大多数 U 盘默认就是这个模式,该模式下多为 MBR 磁盘分区格式,也可以支持 GPT 分区。
在这个模式下,U 盘的逻辑数据上与硬盘无差别,可以进行正常分区,支持多个分区(Windows 7 及以下的版本无法在资源管理器访问多个分区)。
在 DiskGenius 中查看该模式下磁盘的图表为常规硬盘:
特别注意:如果选择了 HDD 模式,那么这个启动 U 盘启动后的盘符是 C,在对启动分区进行操作时就容易产生很多问题,比如:装系统时安装程序会把启动文件写到 U 盘而不是你硬盘的启动分区!导致系统安装失败。所以请尽量先选择 ZIP 模式;
FDD 模式
将 U 盘模拟成软驱模式,这个模式下的分区类型为“无法分区的”磁盘,因为在底层情况下,0 扇区被替换为了分区的 DBR。
用 Winhex 打开 FDD 模式下的 U 盘(可以是虚拟分区),后可以看到 DBR 位于磁盘的 0 扇区。
在 DiskGenius 中可以看到该模式下磁盘的图标为 FDD 软驱:
这个模式的 U 盘在一些支持 USB-FDD 启动的机器上启动时会找不到 U 盘,所以请酌情使用;
ZIP 模式
将 U 盘模拟成 ZIP 驱动器模式,在底层情况下,这种模式使用的是 MBR 磁盘分区格式,其中首个分区的位置在磁盘的 32 号扇区。
在 DiskGenius 中查看该模式下磁盘的图标为 Zip Drive(极碟):
另外如果 U 盘容量超过了 256M,就只能用 HDD 模式,小于等于 256M 可以用 ZIP 模式。