一台Apple图形工作站,为了获得更快的图形处理速度和更大的存储空间,使用3块250GB的硬盘做成RAID-0,一天因为RAID-0其中一块硬盘出现坏扇区而掉线,导致RAID-0突然崩溃,RAID-0宗卷内的数据全部丢失。

用户非常着急,因为RAID-0内的数据是为某电视台制作的电视节目,已经接近完工,很快就要播出了,如果重新制作显然来不及。

该Apple服务器使用的是SATA接口硬盘。为了恢复RAID-0中的数据,先把3块SATA硬盘去RAID化,并对掉线的硬盘做了坏扇区检测,发现只有少量坏扇区,于是用专业物理镜像工具将该盘做出镜像,并把该盘的镜像称为0.img,同时也将另外两块正常的硬盘用WinHex做成文件镜像,把它们分别称为1.img和2.img。

随后用WinHex同时打开3个文件镜像进行分析。首先做一个约定,我们这里称文件“0.img”为“硬盘0”,文件“1.img”为“硬盘1”,文件“2.img”为“硬盘2”,但请读者注意,这些文件的编号只是按照硬盘在服务器中的物理顺序编排的,并不一定与RAID中各个硬盘的盘序相符。

下面开始分析RAID-0的结构。RAID-0的分析相对比较简单,我们只需要分析RAID开始扇区、条带大小和盘序即可。

分析RAID开始扇区

用WinHex同时打开3块物理盘的镜像文件,并查看它们的第一个扇区。“硬盘0”的第一个扇区的内容如图20-18所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-18 “硬盘0”的第一个扇区

“硬盘1”的第一个扇区的内容如图20-19所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-19 “硬盘1”的第一个扇区

“硬盘2”的第一个扇区的内容如图20-20所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-20 “硬盘2”的第一个扇区

对比3块成员盘的第一个扇区可以看出,“硬盘2”的第一个扇区是驱动程序描述符,驱动程序描述符的识别方法就是其前两个字节的签名值,即“45 52”,ASCII码为“ER”。

该驱动程序描述符的参数如图20-21所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-21 驱动程序描述符的参数

从驱动程序描述符的参数中可以看出“扇区总数”为1 465 191 504,这刚好是3块250GB硬盘扇区数的总和,也就是该RAID-0逻辑盘的总扇区数,所以这是一个有效的驱动程序描述符,从而能够知道该RAID-0起始扇区就是物理盘的0扇区。

分析条带大小

条带大小的分析我们还是从有驱动程序描述符的“硬盘2”入手。驱动程序描述符的下一个扇区就应该是分区映射表的开始了,往下翻动一个扇区,确实是分区映射表,并且第一个表项就是分区映射表自身的表项,如图20-22所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-22 分区映射表自身的表项

用WinHex模板查看这个表项的具体参数,如图20-23所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-23 分区映射表项的模板

分区映射表项的参数中描述了分区映射表分区开始于1号扇区,大小为63个扇区。通过这两个参数可以算出下一个分区开始于64号扇区。

再往下翻一个扇区,是分区映射表的第二个表项,这个表项是文件系统分区的表项,其内容如图20-24所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-24 文件系统分区的表项

同样用WinHex模板查看其参数,如图20-25所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-25 文件系统分区表项的模板

文件系统分区表项的参数中描述了分区开始于64号扇区,大小为1 465 191 432个扇区。通过这两个参数可以得知该RAID-0只分了一个区,因为这两个参数的和基本等于RAID-0逻辑盘的总扇区数。

文件系统分区表项的后面还有一个空闲空间的分区表项,这是最后一个分区表项了,其内容如图20-26所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-26 空闲空间的分区表项

空闲空间的分区表项模板如图20-27所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-27 空闲空间的分区表项模板

从参数中可知在RAID-0逻辑盘末尾有8个扇区的空闲空间。

通过对三个分区映射表项的分析,已经知道文件系统分区起始于64号扇区,而文件系统的前两个扇区是保留的,第三个扇区是文件系统的卷头。为了分析条带大小,我们跳转到“硬盘2”的66号扇区查看其是不是卷头。

跳转到“硬盘2”的66号扇区,其内容如图20-28所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-28 “硬盘2”的66号扇区

“硬盘2”的66号扇区内全部都是“FF”,并不是卷头。从这一点我们可以得出结论:该RAID-0的条带大小一定小于等于64个扇区,所以卷头不在“硬盘2”的66号扇区,而是按照RAID-0的结构原理存储到下一块成员盘中了。

现在我们再来分析另外两块成员盘。先分析“硬盘1”,其第一个扇区和第二个扇区全都是“00”,第三个扇区(即2号扇区)是HFS+文件系统的卷头,如图20-29所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-29 “硬盘1”的2号扇区

通过WinHex模板查看其中的参数,如图20-30所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-30 卷头的参数模板

卷头的参数中描述了宗卷的总块数为183 148 929,每块大小为4096字节,将这两个参数相乘再除以512,得到宗卷的总扇区数,结果为1 465 191 432。这跟文件系统分区映射表项中描述的值相等,说明这就是文件系统的合法卷头。

该卷头位于“硬盘1”的2号扇区,那么其0号扇区也就是HFS+宗卷的起始位置,这个位置相当于RAID-0逻辑盘的64号扇区。从这一点完全可以推出该RAID-0的条带大小为64个扇区。

分析盘序

通过第2步的分析可以知道,“硬盘2”的第一个扇区是驱动程序描述符,而驱动程序描述符是Apple磁盘的开始扇区,所以“硬盘2”一定是该RAID-0的“0号盘”。

在“硬盘2”的文件系统分区映射表项中描述了分区开始位置是64号扇区,“硬盘1”的0号扇区刚好就是该文件系统的开始。我们从这一点得到了RAID-0的条带大小是64个扇区,同时也可以知道“硬盘1”的数据是衔接在“硬盘2”的63号扇区之后的,所以“硬盘1”必定是“1号盘”。

最后只剩下“硬盘0”了,毫无疑问这块盘一定是“2号盘”了。为了进一步验证,我们可以再分析一下。“硬盘0”的0号扇区我们在之前已经查看过,其中的内容都是“FF”,可以参看图20-28。

“硬盘0”第一个扇区的数据全部都是“FF”,这个比较像分配文件的数据。我们再回头看一下“硬盘1”中的文件系统卷头,查看其分配文件的信息参数,如图20-31所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-31 分配文件的信息参数

分配文件的信息参数告诉我们,其数据的第一个盘区开始于1号块,占用5586个块,因为该宗卷的每块字节数为4096,即8个扇区,所以分配文件开始于宗卷的8号扇区,并连续占用5586×8=44688个扇区。

分配文件相当于位图文件,其中的每一位映射一个块,块如果使用了,对应的位就置1,明白了这一点,就能够确认硬盘1中的“FF”应该就是分配文件了,所以“硬盘0”的数据是衔接在硬盘1的63号扇区之后的,也就是说,“硬盘0”为“2号盘”。

通过上面的分析,最终可以确定该RAID-0的盘序为:“硬盘2”为“0号盘”、“硬盘1”为“1号盘”、“硬盘0”为“2号盘”。

数据重组

通过第3步的分析已经得到了RAID-0的开始扇区、条带大小和盘序,最后就可以通过数据重组获得数据了。能够支持HFS+文件系统的RAID重组工具包括R-studio、UFS Explorer和X-ways Forensic等,用这3个工具进行重组,都可以直接看到HFS+文件系统中的数据。

我们选择用UFS Explorer来重组这个RAID-0。

运行UFS Explorer主程序,打开RAID-0的3个镜像文件,并创建一个虚拟RAID-0,把3块成员盘按照分析好的顺序加入到虚拟RAID-0中,然后设置条带大小,如图20-32所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-32 虚拟RAID-0的参数设置

参数设置正确后单击“Build”按钮,就可以看到虚拟出来的RAID-0了,如图20-33所示。

苹果APM分区RAID-0数据恢复实例分析-数据恢复迷

图20-33 虚拟出来的RAID-0

在该虚拟RAID下面显示出一个HFS+文件系统的分区,双击这个分区就能够看到其中的数据了。