一、知难行易——了解数据恢复的基本原理
为了加深大家对数据恢复的理解,我们有必要简单了解一下数据存储的基本原理。这里以硬盘为例做简单说明(软盘、光盘及闪盘的数据存储原理与硬盘大同小异)。先来看看硬盘的数据结构。当我们拿到一块新硬盘时,必须先对其进行分区和格式化操作后才能使用。对于目前大多数朋友所使用的Windows操作系统来说,硬盘被操作系统划分成主引导扇区、操作系统引导扇区、文件分配表、目录区和数据区这5个部分。其中主引导扇区在每块硬盘中都是唯一的,一块硬盘上只能有一个主引导扇区,而其他部分则在硬盘的每个分区里都会存在。
软盘、光盘、闪存盘和硬盘的数据存储原理其实有较大不同。软盘的存储原理更像是录音带,直接通过电磁感应原理把磁场变化变成电流变化,对磁头和磁介质等材料并没有特殊要求。光盘上面也说了,至于闪盘,是直接用半导体储存高电位和低电位信号来表示0和1的数据信息。同时,各种存储介质所采用的文件格式也有很大区别。
主引导扇区位于整个硬盘的0磁道0柱面1扇区,它包括硬盘主引导程序MBR(Main Boot Record)和分区表DPT(Disk Partition Table)两部分。主引导程序是由分区程序(如大家最常用的Fdisk)产生的,所以在不同的操作系统中,主引导程序可能会不同。它的作用就是检查分区表是否正确并确定以哪个分区为引导分区,然后在程序结束时把该分区的启动程序(即操作系统)调入内存执行。而对于分区表,大家应比较熟悉了,它以80H或00H为开始标志,以55AAH为结束标志,共64字节,位于0磁道0柱面1扇区的最末端。它规定着系统有几个分区,每个分区的起始和终止扇区、大小及是否为活动分区等重要信息。
操作系统引导扇区即OBR(OS Boot Record),通常位于硬盘的0磁道1柱面1扇区(如果硬盘被设置为多重引导方式,则位于每个引导系统所在的主分区或扩展分区的第一个扇区)。它是操作系统可直接访问的第一个扇区,也包括一个引导程序和一个被称为BPB(BIOS Parameter Block)的分区参数记录表。引导程序的主要任务是判断本分区根目录前两个文件是否为操作系统的引导文件。如检查通过,就将引导文件读入内存,并把控制权交予该文件。BPB分区表参数块则是记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元(Allocation Unit,以前也称为簇)的大小等重要参数。
不知大家注意过没有,同一个硬盘,用生产厂家的原厂工具来分区与用Fdisk或Partition Magic之类的第三方工具来分区是有区别的。我们可以试一下,先用原厂工具来分区,然后启动Partition Magic查看,发现什么问题没有?通常用原厂工具分区的硬盘开头或结尾部分,有可能还剩下4~8MB左右的未使用空间,而用Fdisk或Partition Magic分区则不会产生这种情况。这是硬盘厂家为防止硬盘因为引导区的信息出错,或该处扇区物理损坏而产生的一系列麻烦而采取的一个小小的但是却很有实用价值的措施。所以,一般用原厂工具分区,硬盘工作起来会比较稳定,在非法关机时也不容易掉链子;即使出现所谓的零磁道损坏(逻辑零磁道)、引导区出错而导致系统不认盘等问题,用户也不需使用Disk Editor、PCTools等软件修复(甚至找JS维修),只需一个原厂工具重新快速低格然后分区就一切如常了。
文件分配表即FAT(File Allocation Table),是系统的文件寻址系统,为了数据安全起见,FAT一般做两个,第二FAT为第一FAT的备份。FAT区紧接在OBR之后,其大小由本分区的大小及文件分配单元的大小决定。FAT的格式有很多种,大家比较熟悉的有FAT12、FAT16和FAT32等格式。FAT12目前仅在软盘驱动器中使用,FAT16只能用于2GB以下的分区;而FAT32使用最为广泛,可管理的最大分区为32GB。
在硬盘克隆、扫描、格式化、拷贝大文件过程中突然断电的话,基本可肯定会出现分区表损坏的情况。不过现在大家知道原来分区表有两个,同时如果使用原厂工具分区,非法关机时则不易丢失分区表信息。文件系统的格式除了FAT16和FAT32外,还有NTFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、VFAT、HPFS、NFS、SMB、SysV、PROC、JFS等。其实,日常我们接触的都是DOS和Windows下的文件系统,而其他的文件系统则同我们相距较远,这里就不多做介绍了。
目录区即DIR(Directory),它紧接在第二FAT表之后。只有FAT还不能定位文件在磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件(目录)的起始单元(对于文件来说,这才是至关重要的)、文件的属性等。操作系统在定位文件位置时,根据DIR中的起始单元,再结合FAT表就可知文件在磁盘的具体位置及大小了。
数据区即DATA,当将数据复制到硬盘时,数据就存放在DATA区。对于一块储存数据的硬盘来说,它占据了硬盘的绝大部分空间,但如没有前面所提到的4个部分,DATA区就仅只是一块填充着0和1的区域,没有任何意义。
也不能说没有任何意义,特别是在SCSI硬盘这种具备完整的校验和安全机制的硬盘上,数据区的信息里也还有很多附加标识信息和校验信息,可作为数据恢复的手段。IDE硬盘上则确实较麻烦,要花不少功夫。不过目前很多发布数据恢复软件的公司都在不断研究这个问题,希望能通过优化算法,尽量提高数据恢复的成功率和恢复速度。
当操作系统要在硬盘上写入文件时,首先在DIR区中写入文件信息(包括文件名、后缀名、文件大小和修改日期),然后在DATA区找到闲置空间将文件保存,并将DATA区中存放文件的簇号写入DIR区,从而完成整个写入数据的工作。系统删除文件时的操作则简单许多,它只需将该文件在DIR区中的第一个字符改成E5,在文件分配表中把该文件占用的各簇表项清0,就表示将该文件删除,而它实际上并不对DATA区进行任何改写。通常的高级格式化程序,只是重写了FAT表而已,并未将DATA区的数据清除;而对硬盘进行分区时,也只是修改了MBR和OBR, 并没有改写DATA区中的数据。正因为DATA区中的数据不易被改写,从而也为恢复数据带来了机会。事实上各种数据恢复软件,也正是利用DATA区中残留的种种痕迹,来恢复数据,这就是整个数据恢复的基本原理。
● 二、亡羊补牢——实战数据恢复
一般存储器中的数据被破坏,主要有以下几方面的原因:
(1)自然灾害,如水灾、火灾、雷击、地震等造成计算机系统的破坏,导致存储数据被破坏或完全丢失;
(2)使用人员的误操作;
(3)计算机设备的硬件故障,包括存储介质的老化、失效;
(4)病毒感染造成的数据破坏;
(5)“黑客”程序或软件Bug对数据的破坏。
我们要根据数据损坏的原因,采用不同的恢复方法。现在我们就针对目前使用最为广泛的硬盘、光盘、软盘及闪存等设备,来谈谈数据恢复的具体工作。
在《大众硬件》2003年第12期的专题《再见硬盘的硬伤和软伤——硬盘维修与数据恢复》中,笔者提到南方一家公司写的一个恢复软件,并就他们说的可从厂家级数据列表(P列表)被清除的情况下恢复数据发表了几句评论后,收到了他们的责难,这里我可以详细解释一下。在所有正常损坏的方式中(上面说的几种),甚至更极端一点,把硬盘从五楼高扔到地上,都不会导致P列表清除,除非有人吃饱了撑的,愿意花一百几十块让人用PC3000之类的软件清除P列表。因此,国外的恢复软件都没有在零售版本中为这种正常损坏下不可能发生的情况而专门放上这样的功能。写出这样的软件展示一下公司的实力是有意义的,但因为别人没有放上类似不实在的功能就说自己天下第一、独一无二那就未免有炒作嫌疑了。毕竟数据还在硬盘里面放着,虽然清除P列表的同时,也等于同时改变甚至完全清除了目录区的信息,大大增加了数据恢复的难度,但只要有针对性地采用一种新的算法和恢复方式,要恢复数据也并不是海底捞月;而且国外也不是没有这样的软件,只是没有零售版而已。
1.硬盘的数据恢复
硬盘作为操作系统的载体,是各种程序运行的主要场所,也是进行数据交换的重要平台。在使用过程中,因使用不当、病毒破坏等原因造成的数据丢失现象最为常见。
①恢复由分区表损坏造成的数据丢失
分区表记录了关于硬盘分区情况的重要信息,是引导型病毒最喜欢破坏的地方。当硬盘的分区表被破坏后,系统就会无法正确识别分区,从而造成硬盘的分区丢失,导致无法引导系统。如处理不当,有可能丢失硬盘上的所有数据。有时用户也会因对分区软件不熟悉,从而错误地删除某个分区,会造成该分区内数据丢失。
解决此类问题的关键,不在于如何恢复硬盘中的数据,因为数据区并未损坏,仅是因为硬盘的分区表被改写而无法正常访问,所以最佳的修复方法是恢复硬盘分区表。只要能正确恢复硬盘的分区表,就可恢复硬盘上的所有数据。一般情况下,如事先已利用软件备份了硬盘的分区表信息,只需通过该软件将分区表还原即可(很多硬盘工具都具有备份硬盘分区表的功能,笔者推荐使用Disk Genius,该软件为全中文界面,使用十分方便)。但如事先并未备份分区表,就只有利用软件来重建分区表了(无论用什么方法来修复分区表,在修复之前必须先将BIOS中的病毒保护功能关闭,即进入“BIOS FEATURES SETUP”设置,将“Virus Warning”选项设置为“Disabled”,否则当分区表被修改时,系统会报警并挂起,导致修复失败)。由于对分区表的操作,不会影响到硬盘的数据区,所以我们可在备份了原有分区表的情况下,直接将新的分区表写入硬盘,而不用担心对硬盘上的数据造成影响。
软件推荐1:KV3000
这里笔者向大家首推的软件是KV3000 DOS版。利用KV3000中的“系统测试和灾难修复”功能,可方便地修复硬盘分区表。使用方法是:先利用DOS引导软盘引导系统,然后启动KV3000,进入KV3000主界面。
图01:KV3000 DOS版主界面)
然后按F10键进入“系统测试与灾难修复”界面,此时程序会自动检测硬盘分区表。如分区表被破坏,则屏幕显示:
Hard Disk Partition Table - Error!!!
Fix Hard Disk Partition Table or Sector (Y/N)?
意为:硬盘分区表错误,是否修复硬盘分区表或引导区?
按“Y”开始修复分区表,屏幕显示“Scanning……”字样的提示。经过一段时间后,会出现如下提示:
Insert a formatted diskette into drive A, Pressed “Y” to save “error” Partition table floppy filename HDPT.VIR,“N” to exit continue (Y/N)。
意为:请插入一张软盘,以便将原先硬盘的分区信息备份到软盘上。插入软盘后按“Y”键继续,按“N”退出。(请注意,备份原先硬盘分区表的步骤不能跳过,所以在利用KV3000修复分区表前一定要先准备好一张没有问题的软盘。这样即使还原分区表不成功,也可利用KV3000/HDPT.DAT命令将分区表还原至修复前的状态,再尝试利用其他软件修复。)
然后插入一张空白软盘,并按“Y”键后,屏幕显示:
Hard disk Partition table or boot sector fixed OK!!!
Fixing ……
此时KV3000便开始自动修复分区表,当屏幕上显示:
OK!OK!OK!
Press any key to return ……
则表示重建分区表的操作成功了。此时可按任意键退出并重启电脑,再利用软盘引导系统。一般情况下,原先丢失的分区都可恢复,数据也不会丢失。如发现修复后的硬盘分区与原先的分区不符,则可利用KV3000/HDPT.DAT将分区表还原至修复前的状态。
友情提示:
(1)KV3000相对来说比较“古老”,在某些内存超过512MB的电脑上执行可能会提示出错;
(2)由于KV3000在修复分区表时,必须要求备份分区表,因此不能通过光盘引导系统,否则会因无法将分区表备份到A盘而中断修复工作;
(3)修复后的硬盘有可能仍无法引导,这可能是由于启动文件已被破坏,这时需要利用“SYS C:”命令来传输系统文件,有必要的话还需要重新安装系统。
小结:KV3000的“系统测试和灾难修复”功能是个很好用的硬盘修复工具,特别是在没有备份硬盘分区表的情况下,它往往可让硬盘数据起死回生。它对使用者也没什么特殊要求,只需按软件提示操作即可,成功率相当高,很适合没有数据恢复经验的初学者使用。
这个软件好像对现在的大硬盘支持有点问题,笔者用一个160GB的硬盘试了几次都没有办法重现上面所说的情况。120GB的硬盘在2004年第一期写硬盘结构的时候解剖掉了,没有更多的其他大容量硬盘来做测试,所以只能存疑。不过在小一些的硬盘上,这个软件效果确实不错。
推荐软件2:Disk Genius
Disk Genius的前身就是DISKMAN,是一款经典的全中文经典硬盘分区表维护软件,采用纯中文图形界面,支持鼠标操作。作为一款硬盘分区管理工具,它提供强大的分区表重建功能,可以迅速修复损坏了的分区表。
(图02:Disk Genius使用界面)
利用Disk Genius重建分区表操作起来相当简单,点击“工具”菜单,选择“重建分区表”,程序提示“建议先备份分区表”。之后重建分区表时系统会提示选择“自动方式”或“交互方式”
图03:选择重建分区表的方式)
一般情况下,建议选择“自动方式”(如选择交互方式,则每个分区都给出提示,由用户选择是否保留),此时程序会开始全面扫描硬盘,扫描的时间视硬盘的大小而定。当扫描结束后,程序会提示“分区表重建完毕,存盘后生效”,并将恢复后的硬盘分区情况显示出来。如对该修复结果满意,则可选择“硬盘”→“存盘”,以保存重建后的分区表;如不满意此时程序修复的结果,可选择“硬盘”→“重新加载”,然后再通过交互方式来重建分区表。这里需提醒大家注意的是,当没有选择“存盘”前,一切修复都是在内存中完成的,并不会真正写入到硬盘中,所以可无限制操作而不用担心破坏数据;而一旦选择了“存盘”,对硬盘的修改就会生效了。
友情提示:
(1)和KV3000不同的是,Disk Genius在重建分区表时不会强制备份分区表,但笔者仍建议大家在重建分区表前备份原来的分区表;
(2)对目前动辄数十GB的硬盘,Disk Genius重建分区表时扫描硬盘所花的时间相当长,使用者要有耐心(特别是在硬盘的分区表被彻底破坏后、所有分区全部丢失的情况下,扫描时间实在有点不能忍受。相比之下KV3000的效率要高得多,这也是笔者将Disk Genius作为推荐软件2的原因)。
其实,即使不用Disk Genius这类工具来修复分区表,使用如Easy Recovery或Final Data这类数据恢复软件,也可在分区表损坏的情况下直接恢复数据。不过请大家记住,在恢复时不要选择逻辑驱动器而要选择物理驱动器,因为分区表坏了,则根据坏的分区表显示出来的逻辑驱动器信息也必然是错误的,你要从一个本来就不存在的、错误的逻辑驱动器里恢复数据则根本就不可能。同时,还要忍受一下漫长的扫描时间对你的折磨。
②恢复硬盘主引导程序
硬盘的主引导扇区是硬盘中最为敏感的部分,其中的主引导程序用于检测硬盘分区的正确性并确定活动分区,负责把引导权移交给活动分区的操作系统。如果硬盘主引导程序损坏,将无法从硬盘引导。
推荐软件:Fdisk
修复硬盘主引导程序最简单有效的方法,就是利用引导盘引导系统,然后执行“Fdisk/MBR”命令,利用Fdisk程序中包含的完整的硬盘主引导程序,直接将硬盘的