超大容量硬盘数据恢复之GPT分区模式详解
2013-12-14 19:36:17 来源:华军科技数据恢复
随着大容量硬盘的大幅度降价,高清视频成为主流,很多用户都购买了3TB、4TB以上的硬盘,但是大容量硬盘在刚购买回来使用过程中,用户经常遇到一个问题,就是这么大容量的硬盘,分区成了用户头疼的问题,使用普通分区模式MBR,只能最大只能支持2TB的容量的硬盘。
今天笔者向大家介绍另外一种分区模式GPT。GPT分区模式可以支持容量2TB以上的超大容量硬盘。
与主启动记录 (MBR) 分区方法相比,GPT 具有更多的优点:
它允许每个磁盘有多达 128 个分区(MBR磁盘最多只能有4个主分区,或者3个主分区加一个扩展分区和无限制的逻辑驱动器)。
允许将主磁盘分区表和备份磁盘分区表用于冗余。
支持唯一的磁盘和分区 ID (GUID)。
性能更加稳定。
GPT磁盘总体布局
可以在运行带有Service Pack 1 (SP1) 的 Windows Server 2003的磁盘管理中进行MBR与GPT磁盘的相互转换,然后进行相应的分区操作。也可以使用 DiskPart.exe 命令行实用程序或 EFI 固件实用程序 Diskpart.efi 在基本 GPT 磁盘上创建分区。
一个转换为GPT并建立分区后的磁盘,总体布局如图1所示。

图 1 GPT磁盘总体布局
我们可以看到,一个GPT磁盘可以分为两大部分:保护MBR和EFI部分。
(1)第一部分只由0号扇区组成,在这个扇区中包含一个DOS分区表,分区表内只有一个表项,这个表项描述了一个类型值为0xEE的分区,大小为整个磁盘(如图2所示)。这个分区的存在可以使计算机认为这个磁盘是合法的,并且已被使用,从而不再试图对其进行格式化等操作,所以该扇区又被称为“保护MBR”。实际上,EFI根本不使用这个分区表。

图 2 GPT磁盘的0号扇区
(2)另一部分为EFI部分,EFI部分又可以分为4个区域:EFI信息区(又称为GPT头)部分、分区表部分、GPT分区部分和备份区域。
EFI信息区,也称为GPT头,起始于磁盘的1号扇区,通常只占用这一个扇区。GPT磁盘创建后,由GPT头定义分区表的位置和大小。Windows限定分区表项为128个。GPT头还包含头和分区表的校验和,这样就可以及时发现错误或者改变。
分区表区域包含分区表项。这个区域由GPT头定义,一般占用磁盘2~33号扇区。分区表中的每个表项由起始和结束地址、类型值、名字、属性标志和GUID值组成。分区表建立后,128位的GUID对系统来说是唯一的。
分区部分是最大的区域,由分配给分区的扇区组成。这个区域的起始和结束地址由GPT头定义。
备份区域位于磁盘的尾部,包含GPT头和分区表的备份。它占用GPT结束扇区和EFI结束扇区之间的33个扇区。其中最后一个扇区用来备份1号扇区的EFI信息,其余的32个扇区用来备份2~33号扇区的分区表。
数据结构
1. EFI信息扇区数据结构
EFI信息扇区位于磁盘的1号扇区,也称为GPT头。GPT磁盘创建后,由GPT头定义分区表的位置和大小,Windows限定分区表项为128个。GPT头还包含头和分区表的校验和。EFI信息扇区的结构如表2.1所示。
相对字节偏移
(十六进制)
|
字节数
|
说明
|
00~07
|
8
|
签名(ASCII码“EFI PART”
|
08~0B
|
4
|
版本
|
|
4
|
GPT头大小字节数
|
10~13
|
4
|
GPT头CRC校验和
|
14~17
|
4
|
保留
|
18~
|
8
|
当前GPT头的LBA扇区号,也即为EFI区域起始扇区号
|
20~27
|
8
|
GPT头备份LBA扇区号,也即为EFI区域结束扇区号
|
28~
|
8
|
GPT分区区域起始LBA
|
30~37
|
8
|
GPT分区区域结束LBA
|
38~47
|
12
|
磁盘GUID
|
48~
|
8
|
GPT分区表起始LBA
|
50~53
|
4
|
分区表项数
|
54~57
|
4
|
每分区表项占用字节数
|
58~5B
|
4
|
分区表CRC校验和
|
|
366
|
保留
|
表2.1 EFI信息扇区结构
通过这些结构中的描述值,我们可以确定GPT头、分区表、GPT分区区域、分区表的备份位置等结构布局。图2.3显示了一个GPT头的实例。

图2.3 GPT头
具体分析如下:
1) 0x00~0x07:8个字节,GPT头签名“4546492050415254”,ASCII码为“EFI PART”。
2) 0x08~0x0B:4个字节,版本号。
3) 0x0C ~0x0F :4个字节,GPT头大小字节数,此处的值为0x5C ,即92个字节。
4) 0x10~0x13:4个字节,GPT头校验和。
5) 0x14~0x17:4个字节,保留。
6) 0x18~0x1F :8个字节,当前GPT头的LBA扇区号,即EFI区域起始扇区号,通常为1。
7) 0x20~0x27: 8个字节,GPT头备份位置的LBA扇区号,即EFI区域结束扇区号,此处的值为224909(0x086E8D)。
8) 0x28~0x2F :8个字节,GPT分区区域起始LBA扇区号,此处的值为34(0x22)。
9) 0x30~0x37:8个字节,GPT分区区域结束LBA扇区号,此处的值为224876(0x036E6C )。
10)0x38~0x47:16个字节,磁盘GUID。
11)0x48~0x4F :8个字节,GPT分区表起始LBA扇区号,此处的值为2(0x02),通常都是起始于2号扇区。
12)0x50~0x53:4个字节,分区表项数,限定为128(0x80)。
13)0x54~0x57:4个字节,每分区表项占用字节数,固定为128(0x80)。
14)0x58~0x5B:4个字节,分区表CRC校验和。
15)0x5C ~0x1FF:420个字节,保留。
笔者在此主要侧重讲有关GPT数据恢复方面的知识,看不明白没关系,假如GPT分区模式硬盘分区丢失了,可以联系我们华军行,我们有更加专业的数据恢复工程师为您服务!