轻松恢复误Ghost的硬盘
最近接连帮朋友恢复了几块被误Ghost的硬盘,今天抽点时间写写处理过程,希望能给遇到此类问题的朋友一些参考。平时遇到的误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或Diskgen,现把两种方法都写出来供大家参考。
一 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备份对第一个分区执行一次恢复操作就可以了。至此,数据恢复成功完成!
以上这种方法适合了解分区原理的用户,如果您不了解分区表的参数含义,不用担心,您可以选择下一种方法。
二 Diskgen
Diskgen是国内一款著名的分区恢复软件,它可以快速地进行分区表的重建,备份,恢复等工作,是进行分区恢复时的好帮手。尤其是它查找分区表时进行了优化,每个磁头只检查第一个扇区,因此查找速度很快,不过它的这个特性有时也会遇到麻烦,具体案例以后再给大家介绍。Diskgen有DOS版本和Windows版本,用哪个都可以,我一般用的是深山红叶光盘中带的DOS版Diskgen,我感觉已经够用了,记住,我们可以依靠工具但决不能依赖工具,工具不过是工程师思路的延伸而已。
把硬盘恢复到故障状态,在计算机中放入深山红叶的启动光盘,如下图所示,出现了深山红叶的启动界面,我们选择第二项“万用MS-DOS工具箱“。
进入DOS工具箱后,运行Diskgen,如下图所示。
启动Diskgen后,我们首先在“硬盘”菜单中选择第2硬盘,因为我们准备恢复的硬盘是计算机中的第二块硬盘。如下图所示,第二块硬盘中只有一个分区。我们准备重建分区表,在“工具”菜单中选择“重建分区表”。
Diskgen提醒要先对分区表进行备份,我们选择“继续”。
接下来选择工作方式,一定要选择“交互方式”,这样才能对恢复过程了然于胸。当然,如果实在不了解原理,用自动模式碰碰运气也未尝不可。
Diskgen首先找到了目前的第一个分区,这个分区结果是误Ghost后形成的,不是我们所希望的,因此选择“跳过”。
Diskgen继续向下搜索,速度很快,如果Diskgen找到了一些分区,但都离1025柱面较远,很有可能是以前分区遗留下来的,我们通通选择“跳过”。直到如下图所示,Diskgen找到了1020柱面的扩展分区,这是我们需要的,点击“保留”。这样,Diskgen在重建分区表时就会为这个扩展分区自动创建一个分区项。
扩展分区之前的8G 空间还没有分区,我们点击硬盘的前8G 未分区空间,在“分区”菜单中选择“新建分区”,如下图所示。
Diskman询问是否将扩展分区之前的空间都划给此分区,点击“确定”。
Diskgen询问是否将分区类型设为FAT,由于我们用Ghost还原时分区的文件系统应该是NTFS,因此选择“否”。
如下图所示,Diskgen要求手工输入分区类型,我们输入NTFS的代码07。
如下图所示,分区重建完毕,新建了一个分区,找回了原来的扩展分区,存盘退出后重启计算机。
如下图所示,重启计算机后分区恢复了正常,第二个和第三个分区的数据都被恢复了。
总结:误Ghost形成的分区错误还是比较好处理的,只要将分区表正确重建,基本上C分区之后的数据都可以100%恢复。如果大家熟悉分区表参数,使用Winhex就可以完成任务,否则使用Diskgen辅助处理也是不错的。千万不要用Easyrecovery等工具扫描恢复,一是要花很长时间,另外扫描恢复的效果并不理想,至少不是100%恢复。恢复误Ghost只涉及分区,一般不涉及文件系统,除非你C盘有数据被Ghost覆盖了,那样的话可以用Easyrecovery碰碰运气。提醒一下,如果真的没有把握,可以联系俺,说不定能给您一些帮助,yuelei1976@yahoo.com.cn。