轻松恢复误
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
碰碰运气。本文出自 “岳雷的微软网络课堂” 博客