数据恢复的基本原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随着电脑技术的发展,电脑世界也变得多姿多彩。但不管电脑的世界如何精彩,它总是以0和1的数据形式保存在硬盘、光盘等各种存储介质中的。在目前技术条件下,这些存储介质并不像保险柜一样安全,保存在上面的数据也常有丢失的可能,今天我们就来谈谈如何找回这些丢失的数据。
0和1的数字信号,在硬盘中就表现为磁头在变化的磁场中产生电阻值的变化,导致产生高电位和低电位的不同信号。在光盘中,则表现为凸出和凹陷的光盘介质表面产生强弱变化的光反馈信号,进而导致不同的高低电位信号。因此,硬盘结构和理论看起来虽然复杂,但是归根到底就是盘面上表示0和表示1的磁信号。只要磁盘上还有表示0和1的磁信号并且还能被分辨出来,就基本上可以说这个盘片具备了数据恢复的条件。当然,用什么手段来恢复褪橇硗庖桓鑫侍饬恕?/P>
● 一、知难行易——了解数据恢复的基本原理
为了加深大家对数据恢复的理解,我们有必要简单了解一下数据存储的基本原理。这里以硬盘为例做简单说明(软盘、光盘及闪盘的数据存储原理与硬盘大同小异)。先来看看硬盘的数据结构。当我们拿到一块新硬盘时,必须先对其进行分区和格式化操作后才能使用。对于目前大多数朋友所使用的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(Di
rectory),它紧接在第二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重建分区表操作起来相当简单,点击“工具”菜单,选择“重建分区表”,程序提示“建议先备份分区表”。之后重建分区表时系统会提示选择“自动方式”或“交互方式”
一般情况下,建议选择“自动方式”(如选择交互方式,则每个分区都给出提示,由用户选择是否保留),此时程序会开始全面扫描硬盘,扫描的时间视硬盘的大小而定。当扫描结束后,程序会提示“分区表重建完毕,存盘后生效”,并将恢复后的硬盘分区情况显示出来。如对该修复结果满意,则可选择“硬盘”→“存盘”,以保存重建后的分区表;如不满意此时程序修复的结果,可选择“硬盘”→“重新加载”,然后再通过交互方式来重建分区表。这里需提醒大家注意的是,当没有选择“存盘”前,一切修复都是在内存中完成的,并不会真正写入到硬盘中,所以可无限制操作而不用担心破坏数据;而一旦选择了“存盘”,对硬盘的修改就会生效了。
友情提示:
(1)和KV3000不同的是,Disk Genius在重建分区表时不会强制备份分区表,但笔者仍建议大家在重建分区表前备份原来的分区表;
(2)对目前动辄数十GB的硬盘,Disk Genius重建分区表时扫描硬盘所花的时间相当长,使用者要有耐心(特别是在硬盘的分区表被彻底破坏后、所有分区全部丢失的情况下,扫描时间实在有点不能忍受。相比之下KV3000的效率要高得多,这也是笔者将Disk Genius作为推荐软件2的原因)。
其实,即使不用Disk Genius这类工具来修复分区表,使用如Easy Recovery或Final Data这类数据恢复软件,也可在分区表损坏的情况下直接恢复数据。不过请大家记住,在恢复时不要选择逻辑驱动器而要选择物理驱动器,因为分区表坏了,则根据坏的分区表显示出来的逻辑驱动器信息也必然是错误的,你要从一个本来就不存在的、错误的逻辑驱动器里恢复数据则根本就不可能。同时,还要忍受一下漫长的扫描时间对你的折磨。
②恢复硬盘主引导程序
硬盘的主引导
扇区是硬盘中最为敏感的部分,其中的主引导程序用于检测硬盘分区的正确性并确定活动分区,负责把引导权移交给活动分区的操作系统。如果硬盘主引导程序损坏,将无法从硬盘引导。
推荐软件:Fdisk
修复硬盘主引导程序最简单有效的方法,就是利用引导盘引导系统,然后执行“Fdisk/MBR”命令,利用Fdisk程序中包含的完整的硬盘主引导程序,直接将硬盘的主引导程序覆盖,并且不会破坏硬盘的数据。
友情提示:
如硬盘上设置了多重启动(比如Win98和Win2000的双重启动菜单),当利用Fdisk/MBR恢复主引导程序后,可能会使多重启动菜单丢失,此时需利用相应的软件重新设置。
③恢复因为误删除或格式化而丢失的数据
在使用电脑过程中,我们都有可能因使用不当,不小心删除一些很重要的数据。有时甚至因误操作对硬盘进行了格式化,从而造成大量的数据丢失。其实,当执行删除文件的命令后,上文已说过,数据区并未被清除。同样,当硬盘的分区被格式化后,系统也仅将根目录区清零。由于删除与格式化操作只是在文件名或根目录区上做了一些手脚,对于文件的数据部分丝毫未动,因此只要处理得当,使用数据恢复软件,完全有机会恢复丢失的数据。
推荐软件1:Easy Recovery 6.0
Easy Recovery是个功能强大的数据恢复软件,可轻松地恢复误删除的文件和被格式化的分区,并且支持FAT16、FAT32和NTFS分区。软件的使用很容易,初学者也可轻松掌握。安装启动Easy Recovery后,在软件的主界面上会显示“磁盘诊断”、“数据恢复”、“文件修复”、“邮件修复”、“软件更新”和“救援中心”这6个菜单。
点击“数据修复”菜单,就可进行数据修复工作了。
Easy Recovery为我们提供了多种数据恢复选项,其中包括“使用高级选项自定义数据恢复功能”、“查找并恢复已删除文件”、“从一个已格式化的卷中恢复文件”、“不依赖任何文件系统结构信息进行恢复”,用户可根据自己需要来选择最佳的恢复方案。
如要恢复误删除的文件,最方便的方法就是通过“查找并恢复已删除文件”。
如只是删除了少量文件,在选择需恢复文件的分区后,只需点击“下一步”,程序就会对选中的分区进行一次快速扫描,自动找出当前分区内所有已删除的文件
这时只需选择需恢复的文件或目录,然后选择保存的路径即可。如知道需恢复的文件名称或扩展名,我们也可在“文件过滤器”中输入这些信息。如想要恢复ZIP压缩文件,可在“文件过滤器”中输入“*.ZIP”,这样可大大加快文件恢复速度。如删除了一个包括很多文
件和子目录的文件夹,则需选择“完全扫描”了,这样才能最大程度恢复数据。
“从一个已格式化的卷中恢复文件”,可用来恢复被格式化分区。
操作更为简单,只需选择要恢复的分区,然后在“先前的文件系统”中选择以前分区所使用的文件系统类型。这里一共有4种文件系统类型可供选择:“FAT12”、“FAT16”、“FAT32”和“NTFS”。如选择了错误的文件系统类型,程序就会无法正常恢复文件。
有时因我们在删除数据或格式化分区后,又向分区中写入了很多数据,因此导致使用以上两种方法仍无法找到文件时,还可尝试利用“不依赖任何文件系统结构信息进行恢复”。这时程序会以簇为单位来扫描整个硬盘,最大限度地恢复数据。不过通常搜索到的数据文件名和目录名都已面目全非了,只能作为恢复数据的最后手段
因此,在误操作后,千万不要再向硬盘内写入数据。不管是copy数据还是碎片整理,都会导致数据恢复困难加大,切记!
另外,有时我们可能一次无法恢复所有数据,这时当我们在关闭程序时,还可选择保存修复进度
这样下次即可选择“继续一个以前保存的数据恢复进程”,就可很方便地继续修复工作,从而避免了重复进行漫长的数据扫描过程。
友情提示:
(1)如不需恢复C盘的数据,可将Easy Recovery安装到C盘使用。
(2)在利用Easy Recovery恢复数据时,Easy Recovery对数据的操作是只读的,不会影响到数据的安全性,但千万不要把修复后的文件保存在其他需修复的分区中。最好准备一个有大量空闲空间的硬盘,用来保存修复后的数据。
(3)有时某些恢复后的文件可能会有问题,可利用“文件修复”功能对文件进行二次修复。