版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
|
轻松恢复误
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
碰碰运气。提醒一下,如果真的没有把握,可以联系俺,说不定能给您一些帮助,
[email protected]
。
本文出自 “ 岳雷的微软网络课堂” 博客,转载请与作者联系!
本文出自 51CTO.COM技术博客
|