谈UNIX下数据恢复技术研究

时间:2022-09-18 01:36:34

谈UNIX下数据恢复技术研究

摘要:从分析UNXI的文件系统和文件的删除过程出发,找到了三种恢复unix下被删文件的解决方法,并对相应方法进行了阐述,最后讨论了UNIX文件系统损坏的修复办法。

关键词:UNIX;文件系统;数据恢复

最近,以网格计算的形式出现了一种新的将计算作为工具的概念。开放网格服务架构提供了一种构建在消息传递库和本地主机运行系统之上的更高级的服务层次。这些更高级的抽象正在很快将分布式计算带入主流之中。Unix系统在并行计算的实现中,采用了PVM和NTPVM技术,这两项技术被广范应用于分布式计算系统中。

UNIX是较早广泛使用的计算机操作系统之一,它是一个交互式的多用户、多任务的操作系统。UNIX起源于一个面向研究的分时系统,后来成为一个标准的操作系统,可用于几乎所有16位及以上的计算机,包括微机、工作站、小型机、多处理机和大型机等等。UNIX在我国的金融业、邮政、税务、石油、铁路等各大行业得到了广泛的应用,成为各行业信息系统的基础。

UNIX系统是由内核、shell、文件结构和应用程序组成。内核是系统的核心,直接与计算机硬件打交道,包含了控制计算机硬件、程序的运行以及文件存储的核心程序。而shell则提供了一个内核与用户之间的界面,它接收用户输入的命令,并将命令翻译成内核操作格式发送给内核执行。shell甚至拥有能够对命令进行编程的编程语言。文件结构包含目录,而目录又包含文件。为了更深入有效地了解UNIX系统,有必要回顾下它的历史与发展历程。

一、UNIX的发展过程

1969年,UNIX操作系统在AT&T贝尔实验室,由KenThompson、Dennis Ritchie和其他的研究人员开发而成。起初,UNIX只被当作一种科研产品,第一代UNIX版本是免费向很多知名大学的计算机科学系的。70年代中期,加州大学伯克利分校成为主要的UNIX开发者。1975年,伯克利通过它本身的发行机构BSD,了自己版本的UNIX(即BSD UNIX)。BSD包括了强大的文件管理功能以及基于TCP/IP网络协议的网络特征。SUN后来又开发了自己版本的UNIX,即SunOS。同时,其他的独立开发版本的UNIX也在萌芽。1980年,微软了微机版本的UNIX系统,即Xenix。

1983年,AT&T了一个商业版本的UNIX,系统V版本1。之后AT&T将UNIX转移到一个新的组织――UNIX系统实验[1] 室,使将来的系统V发行版本可以向上兼容,BSD UNIX的很多特征被并入后来的系统V。1991年,UNIX系统实验室了系统V版本4(SVR4),它包容了BSD、Sun OS和Xenix的流行特性。

系统V后来卖给了Novell,再后来卖给了SCO,SCO进行着当前的维护和发行。很多其他的软件公司也开发了自己版本的UNIX。如IBM的AIX,惠普公司的HP-UX,Apple的A/UX,数据设备公司DEC的Digital UNIX,SiliconGraphics的IRIX,Sun公司的Solaris,SCO的BSDI和SCOUNIX是一些主流版本。随后,又出现了一个在PC和Mac等微型机系统上运行的免费发行版本Linux,很多版本是基于SVR4同时并入了BSD UNIX的主要特征。

二、系统管理维护方面的应用

一个系统经过一段时间的使用后,对该系统里文件的访问就可能变慢,使系统性能下降。系统必须定期地维护,才能保待它的良好性能,使它的不一致性及时得到纠正,而不至于导致系统负荷增加,响应时间变慢。

系统管理维护包括的方面很广,主要从文件系统、性能、系统配置、安全、网络管理维护方面进行。下面将列出平日最常用的一些管理维护命令。

管理员每天应该做的第一件事就是监视磁盘空间使用情况。随着用户的不断写入数据,磁盘可用空间变得越来越小,当到达一定限度时,有些程序将不能运行。

为了监视磁盘空间的使用情况,使用df命令。df命令可得到指定文件系统的磁盘空间总量或可得(即未用)的空间。如果在命令行中没有指定文件系统,df命令则会报告所有文件系统的未用空间,在df命令中使用一k选项,硬盘空间按KB显示,可在用户的.profile文件中加入df命令。这样,用户在每次登录时就可见到磁盘空间使用情况报告。

三、UNIX文件系统分析

(一) UNIX文件系统的结构

UNIX文件系统是UNIX系统的心脏部分,提供了层次结构的目录和文件,文件系统将磁盘空间划分为每1024个字节为一组,称为块(block)。UNIX的版本很多,不管何种版本的U N I X,其文件系统都包括引导块、超级块、i节点区、文件存储区等几部分。

(二) UNIX文件系统各部分的功能

引导块占用第0号物理块即文件系统的第一扇区,不属于文件系统管辖,如果系统中有多个文件系统,只有根文件系统才有,引导程序放在引导块中,其余文件系统都不使用引导块。引导程序可以安装到硬盘的M B R(主引导记录)或U N I X文件系统的根目录。

超级块占用第1号物理块,位于系统的第二扇区,紧跟引导块之后,是文件系统的控制块,其结构存放于/u s r/include/sys/filsys.h中。超级块包括:文件系统的大小、空闲块数目、空闲块索引表、空闲i节点数目、空闲i节点索引表、封锁标记等。超级块是系统为文件分配存储空间、回收存储空间的依据。

文件存储区是存放文件内容的区域,采用由根目录与其下的文件和目录的多级树形目录结构。UNIX所有文件均存放于目录中,目录本身也是一个文件。目录存放文件的机制如下:首先,目录文件本身也和普通文件一样,占用一个索引节点;其次,由这个索引节点得到目录内容和存放位置;再次,从其内容中取出一个个的文件名和它对应的节点号,从而访问一个文件。

四、UNIX系统文件的删除过程

U N I X下删除一个文件的过程很简单,那就是释放索引节点表和文件占用的数据块,清空文件占用的索引节点,但不清除文件内容。但删除文件与删除目录的处理不尽相同,不同命令删除文件的过程也不相同。

(一)删除文件

UNIX删除一个文件的具体步骤是:根据文件i节点的地址表逐一释放文件占用的磁盘数据块,然后清空相应的节点,最后释放i节点。

(二)删除目录

删除一个目录的过程:首先逐一删除目录里的所有文件,然后删除目录。目录本身也是一个文件,故删除方法与删除文件一致。

五、UNIX系统的数据恢复方法

U N I X文件删除后,要恢复比Windows要困难,因为Windows文件被删除后仍保留有完整的文件名、文件长度、始簇号等重要的信息;而U N I X文件信息全部依靠i节点的数据结构来描述,而i节点在相应文件删除后即被清空,使恢复比较困难,但是还是可根据被删除文件的特征、内容和类型找到恢复的办法。

(一)根据输入特征进行恢复

根据被删除文件所在的文件分区、被删除文件的大小、删除的时间、删除文件的用户名等特征找到相应的索引节点,然后根据文件的分隔特征,即UNIX文件最后一个数据块尾部多出的字节全部为0,只要找到数据区中前一个全部为0的位置,和后一个全部为0的位置,其两者之间的数据就是被删除文件的数据了,恢复此段数据就恢复了删除文件。

(二)根据被删除文件的内容进行恢复

如果知道被删除的文件内容中若干字节的内容,而且该文件长度又不超过一个磁盘块,那么可以在整个文件系统中搜索这一字节串,得出一个文件所在的数据块,将它们的块号填入一个i节点,即可恢复一个文件。如果知道被删除文件的精确长度(字节数),那么可根据一个数据块的大小,计算出文件的最后一个数据块中数据的精确长度,该数据块中其他字节必然是全0。根据这一条件,通过搜索整个文件系统,找出其中符合条件的数据块。如果知道文件内容中存在某种可实现的关联,例如文件的校验和,或者文件内容的某种上下文关系,那么也可通过搜索整个文件系统,通过反复尝试寻找符合关联条件的磁盘数据块,进而恢复一个文件。

(三)根据被删除文件的类型来恢复

很多专用类型的文件都有一个特定的字符串写在文件的开始与结尾,分别叫做文件头(Header)和文件脚(Footer),因此可根据被删除文件的类型,用磁盘编辑工具,找出此类文件的文件头与文件脚的字符串,然后在硬盘上按扇区搜索此类文件的文件头与文件脚,将找到的这些文件的文件头与文件脚之间的硬盘扇区数据保存到一个文件中即可。

六、UNIX文件系统损坏的修复办法

当由于不正常关机、硬件错误等原因导致UNIX文件系统损坏和工作不正常时,可以用UNIX的自带的fsck程序进行修复。

(一)数据块的检查与修复

fsck对超级数据块的检查主要针对文件系统的长度、i-节点数目、空闲数据块统计和空闲i-节点统计等。文件系统的长度必须大于被超级数据块使用的数据块数目的总和和被i-节点列表所使用的数据块数目的总和。fsck检查所有柱面组群的数据块映像中被标记为未使用的数据块,并加上被i-节点使用的数据块的数目,检查这个结果是否等于文件系统中所有数据块的总和。当fsck发现数据块的分配映像有错误时,就自动重建它。概要信息和超级数据块相联系的信息包含了文件系统中所有空闲数据块的数目,fsck将它检查到的空闲数据块的数目和概要信息中的空闲数据块的数目进行比较,如果两者不一样,fsck就用实际检查得到的空闲数据块数覆盖概要信息中的空闲数据块数。

(二)i-节点的检查与修复

Fsck从第二个i-节点开始检查,直到最后一个i-节点。每个i-节点都要进行格式、类型、链接数、重复数据块、坏数据块和节点大小的检查。每个i-节点都有一个模式定义,它指示i-节点的类型和分配状态,其分配状态有未分配、已分配和非分配三种,而非分配状态的节点指示了这个节点具有不正确的节点格式,这种情况一般是由于非法数据写入造成的,对于这种子情况,fsck会清除此i-节点的内容。

(三)与i-节点相关联数据的检查与修复

i-节点可以和目录数据块相关联,目录数据块包含了目录的结构信息。Fsck能检查目录数据块的有效性,它能检查一系列的目录错误,如果一个节点的类型是“未分配节点”,f s c k就会删除整个目录节点和它所包含的目录数据块,这通常是由硬件故障引起的。当非法数据写入目录数据块时,会引起目录节点跑到文件系统节点列表之外,这种情况,fsck也将删除这个目录节点。此外,对于目录项“.”的数据块号必须是目录节点数据块列表中的第一项,如果不是这样,fsck会修正它并使它成为此目录节点数据块中的第一数据块。

七、结束语

由于U N I X操作系统具有稳定、安全、运行速度快、处理数据能力强等特点,必将占有服务器操作系统较高的市场份额,而像证券、银行等高端市场几乎是它一统天下。因此数据一旦丢失或损坏,后果十分严重。而因为UNIX文件系统的复杂性,导致数据恢复非常困难,本文通过分析UNIX文件系统的特点,找到了三种恢复UNIX文件删除的方法,并且讨论了用fsck程序修复UNIX文件系统的可行性,希望这些能对研究UNIX下的数据恢复有所帮助。

参考文献:

[1] 汪中夏.刘伟.数据恢复高级技术.北京:电子工业出版社. 2006.11

[2] 黄步根.数据恢复与计算机取证.计算机安全.2006.01

[3] 戴士剑,张杰,郭久武.数据恢复技术综述.信息网络安全技术研究.2006.1

上一篇:当前烟叶产品结构现状及应对策略――配方打叶... 下一篇:纳米二氧化钛存在条件下大型水蚤对铜的吸收作...