平时遇到的误Ghost情况有两种,一种是误用了带Ghost功能的XP安装盘,这种安装盘会重建分区表,把你的硬盘分为四个区,然后把XP系统Ghost到C盘;第二种是利用Ghost备份还原系统,本应把备份还原到C分区,但一不小心还原到整个硬盘上了。这两种操作的实质是一样的,都改写了硬盘的分区表,而且向硬盘覆盖了一些数据。从数据恢复的角度来看,C分区被覆盖了数据,国内由于没有深层恢复技术,基本被覆盖的数据是回不来的,但C分区之后的数据基本是可以完全恢复的。
举个例子加以说明,一块硬盘原来有三个分区,分别是C,D,E,D盘和E盘有重要数据。原打算用Ghost在C盘装上一个XP系统,但操作时不小心,把Ghost备份还原到了整个硬盘,这下子硬盘上只有一个C分区了。如下图所示意,这个硬盘共有16G ,原先C盘8G ,D和E各是4G ,现在只有一个C盘,大小是16G 。
从上图可以看出,Ghost作了两件事情,一是覆盖了C盘的一部分空间,二是重写了分区表。除了被Ghost覆盖了一部分数据,其余的数据都毫发无损,我们只要能重建分区表,原来的D盘和E盘的数据就可以重见天日了。要重建分区表,关键是要知道第一个扩展分区起始的位置,找到了这个位置,所有的问题就都解决了。平时我解决这个问题,一般用Winhex
Winhex是个五星级的扇区编辑工具,虽然只有2M 大小,但功能及其强大,什么分析分区表,分析DBR,计算偏移,簇链追踪都不在话下,是数据恢复工程师的保留武器。我们先请它出场,但使用Winhex要求对数据存储原理有一定了解(今天俺就不详细介绍原理了),要不然看了Winhex的界面就崩溃的也不在少数。
我们把要恢复的硬盘挂到另外一台计算机上,如下图所示,磁盘1就是要目标硬盘,现在它只有一个分区,我们要把它的分区恢复原状。
启动Winhex,在工具菜单中选择“磁盘编辑器”,如下图所示,选择打开第二块物理硬盘HD1(wmware搭的实验环境)。
Winhex打开了物理硬盘,如下图所示就是0扇区的内容,0扇区内容分为三部分,引导程序,分区表和55AA的结束标志。图中绿色部分就是分区表,由于现在硬盘中只有一个分区,因此分区表中只有一。
好,现在我们要重建正确的分区表,分区表中要有两项,一项是对主分区C的描述,另一项是对扩展分区的描述。现在的关键是要找出扩展分区的起点,由于原硬盘的C分区大约是8000M ,每个柱面的大小是255×63×512=8225280字节=7.8M ,因此原扩展分区的起点大约是8000÷7.8=1025,也就是说扩展分区的起点在1025柱面附近。考虑到误差因素,我们放宽范围,让Winhex从950柱面开始搜索扩展分区的起始扇区。扩展分区的起始扇区有扩展分区表,而且扇区以55AA结束,我们根据这个特征可以指定搜索条件,具体思路是每个扇区512个字节,编号从0到511,我们让Winhex检索哪个扇区的510和511字节是55和AA,这个扇区就有可能是我们要找的扩展分区起始扇区。当然了,也有可能某个不相干的扇区也是以55AA结尾,那就要作进一步的筛选。一般情况下,扩展分区的起始扇区总是位于某个柱面的0磁头1扇区,这些条件我们都要加以利用。
好了,首先定位到950柱面0磁头1扇区,我们准备从这里开始搜索,在Winhex的“位置”菜单中选择“转到扇区”,如下图所示,填入参数是950/0/1。再次声明,950柱面只是一个凭经验估算的结果。
在Winhex“搜索”菜单中,选择“查找16进制数值”,如下图所示。
如下图所示,我们输入了搜索参数,搜索的16进制数值为55AA,搜索方向是向下,这是告诉Winhex从950柱面向后搜索。条件设为从偏移510开始,因为1个扇区有512字节,编号从0字节到511,55在510位置,AA在511位置。
搜索开始了,一会就找到了一个符合条件的扇区,到底是不是我们要照的扩展分区起始扇区呢?我们在Winhex的“查看”菜单中选择显示“详细资料面板“,这样就可以显示出扇区的LBA和CHS参数,如下图所示,这个扇区位于1019柱面254磁头63扇区。显然是一个NTFS分区的结束扇区,很有可能就是原C盘的最后一个扇区。这个扇区不是我们需要的,继续搜索!
再向下找到的扇区就很象我们的目标了,如下图所示,这个扇区中有一个分区表,而且位置在1020柱面0磁头1扇区,和我们估算的1025柱面相差无几,凭经验基本可以认定这就是我们要找的目标。
好了,假定我们找到的1020柱面0磁头1扇区就是扩展分区的起点,那我们就可以判断原先的C分区是从0柱面1磁头1扇区开始,到1019柱面254磁头63扇区结束。那扩展分区结束在什么地方呢?从分区表中的第二项可以知道答案,分区表的第二项描述了第二个扩展分区的起点和终点,第二个扩展分区的终点就是我们要找的扩展分区的结束位置。从分区表来看,第二个扩展分区的起点距当前扇区有7D 04 7E个扇区,大小是88 C 8 AE个扇区。经过计算,扩展分区的终点是2087柱面254磁头63扇区。说到这儿,要对一些朋友说声抱歉了,这些计算涉及到分区原理,如果以前没有接触过,确实不容易看懂。我会抽时间写一些介绍数据恢复原理的文章,现在大家如果理解起来有问题,可以参考第二种方法。
经过计算,我们算出C分区从 0/1/1 -1019/254/63,扩展分区从 1020/0/1-2087/254/63。有了这些参数,我们在硬盘0扇区的分区表中写出两项分区表,分别描述C分区和扩展分区就可以了。如下图所示,两项分区表的参数分别是 80 01 01 00 07 FE FF FF 3F 00 00 00 BD 08 FA 00和00 00 C 1 FF 0F FE FF FF FC 08 FA 00 2C CD 05 01。修改完分区表后,保存设置,重启计算机。
重启计算机后,我们发现磁盘1中已经有了三个分区,如下图所示,其中F和G就是原先硬盘中的D和E,现在这两个分区应该可以正常访问,数据应该被100%恢复。
打开F盘看看,如下图所示,数据都回来了,用同样方法可以验证第三个分区的内容也被恢复了。现在硬盘中的第一个分区肯定不能访问了,但我们只要用Ghost备份对第一个分区执行一次恢复操作就可以了。至此,数据恢复成功完成!