恢复误ghost硬盘的方法
恢复误ghost硬盘的方法
平时遇到的误情况有两种,一种是误用了带功能的XP安装盘,这种安装盘会重建分区表,把你的硬盘分为四个区,然后把XP系统到C盘;第二种是利用备份还原系统,本应把备份还原到C分区,但一不小心还原到整个硬盘上了。这两种操作的实质是一样的,都改写了硬盘的分区表,而且向硬盘覆盖了一些数据。从数据恢复的角度来看,C分区被覆盖了数据,国内由于没有深层恢复技术,基本被覆盖的数据是回不来的,但C分区之后的数据基本是可以完全恢复的。
举个例子加以说明,一块硬盘原来有三个分区,分别是C,D,E,D盘和E盘有重要数据。原打算用在C盘装上一个XP系统,但操作时不小心,把备份还原到了整个硬盘,这下子硬盘上只有一个C分区了。如下图所示意,这个硬盘共有16G,原先C盘8G,D和E各是4G,现在只有一个C盘,大小是16G。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_kgxau__20080713105725622.jpg" width="561" height="439" border="0" />
从上图可以看出,作了两件事情,一是覆盖了C盘的一部分空间,二是重写了分区表。除了被覆盖了一部分数据,其余的数据都毫发无损,我们只要能重建分区表,原来的D盘和E盘的数据就可以重见天日了。要重建分区表,关键是要知道第一个扩展分区起始的位置,找到了这个位置,所有的问题就都解决了。平时我解决这个问题,一般用Winhex或Diskgen,现把两种方法都写出来供大家参考。
一 Winhex
Winhex是个五星级的扇区编辑工具,虽然只有2M大小,但功能及其强大,什么分析分区表,分析DBR,计算偏移,簇链追踪都不在话下,是数据恢复工程师的保留武器。我们先请它出场,但使用Winhex要求对数据存储原理有一定了解(今天俺就不详细介绍原理了),要不然看了Winhex的界面就崩溃的也不在少数。
我们把要恢复的硬盘挂到另外一台计算机上,如下图所示,磁盘1就是要目标硬盘,现在它只有一个分区,我们要把它的分区恢复原状。
600)makesmallpic(this,600,1800);' src="http://windows.chinaitlab.com/UploadFiles_3263/200807/20080713105725430.jpg" width="627" height="448" border="0" />
启动Winhex,在工具菜单中选择“磁盘编辑器”,如下图所示,选择打开第二块物理硬盘HD1(wmware搭的实验环境)。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_jlfre__20080713105726752.jpg" width="356" height="349" border="0" /> Winhex打开了物理硬盘,如下图所示就是0扇区的内容,0扇区内容分为三部分,引导程序,分区表和55AA的结束标志。图中绿色部分就是分区表,由于现在硬盘中只有一个分区,因此分区表中只有一项。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_conok__20080713105726937.jpg" width="628" height="561" border="0" />
好,现在我们要重建正确的分区表,分区表中要有两项,一项是对主分区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柱面只是一个凭经验估算的结果。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_dxcs0__20080713105727778.jpg" width="268" height="193" border="0" /> 在Winhex“搜索”菜单中,选择“查找16进制数值”,如下图所示。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_zofd2__20080713105728919.jpg" width="630" height="566" border="0" />
如下图所示,我们输入了搜索参数,搜索的16进制数值为55AA,搜索方向是向下,这是告诉Winhex从950柱面向后搜索。条件设为从偏移510开始,因为1个扇区有512字节,编号从0字节到511,55在510位置,AA在511位置。
600)makesmallpic(this,600,1800);' src="http://windows.chinaitlab.com/UploadFiles_3263/200807/20080713105729438.jpg" width="251" height="277" border="0" />
搜索开始了,一会就找到了一个符合条件的扇区,到底是不是我们要照的扩展分区起始扇区呢?我们在Winhex的“查看”菜单中选择显示“详细资料面板“,这样就可以显示出扇区的LBA和CHS参数,如下图所示,这个扇区位于1019柱面254磁头63扇区。显然是一个NTFS分区的结束扇区,很有可能就是原C盘的最后一个扇区。这个扇区不是我们需要的,继续搜索!
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_sj56z__20080713105729559.jpg" width="640" height="512" border="0" />
再向下找到的扇区就很象我们的目标了,如下图所示,这个扇区中有一个分区表,而且位置在1020柱面0磁头1扇区,和我们估算的1025柱面相差无几,凭经验基本可以认定这就是我们要找的目标。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_jfg9q__20080713105730667.jpg" width="638" height="569" border="0" />
好了,假定我们找到的1020柱面0磁头1扇区就是扩展分区的起点,那我们就可以判断原先的C分区是从0柱面1磁头1扇区开始,到1019柱面254磁头63扇区结束。那扩展分区结束在什么地方呢?从分区表中的第二项可以知道答案,分区表的第二项描述了第二个扩展分区的起点和终点,第二个扩展分区的终点就是我们要找的扩展分区的结束位置。从分区表来看,第二个扩展分区的起点距当前扇区有7D 04 7E个扇区,大小是88 C8 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 C1 FF 0F FE FF FF FC 08 FA 00 2C CD 05 01。修改完分区表后,保存设置,重启计算机。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_n9fxw__20080713105731949.jpg" width="639" height="571" border="0" />
重启计算机后,我们发现磁盘1中已经有了三个分区,如下图所示,其中F和G就是原先硬盘中的D和E,现在这两个分区应该可以正常访问,数据应该被100%恢复。
600)makesmallpic(this,600,1800);' src="http://windows.chinaitlab.com/UploadFiles_3263/200807/20080713105732851.jpg" width="634" height="446" border="0" />
打开F盘看看,如下图所示,数据都回来了,用同样方法可以验证第三个分区的内容也被恢复了。现在硬盘中的第一个分区肯定不能访问了,但我们只要用备份对第一个分区执行一次恢复操作就可以了。至此,数据恢复成功完成!
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_y9kzj__20080713105733851.jpg" width="595" height="398" border="0" />
以上这种方法适合了解分区原理的用户,如果您不了解分区表的参数含义,不用担心,您可以选择下一种方法。
二 Diskgen
Diskgen是国内一款著名的分区恢复软件,它可以快速地进行分区表的重建,备份,恢复等工作,是进行分区恢复时的好帮手。尤其是它查找分区表时进行了优化,每个磁头只检查第一个扇区,因此查找速度很快,不过它的这个特性有时也会遇到麻烦。Diskgen有DOS版本和Windows版本,用哪个都可以,我一般用的是深山红叶光盘中带的DOS版Diskgen,我感觉已经够用了,记住,我们可以依靠工具但决不能依赖工具,工具不过是工程师思路的延伸而已。
把硬盘恢复到故障状态,在计算机中放入深山红叶的启动光盘,如下图所示,出现了深山红叶的启动界面,我们选择第二项“万用MS-DOS工具箱“。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_yqfyl__20080713105733866.jpg" width="515" height="491" border="0" />
进入DOS工具箱后,运行Diskgen,如下图所示。
600)makesmallpic(this,600,1800);' src="http://windows.chinaitlab.com/UploadFiles_3263/200807/20080713105734815.jpg" width="628" height="460" border="0" />
启动Diskgen后,我们首先在“硬盘”菜单中选择第2硬盘,因为我们准备恢复的硬盘是计算机中的第二块硬盘。如下图所示,第二块硬盘中只有一个分区。我们准备重建分区表,
在“工具”菜单中选择“重建分区表”。
600)makesmallpic(this,600,1800);' src="http://windows.chinaitlab.com/UploadFiles_3263/200807/20080713105735933.jpg" width="636" height="480" border="0" />
Diskgen提醒要先对分区表进行备份,我们选择“继续”。
600)makesmallpic(this,600,1800);' src="http://windows.chinaitlab.com/UploadFiles_3263/200807/20080713105736913.jpg" width="298" height="97" border="0" />
接下来选择工作方式,一定要选择“交互方式”,这样才能对恢复过程了然于胸。当然,如果实在不了解原理,用自动模式碰碰运气也未尝不可。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_ioa6k__20080713105736926.jpg" width="300" height="114" border="0" />
Diskgen首先找到了目前的第一个分区,这个分区结果是误后形成的,不是我们所希望的,因此选择“跳过”。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_hcawv__20080713105736496.jpg" width="636" height="480" border="0" />
Diskgen继续向下搜索,速度很快,如果Diskgen找到了一些分区,但都离1025柱面较远,很有可能是以前分区遗留下来的,我们通通选择“跳过”。直到如下图所示,Diskgen找到了1020柱面的扩展分区,这是我们需要的,点击“保留”。这样,Diskgen在重建分区表时就会为这个扩展分区自动创建一个分区项。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_m0cmx__20080713105737938.jpg" width="636" height="480" border="0" />
扩展分区之前的8G空间还没有分区,我们点击硬盘的前8G未分区空间,在“分区”菜单中选择“新建分区”,如下图所示。
600)makesmallpic(this,600,1800);' src="http://windows.chinaitlab.com/UploadFiles_3263/200807/20080713105738683.jpg" width="636" height="480" border="0" />
Diskman询问是否将扩展分区之前的空间都划给此分区,点击“确定”。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_3ucam__20080713105739415.jpg" width="261" height="72" border="0" />
Diskgen询问是否将分区类型设为FAT,由于我们用还原时分区的文件系统应该是NTFS,因此选择“否”。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_ywcpp__20080713105739714.jpg" width="299" heigh
t="99" border="0" />
如下图所示,Diskgen要求手工输入分区类型,我们输入NTFS的代码07。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_nl9vc__20080713105739331.jpg" width="637" height="480" border="0" /> 如下图所示,分区重建完毕,新建了一个分区,找回了原来的扩展分区,存盘退出后重启计算机。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_wu9y9__20080713105740455.jpg" width="637" height="480" border="0" />
如下图所示,重启计算机后分区恢复了正常,第二个和第三个分区的数据都被恢复了。
600)makesmallpic(this,600,1800);' src="/upload_files/article/58/201003/1_llzsk__20080713105741841.jpg" width="633" height="446" border="0" />
总结: 误形成的分区错误还是比较好处理的,只要将分区表正确重建,基本上C分区之后的数据都可以100%恢复。如果大家熟悉分区表参数,使用Winhex就可以完成任务,否则使用Diskgen辅助处理也是不错的。千万不要用Easyrecovery等工具扫描恢复,一是要花很长时间,另外扫描恢复的效果并不理想,至少不是100%恢复。恢复误只涉及分区,一般不涉及文件系统,除非你C盘有数据被覆盖了,那样的话可以用Easyrecovery碰碰运气。
;
广告 您可能关注的内容 |