RAID0阵列数据恢复方法研究

2018-03-03 13:12吕秀鉴
数字技术与应用 2018年11期
关键词:数据恢复

吕秀鉴

摘要:RAID0阵列作为第一种也是最常见的一种磁盘阵列类型被大量的服务器和个人机作为提升系统存储性能的一种廉价解决方式而普遍使用。但是由于RAID0阵列自身的磁盘组织方式,使得这种阵列也成为了所有RAID阵列最容易出现故障,且故障后数据最容易遭到破坏的一种阵列形式。本文在分析RAID0阵列组织形式的基础上,提出了针对RAID0阵列数据进行恢复重组的方法。

关键词:数据恢复;RAID0;冗余阵列;数据重组

中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2018)11-0188-01

对于RAID0阵列来说,它是最早的一种RAID类型,阵列由多块硬盘组成,通过阵列控制器读写数据,数据被分成大小一样的条块,按照盘序依次均匀写入每块硬盘相对应的带区,循环往复。它可以较低的成本提供高于一般硬盘的存储容量和数据读写速率。但RAID0阵列不提供冗余校验功能,所以阵列中只要有一块硬盘出现故障,即造成整个阵列数据损坏,无法完整读出。

对于RAID0的数据恢复来说,由于阵列已经失效,无法正常读出,所以只能把硬盘从阵列控制器上断开,作为单一硬盘逐个取出,排除可能存在的物理故障。然后对硬盘依次做镜像,并对镜像文件进行分析,确定RAID阵列控制参数:RAID组织方式、起始位置、块大小、盘序。最后使用专业RAID数据重组工具软件对磁盘镜像进行重组,尝试读出阵列数据。我们以一个由3块硬盘组成的RAID0阵列为例,具体分析思路分以下几步:

1 确认硬盘上RAID0数据块的起始位置扇区

我们分析RAID0数据块的起始位置,就是要找到由多个硬盘组成的逻辑卷的起始位置。一般来说,由阵列卡组成的硬RAID阵列从每个硬盘开始位置第一个扇区即是阵列数据,但由操作系统组建的软RAID一般都不会从硬盘的起始位置第一个扇区开始记录阵列数据。所以针对不同的情况,首先要分析每块硬盘的0号扇区,进行比较。如果是硬RAID阵列硬盘的话,每块硬盘里0号扇区的内容是不一样的,我们可以初步确定RAID阵列数据塊的起始位置就在每块硬盘的0号扇区;如果是软RAID阵列硬盘的话,会发现每块硬盘的0号扇区的内容是一样的,那么这些一样的内容肯定不属于RAID阵列数据,RAID0数据块会在相对靠后的位置存在。所以起始位置判断的依据就是磁盘分区结构。以最常见的DOS分区结构为例,0扇区的MBR(主引导记录)和每个分区的DBR(操作系统引导记录)都是用作分析起始位置的判断依据。MBR和DBR这类分区结构扇区都属于引导扇区,有着不同于普通扇区的结构标记,即扇区结束位置的第510和511字节的数据是固定组合十六进制数据“55AA”。所以我们可以在分析阶段从0扇区开始查找符合位置要求的十六进制数值“55AA”,从而找出阵列的MBR和DBR(硬RAID只存在DBR)。

在服务器阵列中,采用NTFS文件系统的比较多。如果我们通过查找“55AA”的方法直接在阵列中某块硬盘的0号扇区找到了NTFS文件系统的 DBR的话,基本上就可以判断阵列数据起始位置就是每块硬盘的0号扇区了。如果没有,而是在0号扇区或稍后的位置找到了MBR,则要分析MBR中所标出的DPT分区表信息。我们可以从DPT分区表项中读出分区类型和分区开始位置等重要信息,以当前图中偏移地址0x01c2处取值为“42”,代表当前分区为活动分区类型;偏移地址0x01c6处取值为0x0000003F,代表当前分区的起始位置偏移地址为63扇区。我们从发现MBR的0号扇区位置开始加上这个参数63,就可以在硬盘上找到DBR的位置,也就是阵列数据起始的位置扇区号是0+63=63号扇区。

2 分析RAID数据块的大小

由于数据在RAID0阵列上是以数据块的方式均匀分布存储在每一块硬盘上,所以我们在重组阵列数据时,确定数据块的大小是非常必要的。一般我们通过由阵列构造的 NTFS卷中的一个重要存储结构元文件$MFT(主文件表)来进行判断。$MFT中的文件记录项以两个扇区为一个文件记录的存储单位,我们可以通过分别在每个硬盘上查找文件记录项的开始标记十六进制数值“46494c45”来定位$MFT文件记录的位置。在相同的扇区地址上分别比较不同硬盘上文件记录中记录号之间的差值,就可以推算出在一个数据块内包含的文件记录个数,进而推算出数据块的大小。例如我们分别在每块硬盘的41791号扇区处找到了$MFT文件记录,则我们可以查看到文件记录号分别为0x000000c0,0x00000080,0x00000100,十进制的数值分别为192,128,256。通过计算这三个数字间的等差值,我们可以推算出每个数据块存储了64个文件记录,每个文件记录占用2个扇区的存储空间,就是每个数据块一共有64×2=128个扇区。

3 确认硬盘盘序

盘序关乎着组成阵列的所有硬盘的读写顺序,是重组RAID0阵列数据的另一个关键参数。盘序的判断思路分为两步,首先通过查找起始位置扇区的操作,我们可以判断由阵列构造的 NTFS卷中DBR的位置,那么存储着DBR扇区的这块硬盘就是NTFS卷的第一个扇区,也是阵列起始位置,也就是第一块被RAID0读写的硬盘,它是阵列中的第一块盘。其次通过判断数据块大小的操作,我们可以找到每个硬盘在相同扇区位置上文件记录号的差异,以上例中我们分别在每块硬盘的41791号扇区处找到的$MFT文件记录号分别为192,128,256,(128﹤192﹤256)则可以判断第②块盘为1号盘,第①块盘为2号盘,第③块盘为3号盘。至此每块硬盘的盘序得以确定。

4 重组RAID0阵列数据

在确定了起始位置在63号扇区、块大小为64KB、盘序为②①③,这几个参数之后,我们可以利用一些专用软件来将这几块硬盘的镜像进行重组,建立虚拟RAID卷,尝试读出阵列数据。常用的工具软件有WinHex,R-Studio等,我们以WinHex为例,选择Specialist菜单中的Reconstruct RAID System工具项,在弹出的窗口中按照盘序依次将镜像文件载入窗口列表;设置Header size in sectors(起始扇区)取值为63;选择RAID类型为Level0;设置Stripe size in sectors(块大小)取值为128扇区;然后点击确认按钮,即可看到重组之后的虚拟RAID卷,并导出分区数据。

RAID0阵列作为一种常见的磁盘阵列组织方式,在日常应用中由于硬件故障或操作者处理不当等因素,极容易出现阵列的失效、数据无法读出。作为数据恢复技术的初学者,可能接触磁盘阵列恢复业务的机会不是很多,不过只要我们依据上述恢复步骤,认真分析,不断尝试,总是可以将用户的数据恢复回来的。

在基于工作過程的数据恢复技术课程改革与研究中,我们向行业专家、企业一线数据恢复从业者求教;对数据恢复工程师实施职业分析;围绕工作任务的需要进行了课程教学内容的选择,在传统软件恢复方法的教学内容基础之上,增加了磁盘阵列数据重组和数据提取等实际生产中经常遇到的典型工作场景,以期促进学生职业兴趣发展和能力的拓展以及就业后能很快适应工作的需要。

参考文献

[1]武春岭,何倩.数据恢复技术[M].高等教育出版社,2016(7).

Research on RAID0 Data Recovery Method

LV Xiu-jian

(Shi Jia Zhuang University of Applied Technology,Shijiazhuang Hebei  050081)

Abstract:RAID0, as the first and most common type redundant arrays of disks, is widely used by a large number of servers and personal computers as a cheap solution to improve the storage performance of the system. However, due to the RAID 0 's own disk organization, RAID 0  has become the most vulnerable to failure of all RAID , and the data is most vulnerable to damage after failure. Based on the analysis of RAID0 organization form, this paper proposes a method of recovery and reorganization for RAID0 data.

Key words:data recovery;RAID0;redundant arrays;data reorganization

猜你喜欢
数据恢复
Windows下数据恢复的一点认识
服务器数据备份和恢复研究