案例基本情况描述

用户的一块数据备份硬盘,容量30GB,在Windows Vista系统下使用,被用做GPT磁盘,分两个区,第一个分区作为工具备份区,第二个分区是数据备份区,用户把一些重要数据放在该分区。

因为一次突然断电,用户再次启动计算机后发现备份盘的两个盘符都不见了,两个分区内的数据无法访问。

把该硬盘接到数据恢复工作机上,工作机安装的是Windows Server 2003 SP2系统,能够支持GPT磁盘。进入系统打开磁盘管理,看到硬盘的状态为“没有初始化”,如图4-210中的“磁盘2”所示。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-210 硬盘的状态为“没有初始化”

数据丢失的原因分析

硬盘的状态成为“没有初始化”,自然就无法访问硬盘中的分区了,那么是什么原因使该硬盘变为“没有初始化”的状态呢?这可能是因为用户的计算机在突然断电时,破坏了硬盘的MBR扇区,也就是GPT磁盘的保护MBR,硬盘才会显示为“没有初始化”。

用WinHex打开这块硬盘,查看MBR,其内容如图4-211所示。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-211 MBR扇区

该硬盘的第一个扇区全部为“00”,而在GPT磁盘中第一个扇区应该是个保护MBR,内部会有磁盘签名、分区表和“55 AA”标志。分区表中只使用一个分区表项,描述一个分区类型为“EE”、大小为“FF FF FF FF”的分区。

GPT磁盘的第二个扇区应该是GPT头,从第三个扇区开始为分区表,而往下翻动发现该硬盘这几个扇区也都为“00”,说明在计算机断电的瞬间把GPT磁盘前部的一些扇区都清零了,这正是分区丢失的原因。

数据恢复的思路及方法

找到了分区丢失的原因所在,下面开始动手恢复数据。

因为GPT磁盘对其内部分区的管理依靠三个部分:保护MBR、GPT头、分区表,保护MBR的作用是告诉计算机系统这是一块GPT磁盘,系统应该遵循GPT磁盘的结构对该硬盘进行访问;GPT头的作用是对GPT磁盘的结构做一个大概描述,包括一些关键结构的位置、大小及校验;而分区表则是直接管理分区的,包括分区的起始地址、结束地址、分区名、校验等。这三部分中,GPT头和分区表又是至关重要的,所以系统对这两个结构都做了备份,放在GPT磁盘的末尾。这些备份轻易不会遭受破坏,那么现在可以跳转到GPT磁盘的最后一个扇区,看看GPT的备份是否还在。

用WinHex跳转到硬盘的最后一个扇区,其内容如图4-212所示。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-212 硬盘的最后一个扇区

通过分析能够确认这个扇区是一个很完整的GPT头备份,其参数可以通过模板来查看,如图4-213所示。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-213 GPT头备份的模板

在GPT头备份扇区内描述了GPT分区表备份的起始扇区,从图4-213中可以看到当前值为60 058 623,跳转到该扇区看一下,其内容如图4-214所示。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-214 60 058 623号扇区

60 058 623号扇区内果然是分区表,并且有三个分区表项,第一个是微软保留分区,第二个和第三个是基本数据分区,也就是用户的两个分区了,其参数的模板如图4-215所示。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-215 分区表参数模板

第一个分区是微软保留分区,这个分区对用户来讲没有什么用处,从模板中的参数看其大小约为128MB;其后才是用户的数据分区,从模板中看用户的第一个数据分区开始于262 178号扇区,目前硬盘数据的破坏应该达不到这个位置。跳转到262 178号扇区查看一下,其内容如图4-216所示。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-216 262 178号扇区

可以看出这是一个NTFS文件系统的DBR,正是分区的开始扇区,说明没有遭受破坏。

既然GPT头备份和分区表备份都在,用户的数据分区也没有遭受破坏,那么恢复数据就变得很容易了。有很多种方法可以恢复该硬盘的数据,下面讲解两种直接在原硬盘上修复的方法。

创建保护MBR

因为目前GPT磁盘的GPT头备份和分区表备份都完好无损地存放在GPT磁盘的末尾,所以只要给GPT磁盘创建一个保护MBR,按照GPT磁盘的管理机制。系统如果读取不到GPT头和分区表,就会自动去读取GPT头备份和分区表备份,也就能够识别分区了。

创建保护MBR的方法是用WinHex打开该硬盘,在第一个扇区内填写磁盘签名、类型为“EE”的保护分区及结束标志“55 AA”,而不能用磁盘管理将磁盘转换为GPT磁盘的方式创建保护MBR。因为这样做系统不但创建了保护MBR,还会同时创建GPT头、微软保留分区、GPT头备份及分区表备份,就会把原来的备份覆盖了。

保护MBR中的磁盘签名可以任意写4字节,保护分区中的数值按照图4-217中的值填写,同时别忘记在扇区末尾写“55 AA”。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-217 创建保护MBR

数值填写完毕之后存盘,其他结构不用修复,然后重新启动计算机,用户丢失的两个分区就出现了,数据完好无损,如图4-218所示。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-218 丢失的两个分区恢复成功

完整修复

在方法(1)中利用了GPT磁盘的管理特点,仅仅创建了保护MBR,然后让系统去读取备份的GPT头和分区表获得分区信息,虽然也能让硬盘正常工作,但毕竟缺失了GPT头和分区表还是不太完整的。现在我们来完整修复保护MBR、GPT头和分区表。

保护MBR的修复方法与方法(1)中一样,就不再重复了。

①修复GPT头。

GPT头应该位于GPT磁盘的1号扇区,GPT头备份在GPT磁盘的最后一个扇区,首先把GPT头备份复制到1号扇区,然后修改几个参数即可。GPT头备份的参数模板如图4-219所示。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-219 GPT头备份的参数模板

图4-219中圈出了需要修改的参数,修改以后的GPT头参数模板如图4-220所示。

GPT磁盘分区丢失的恢复实例-数据恢复迷

图4-220 修改以后的GPT头参数模板

GPT头的CRC校验和不能直接使用GPT头备份中的数值,可以通过CRC校验算法具体计算该值,也可以随意写4字节。因为该硬盘不是系统引导盘,只是数据存储盘,GPT头的CRC校验和错误对数据不会有什么影响。

其他三个参数根据GPT磁盘的结构原理具体修改即可,比较简单就不再重复了。

②修复分区表。

分区表的修复非常简单,直接把GPT磁盘60 058 623扇区的分区表备份复制到2号扇区即可,不用做任何修改。

全部修复完毕后存盘并重启系统,数据也就恢复成功了。