用户的一块30GB的硬盘,原来分了三个区,第一个区是操作系统区,后两个是用户的数据区。在一次用Ghost重做系统时操作失误,做完系统发现硬盘只有一个系统区了,两个数据区消失了,其分区结构如图4-87所示。
该案例是一个“误Ghost”的典型案例。用户在用Ghost恢复系统时因为操作错误,导致其整个硬盘变成一个分区,而原本应该是三个分区的,现在后两个分区丢失了,整块硬盘都是一个系统分区。
在用Ghost恢复系统时,正确的操作是选择“Partition”→“From Image”,如图4-88所示。
而用户往往会选择错误,误选为上面的一项“Disk”→“From Image”,如图4-89所示。
这样在Ghost完成之后,用户的硬盘就会变成一个分区,其余的分区全部丢失。而实际上原来的第一个分区之后的分区还是存在的,只是因为分区表的改变使那些分区无法看见,如果能够把分区表恢复为原来的状态,就能够把丢失的分区找回来。
用WinHex打开“磁盘1”,通过搜索“55 AA”来查找原来的第二个分区开始位置,搜索的设置如 图4-90所示。
在搜索过程中出现了很多“55 AA”的标志,但基本上都不是我们要找的第二个分区的开始扇区,最终经过十多分钟的搜索,终于在16 386 300扇区找到一个有效的EBR。
从这个搜索过程中可以发现,WinHex的搜索速度是很慢的。因为它是按照扇区搜索,效率很低,并且在搜索过程中还会出现大量干扰信息。因为有很多扇区的最后两个字节恰巧是“55 AA”,而这些扇区又不是我们要找的第二个分区的开始扇区。
如果想尽量避免干扰信息出现,即避免我们不需要的“55 AA”出现,可以按照柱面来搜索。因为我们要找的是第二个分区的开始扇区,按照分区粒度的规则,分区不能跨柱面,所以以柱面为单位搜索就可以更准确一些。
一个柱面的大小为255×63个扇区,换算为字节数为8 225 280,所以在搜索对话框的“条件:偏移计算”中第一个方框应该填写8 225 280,第二个方框填写510。
经过重新设置条件后再一次进行搜索,确实少了很多干扰信息,但速度并没有提高,这是因为WinHex在搜索时依然需要一个扇区一个扇区地读取,所以速度不会提高。
那么有没有更快速的搜索方法呢?这里讲解一种非常高效的搜索方法,但不是用WinHex,而是用另一个数据恢复软件FinalData进行搜索。
运行FinalData,其界面如图4-91所示。
单击图4-91工具栏中的“打开”按钮,出现如图4-92所示的选项。
这一对话框要求选择驱动器,这里应该选择“物理驱动器”中的“硬盘2”,然后单击“确定”按钮,FinalData就开始搜索分区了。不用让FinalData把整个硬盘搜索完,只要看见“找到的分区”后的数字变成2时,就可以单击“取消”按钮停止搜索了,如图4-93所示。
只需要几秒“找到的分区”就由1变成2了,单击“取消”按钮后出现如图4-94所示的界面。
选中第二个分区,并且单击“查找格式”按钮,出现如图4-95所示的界面。
图4-95中红框中所圈中的数值16 386 363就是第二个分区的起始扇区。用WinHex跳转到硬盘的该扇区,其内容如图4-96所示。
从该扇区的内容可以看出这是一个NTFS的DBR,查看BPB中“隐藏扇区数”这个参数,看到其数值为“0000003F”,换成十进制为63。从这个参数可知该分区不是一个主磁盘分区,而是扩展分区中的驱动器,所以从该扇区在往前跳转63个扇区,一定有EBR。
往前跳转63个扇区果然看到是个EBR,如图4-97所示。
该EBR扇区中使用了两个分区表项,说明后面还有子扩展分区,而该扇区是硬盘主扩展分区的开始,其绝对扇区号为16 386 300。用模板查看其分区表信息,如图4-98所示。
找到主扩展分区的开始地址就非常好办了,下一步只需到MBR中建一项指向该EBR扇区的扩展分区表项,就可以把硬盘中丢失的两个分区恢复回来了。
MBR中扩展分区表项的开始位置参数即该EBR所在扇区16 386 300,扩展分区的大小可以用硬盘的扇区总数减去16 386 300。这样算不是很精确,一般会比实际值大一些,这是因为硬盘最后一个分区后往往还有不超过一个柱面大小的剩余扇区,这样算会把剩余扇区也算到主扩展分区里面,不过没有什么影响。
还有一种精确的算法是通过EBR中分区表项里的数值算出主扩展分区大小。在这个案例中,主扩展分区中只有两个驱动器,所以把图4-98中①和②的两个数值相加,就是主扩展分区大小,其值为43 664 670。
下面就可以回到MBR修改分区表了,直接打开MBR的模板,如图4-99所示。
将刚才计算好的数值填入分区表第二项,因为这是一项扩展分区的表项,所以分区类型要填0F或者05。
第二项分区表项填好后,还需要把第一项分区表项中的分区大小做一下修改,改为16 386 237,即主扩展分区的开始扇区号16 386 300减去63的结果。
分区表修改完成后保存结果并重启计算机,丢失的两个分区出现了,打开后数据正常,恢复成功。恢复后的分区结构如图4-100所示。