1、linux文件系统

总述:基于linux系统,删除数据及格式化后的数据恢复方案

 

◎ 基于EXT2/EXT3/EXT4文件系统;

◎ 基于Reiserfs文件系统;

◎ 基于Xfs文件系统

 

◆ 检测流程

a. 检测是否存在硬件故障,如硬件故障,转硬件处理 ;

b. 以只读方式检测故障表现是否与用户描述相同。

 

◆ 恢复流程

a. 备份:以只读方式对故障磁盘做完整镜像(参考附录);

b. 如果需要恢复完整目录结构,则先需要完整恢复已丢失文件节点,再恢复数据。如果节点无法恢复,则可按文件类型进行恢复;

c. 恢复后的数据会暂存在另一个存储体上。

 

◆ 验收流程

对恢复好的数据进行验证,确认其正确性。如确认,交费-->移交原介质及已恢复数据 -->出具发票(收据)及报告。如无法确认或不确认,移交原介质不收服务费,可免费出具报告。

 

◎ 服务费用(报价仅供参考)

a. Ext2数据删除,如无覆盖,数据恢复的费用约需5000-10000元

b. Rerserfs和Xfs上的数据删除,如无覆盖,数据恢复的费用约需50000元左右。

c. Ext3/EXT4上的数据删除或格式化以及EXT2上的格式化恢复,普通文件约需要10000元。如数据库文件,约需要50000元或更高费用。

 

【温馨提示】

◎ 存储设备没有100%的安全保证,重要数据需要常常备份,可以采用一些数据同步工具进行数据备份;

◎ 出现数据灾难时,本机不应再有任何操作,如有条件,应该将硬盘或其他存储介质完整镜像

◎ 数据删除后,即使不写数据,单纯的读取也容易破坏文件系统日志,所以,出故障后,应尽快umount文件系统。

 

2、UNIX文件系统

一、故障类型

故障描述:基于UNIX系统,软件级别的数据灾难

故障表现:
1)存储结构出错
2)数据删除
3)文件系统格式化
4)其它原因数据丢失
                            
二、解决方案
检测流程
1)检测是否存在硬件故障,如硬件故障,转硬件处理
2)以只读方式检测故障表现是否与用户描述相同
恢复流程
1)备份:以只读方式对故障存储做完整镜像(参考附录)
2)在备份中进行数据分析及恢复操作。
3)通常,恢复后的数据会暂存在另一个存储体上
验收流程
对恢复好的数据进行验证,确认其正确性。如确认,交费–>移交原介质及已恢复数据 –>出具发票(收据)及报告。
如无法认可数据恢复结果,交回原介质,不收服务费,可免费出具报告。

三、数据恢复的可能性
针对存储结构出错:
不论错误出现在RAID结构部分,还是卷组结构、分区结构、片区结构(不同的UNIX有不同的存储管理方式)。如果故障出现在以文件系统为单位,在存储内进行1个或几个文件系统组织的管理方式上,而文件系统本身没有破坏,
出问题后也没有其他破坏性操作,数据恢复的可靠性将非常高。                                                  
针对文件删除:
如果文件删除后,没有后续数据写入:
AIX JFS/JFS2文件删除后,通常可以100%恢复。
SGI XFS  文件删除后,通常可以100%恢复。
Vxfs文件删除,如果文件数量很少,有可以完全恢复成功的算法,否则按节点丢失情况处理(见后面描述)。
其余如SCO HTFS、UFS等文件删除后,节点通常会丢失。
UNIX类文件系统,如果节点丢失,则意味着文件的属性(大小、日期戳、权限、与名称的关联等)就无法获得,部分情况下,索引也将无法找到。这种情况的数据恢复主要依靠要恢复文件的内部特征。通常,如果是ORACLE之类的数据库文件,是可以恢复的;但压缩数据、多媒体数据等可能不容易恢复。
如果文件删除后有写入,写入数据所覆盖的区域将不可能恢复。

针对文件系统格式化
如果格式化后没有数据写入:
1、AIX JFS及JFS2,格式化前的大多数文件可以恢复。
2、SGI XFS,格式化前的大多数文件可以恢复。
3、Vxfs格式化后,需要分析新结构与格式化前的结构的重叠部分,恢复的可靠性介于AIX JFS2格式化与UFS格式化之间
4、其余文件系统(如UFS)格式化后,通常节点会丢失,这种情况与删除相同,参考文件删除后节点丢失的恢复可靠性。    
如果格式化后有数据写入,写入数据所覆盖的区域将不可能恢复。          
                                                           
针对其它原因数据丢失
事实上,所有的数据恢复丢失实质上都可以归结为:节点是否丢失、索引是否丢失、数据本身是否丢失。删除、格式化通常可以理解为节点和索引丢失。而数据本身丢失就再无数据恢复的意义了。

 

3. XFS文件系统

 

XFS是一个高效的64位文件系统,由SGI开发,原用在IRIX中,后移植到LINUX上,由于SGI出身于图形多媒体设计,所以其文件系统具在很强的对大量数据的处理能力,

在处理大量文件、节点时性能下降很低,完全领先于EXT3,并与REISERFS有的一拼。现在许多基于LINUX和FREEBSD的NAS(由于LINUX/FREEBSD的开源性,

实际上非LINUX/FREEBSD的NAS只占很少一部分)选择文件系统时,很有可能会选择XFS。

XFS文件系统上的数据恢复非常麻烦。目前市面上没有基于XFS的数据恢复软件,跨平台的XFS读取软件只有XFS32,但功能非常有限,而且只限于目录、节点是正常的情况。

据对其源代码的分析,读取效率也是比较低的。SGI官方对于XFS的详细结构层的描述极少,有的只是FOR LINUX的源代码。这样对于XFS文件系统损坏,使用XFS REPAIR又无法修复的情况,就十分麻烦。

经过一段时间的研究,总算差不多搞清楚了XFS文件系统的结构层。如果有基于XFS的NAS或LINUX数据出现问题,应该有很大把握了。基于XFS数据恢复的软件已经接近完工。附部分研究心得:

XFS INODE number:变长的位数表示三部分组成:起始块组号+起始块号+块内INODE号。起始块号与块内INODE号的位长由SUPERBLOCK中参数指定

XFS EXT number:变长的位数表示,对于32位系统版本,首先用4个4字节表示EXT 编号,EXT编号由两部分组成:起始位置和大小。EXT编号的起始位置为L1(0-32)连接L2(0-32)连接L3(31-21)构成中间值(暂定为TEMP)

然后TEMP又由两部分组成:块组号与块组内部块号,结构为后agblklog位表示内部块号,其余高位表示块组号。