摘 要:针对硬盘数据被误删之后数据恢复难度较大的现实状况,本论文详细探讨研究了数据恢复的方法,首先简要分析了数据存储的基本原理,在此基础上重点探讨研究了硬盘数据丢失后的恢复方法,分析了数据删除原理及系统文件分配表的机制,结合删除原理及文件分配机制提出了数据恢复的方案思路,对于进一步提高数据删除后的恢复应用水平具有较好的实用价值及指导意义。
关键词:硬盘数据;数据恢复;软件系统设计
1.引言
硬盘数据恢复技术是一种跨硬件平台、跨软件系统的特殊的计算机技术,是现有所有计算机数据存储技术的集合,是在人们对信息的依赖性越来越高、信息数据的价值远高于设备本身的情况下应运而生的,它是针对数据的丢失和破坏进行的一种数据挽救措施。
本论文主要结合硬盘的工作机制,对其数据丢失恢复进行分析研究,以期能够提出一种安全可靠的硬盘数据丢失恢复软件的设计实现,并以此和广大同行分享。
2.硬盘数据存储原理分析
硬盘是用来存储数据的,为了方便使用和管理这些数据,这些数据又是以文件的形式存储在硬盘上。任何操作系统都有自己的文件管理系统。不同的文件系统又有各自不同的逻辑组织方式。本论文主要对FAT32文件系统下硬盘的数据结构进行分析。
在硬盘的数据存储中,在主引导扇区之后,从0柱面0磁头2扇区到0柱面0磁头63扇区这62扇区空间为系统保留,为以后的其他特殊用途留有余地。在系统保留扇区后是第一个系统的引导扇区DBS。它位于0柱面1磁头1扇区。
DBS(Disk Boot Sector)除了引导程序部分DBR(Disk Boot Record),还有一个重要的即BPB参数表,记录了保留扇区、FAT、FDT等在各个分区中的起始位置。系统在磁盘分区上逻辑地划出若干个大小相等地“簇”,每个簇都有一个逻辑编号,文件在磁盘上地存放并不是连续的,为了让系统了解文件数据在磁盘上的分配情况,从而能够建立、管理和访问文件。FAT16、FAT 32系统采用FAT簇链的方式来实现,过程大致如下: FAT区中被逻辑地划分出若干个FAT项,每个FAT项有一个逻辑编号,不同FAT结构的FAT项的长度是不一样的,FAT 16结构的分区中每个FAT项占用16位,FAT32结构的分区中每个FAT项占用32位,这个编号对应了数据区中的若干个簇。
FAT1和FAT2是两个完全一样的FAT,系统同时建立两套完全一样的FAT链,这样做的目的是当FAT1损坏时可以用FAT2进行恢复。在FAT区后面是系统的根目录区,由若干目录项组成。在根目录区后面是文件的数据区,这个区域中存放的是用户和系统建立的文件数据,这个区被逻辑地划分成了若干个大小相等的簇,从而便于系统管理和使用文件。
其他格式类型的数据存储原理与上述FAT格式原理基本相同,这里就不一一赘述。
3.硬盘数据丢失恢复软件的设计研究
3.1 删除原理
Windows操作系统在删除硬盘上的一个文件时并没有真正的将文件数据彻底抹去,而是做了一个删除标记。文件删除分为经“回收站”删除和不经过“回收站”删除两种。经“回收站”删除时将文件暂时放到回收站中。系统在文件的目录项上作上标记,FAT表和DATA区在删除前后都不作改动。而不经过“回收站”删除一个文件时,即将删除过的文件从回收站清空。此时,系统在文件的文件目录项FDT上作了个标记,即把记录文件名的首字节标记为ESH,并把相应的FAT表项值更改为OH。文件在DATA区的数据并没有删除。因此通过第三方恢复软件可以恢复这些丢失的数据。需注意的是,发现文件丢失后,在数据恢复前不要向该分区或磁盘写入信息,因为向该分区或磁盘写入信息就可能将误删的数据覆盖。而造成无法恢复。准备使用恢复软件时,不能直接在本机装这些恢复工具,因为软件的安装可能恰恰把刚才丢失的文件覆盖掉。最好使用能够从光盘直接运行的数据恢复软件,或把硬盘挂在别人的机器上进行恢复。
3.2 文件分配表机制分析
FAT(File Allocation Table)即文件分配表,是DOS/windows系统的文件寻址系统。对于FAT32格式,位置是从引导扇区开始的第32个扇区就是第一个FAT表的位置,其大小由这个分区的空间大小及文件分配单元的大小决定,文件分配表占据扇区的多少凭磁盘类型大小而定。
文件分配表是用来表示磁盘文件的空间分配信息的。它不对引导区、文件目录表的信息进行表示,也不真正存储文件内容。其主要功能是:表明磁盘类型、表明每个文件所占簇链的使用情况、标明坏簇和可用簇。为了防止意外损坏,FAT一般做两个,第二FAT为第一FAT的备份,FAT32采用4个字节来表示簇的位置。磁盘的最小存储单位是扇区,若干个扇区合为一个簇,在FAT32中每8个扇区为一个簇进行编号,每个簇在文件分配表中都有对应的表项,簇号即为表项号。在FAT文件系统中对数据区的存储空间是按簇进行划分和管理的,由于FAT32中文件的存放是链式存储结构,它可以由若干个连接的簇进行连接存储,在表项内的数值是该文件的下一个簇的簇号,值到最后一个簇的标志为结束。
3.3 数据丢失恢复的设计思路
在编写程序前先来分析一下程序要做的事情。该程序的主要功能是通过用户指明的文件名和盘符找到FAT32卷中被误删除的文件数据,然后进行恢复。根据前面的分析我们知道,硬盘上的文件是由FAT表和FDT目录项进行统一管理,而FAF与FDT对数据的存储管理又是链式的。因此,通过链式搜索查找,可以准确定位被误删除的文件在磁盘中的确切位置。
当文件被删除后,该文件FDT目录项的首字节的值被改成“ES”,引导扇区的第二个扇区中表示该分区点用空间大小的相应信息也被同时改写。因此,在程序设计时,要根据其存储结构,对相应的地方进行修改,来搜索ES删除标志,再通过被删除文件的数据链来进行恢复。整个流程大致如下:
(1) 获取磁盘分区类型,分区存储空间,FAT、FDT文件等存储的起始扇区。
(2) 获取FAT、FDT表项内的簇信息,即簇的删除、未使用、坏簇、以及占用簇的起始扇区信息。
(3) 通过FAI,、FDT计算不同文件在物理扇区的起始位置,包括有标识ES除文件起始位置、文件类型、占用大小和文件存储的所在簇。
(4) 改变删除位,通过过程(3)得到的结果,并按FAT表对文件进行链式查找并缓存,当达到文件所在簇尾时,停止操作。
(5) 对存储的数据进行转换,生成文件.
(6) 对文件进行异区存储。而操作
系统在读写文件时,会根据FDT中的起始单元,结合FAT表就知道文件在磁盘的具体位置,然后顺序读取每个簇的内容,从而完成文件的恢复工作。
4.结语
“硬盘有价,数据无价”。针对愈演愈烈的数据丢失和破坏现象,如何保护好这些重要数据,如何在数据被破坏或丢失的情况下,尽可能的恢复这些信息,将是一项长期而艰巨的任务。基于windowFAT32操作系统,本文对数据恢复的基本技术进行了分析和讨论。对于进一步提高硬盘数据被删除后的恢复应用水平具有较好的实用价值和指导意义。
参考文献:
[1] 戴士剑,涂彦晖.数据恢复技术[M].北京:电子工业出版社,2005.
[2] 黄步根.数据恢复与计算机取证[J].计算机安全,2006,(6):32-33.
[3] 戴士剑,涂彦晖.数据恢复技术(第2版)[M].北京:电子工业出版社,2007.
[4] 邓剑,杨晓非,廖俊卿.FAT文件系统原理与实现[J].计算机与数字工程,2005,33(9):105-108.