打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Windows系统服务器数据恢复揭秘 › Windows系统分区及文件系统知识的应用
userphoto

2021.10.20

关注

分区结构在RAID分析中的作用

在RAID数据恢复的分析过程中,分区结构可以帮助我们确定RAID成员盘的部分盘序,还可以帮我们确定RAID在物理盘中的起始扇区等信息,下面举例说明。

用分区结构判断盘序

一个RAID-0由两块1TB的物理盘组成,为了分析该RAID-0的盘序,将两块物理盘同时用WinHex打开查看它们的第一个扇区,其中“硬盘1”的第一个扇区的内容如图17-1所示。

图17-1 “硬盘1”第一个扇区的内容

从图17-1可以看到“硬盘1”的第一个扇区内全部为0。“硬盘2”的第一个扇区的内容如图17-2所示。

图17-2 “硬盘2”第一个扇区的内容

从图17-2可以看到“硬盘2”的第一个扇区内是一个完整的MBR结构,有引导程序、分区表及结束标志。

从这两块RAID-0成员盘第一个扇区的分析很容易判断出,“硬盘2”是该RAID-0的0号盘,“硬盘1”是该RAID-0的1号盘,即“硬盘2”在前,“硬盘1”在后。

用分区结构判断RAID在物理盘中的开始扇区

下面再介绍一个用分区结构判断RAID在物理盘中的开始扇区的例子。

一个由3块成员盘组成的RAID-5,这3块成员盘已经做成文件镜像,分别命名为1.img、2.img、3.img,将它们都用WinHex打开,1.img的第一个扇区如图17-3所示。

图17-3 1.img第一个扇区的内容

从图17-3中看这个扇区既不是MBR磁盘结构第一个扇区的内容,也不是动态磁盘和GPT磁盘第一个扇区的内容。

2.img的第一个扇区如图17-4所示。

图17-4 2.img第一个扇区的内容

从图17-4中看这个扇区既不是MBR磁盘结构第一个扇区的内容,也不是动态磁盘和GPT磁盘第一个扇区的内容。

最后再看3.img,它的第一个扇区如图17-5所示。

图17-5 3.img第一个扇区的内容

从图17-5来看,这个扇区同样不是MBR磁盘结构第一个扇区的内容,也不是动态磁盘和GPT磁盘第一个扇区的内容。

以上3块成员盘的第一个扇区的数据可能是RAID控制器写入硬盘的配置信息,也就是说它们并不是该RAID-5逻辑盘内的数据。

我们尝试在每块成员盘中搜索MBR,结果在1.img的128号扇区发现了MBR,如图17-6所示。

图17-6 1.img的128号扇区的内容

然后跳转到2.img的128号扇区,发现该扇区的内容与1.img的128号扇区完全一样,如图17-7所示。

图17-7 2.img的128号扇区的内容

最后再跳转到3.img的128号扇区,发现该扇区的内容全部为0,如图17-8所示。

图17-8 3.img的128号扇区的内容

3.img的128号扇区内容全部为0,这也就能够解释为什么1.img的128号扇区和2.img的128号扇区的内容完全一样了。

从上面的分析可以得出结论,该RAID-5的真正起始位置在物理盘的128号扇区。

$BOOT文件在RAID分析中的作用

$BOOT文件由DBR和NTLDR区域构成,DBR中的BPB参数对分析RAID结构很有帮助,另外,$BOOT文件有时候还能够帮助我们判断条带大小以及RAID成员盘的盘序。

通过BPB参数定位$MFT文件

在分析NTFS文件系统的RAID结构时,经常会从$MFT文件入手,所以能够准确、快速地找到$MFT文件在物理盘中的位置是分析的前提。

举例来说,一个由两块成员盘组成的RAID-0,这两块成员盘已经做成文件镜像,分别命名为1.img、2.img,将它们都用WinHex打开,在1.img的63号扇区找到了一个NTFS的DBR,如图17-9所示。

图17-9 1.img的63号扇区的DBR

用WinHex模板查看一下这个DBR的BPB参数,如图17-10所示。

图17-10 DBR的BPB参数模板

从图17-10的BPB参数中能够知道该文件系统每簇扇区数为8,$MFT文件的开始簇号为786432,所以可以计算出$MFT文件在该逻辑卷中的扇区号为786432×8=6291456,而该RAID是由两块物理盘组成的,所以$MFT文件在物理盘中的开始扇区大致为(6291456/2)+63=3145791。跳转到1.img的3145791号扇区,果真是$MFT文件的开始,如图17-11所示。

图17-11 1.img的3145791号扇区

通过$BOOT文件判断条带大小及盘序

一个由3块成员盘组成的RAID-5,这3块成员盘已经做成文件镜像,分别命名为1.img、2.img、3.img,将它们都用WinHex打开,通过分析发现1.img的31号扇区是NTFS文件系统的DBR,如图17-12所示。

图17-12 1.img的31号扇区是DBR

NTFS文件系统的DBR后面应该紧跟着NTLDR区域,但1.img的32号扇区却不是NTLDR区域,如图17-13所示。

图17-13 1.img的32号扇区的内容

1.img的32号扇区不是NTLDR区域的内容,说明其32号扇区没有跟31号扇区的DBR衔接,所以32号扇区与31号扇区不是一个条带内的数据,通过这一点基本可以判断该RAID-5的条带大小为32扇区。

继续分析发现2.img的32号扇区是NTLDR区域的内容,如图17-14所示。

这说明2.img的32号扇区的内容是衔接在1.img的31号扇区之后的,所以可以推断出1.img和2.img在盘序上的衔接性。

图17-14 2.img的32号扇区的内容

$MFT文件在RAID分析中的作用

$MFT文件在RAID分析中可以很方便地帮我们找到校验块的位置,还能够分析出条带大小。

用$MFT文件定位校验块

$MFT文件由文件记录构成,每个文件记录的大小为两个扇区,并且文件记录都是以固定的4个字节开始,这4个字节是十六进制的“46 49 4C 45”。通过这个特征我们可以判断RAID-5中哪些条带是数据块,哪些条带是校验块。

例如一个由3块成员盘组成的RAID-5,这3块成员盘已经做成文件镜像,分别命名为1.img、2.img、3.img,将它们都用WinHex打开,找到$MFT文件所在位置,并把3块成员盘跳转到同一个扇区进行比较,如图17-15所示。

图17-15 3块成员盘的比较

从图17-15中可以看出1.img和3.img都是正常的文件记录,扇区的前4个字节是十六进制的“46 49 4C 45”,而2.img当前扇区前4个字节则是0,说明2.img当前扇区所在条带是校验块。

注意:这种判断校验块的方法只适用于成员盘数目为奇数的RAID-5。

用$MFT文件判断条带大小

还用图17-15中的例子来说,从这3块成员盘的文件记录中,还可以看到它们的文件记录号,如图17-16所示。

图17-16 成员盘的文件记录号

1.img的当前文件记录号为0x23,换算为十进制等于35;2.img当前扇区是校验,不用管它;3.img的当前文件记录号为0x33,换算为十进制等于51。因为当前的3块成员盘都在同一个扇区的位置,所以相邻两块成员盘的文件记录号相减的结果就是一个条带包含的文件记录数,用51减去35等于16,也就是说该RAID-5条带大小为16个文件记录的大小,而每个文件记录占2个扇区,所以条带大小为32个扇区。

0x10属性在RAID分析中的作用

0x10属性在RAID分析中比较有用的是时间戳信息。通过各成员盘时间戳的比较能够判断出数据的新鲜度,有时候还能够判断出哪个条带是校验块。

以上文中图17-16的文件记录内的0x10属性为例,0x10属性中“文件创建时间”的信息如图17-17所示。

图17-17中阴影部分是3块成员盘同一扇区0x10属性中的“文件创建时间”,旁边是数据解释器对时间信息的解释,很明显2.img的时间是不合理的,所以2.img当前扇区所在条带是校验块。

图17-17 3块成员盘的时间戳信息

0x30属性在RAID分析中的作用

0x30属性在RAID分析中比较有用的是文件名信息。通过各成员盘文件名的比较能够判断出哪个条带是校验块。

下面通过实例说明,一个3块成员盘组成的RAID-5。同时跳转到3块成员盘的3145797号扇区,这是$MFT的文件记录部分,它们的0x30属性如图17-18所示。

图17-18 3块成员盘的0x30属性

图17-18中阴影部分是3块成员盘同一扇区0x30属性中的文件名信息,很明显1.img的文件名部分都是乱码,所以1.img当前扇区所在条带是校验块。

0x80属性在RAID分析中的作用

0x80属性分为常驻和非常驻两种。对于常驻的0x80属性,其属性体就是文件的内容;对于非常驻的0x80属性,属性中有文件大小、Run List等信息。只要熟练掌握这些结构,就能够有效地帮助我们在分析RAID时判断校验块,有时还能辅助判断数据块的循环方向。为节省篇幅,这里就不再举例了。

RAID条带大小的判断

条带是RAID处理数据的基本单元,所以分析出条带大小对于恢复RAID数据是至关重要的一个环节。条带大小也称为块大小。

分析条带大小的方法有很多,这些方法基本都需要运用到文件系统结构,所以针对不同系统下的RAID,分析条带大小的方法也有区别。

在NTFS文件系统中,$MFT文件是一个最大的元文件,其结构也是我们非常熟悉的,所以可以利用这个文件分析RAID条带大小。

利用$MFT分析RAID条带大小又分两种情况,一种是$MFT文件中有文件记录号,另一种情况是$MFT文件中没有文件记录号。Windows 2000及Windows NT操作系统格式化的NTFS文件系统是没有文件记录号的,从Windows XP开始以及后来的Windows 2003、Windows Vista、Windows 2008等系统格式化的NTFS就都有文件记录号了。这两种情况我们分别分析。

1.$MFT文件中有文件记录号的情况

有文件记录号的情况下分析RAID条带大小比较简单,首先需要找到每块物理盘中的$MFT文件记录,并且要保证找到的文件记录在每块物理盘的同一扇区,然后查看这些文件记录的文件记录号,如图17-19所示。

从图17-19中可以看到三块物理盘在同一扇区的文件记录号分别为175、47和111,三个记录号两两之间的差都是64,这就可以说明该RAID条带大小是64个文件记录的大小,而每个文件记录为2个扇区,所以条带大小就是128扇区。

2.$MFT文件中没有文件记录号的情况

如果$MFT文件中没有文件记录号,上面的方法就不能用来判断RAID条带大小。这时对RAID条带大小的分析又因RAID级别不同而分为两种情况。

一种情况是不含校验的RAID级别,主要是指RAID-0,对于这种RAID的条带大小分析,没有完全固定的方法,需要针对具体情况具体分析,但有一点是肯定的,RAID条带大小一定是2N,这是一个可以利用的信息,再通过分区信息、文件系统信息等也很容易分析出RAID条带大小。

图17-19 文件记录号

另一种情况是针对包含校验的RAID级别,主要是指RAID-4、RAID-5、RAID-6、RAID-5EE等。分析这些RAID的条带大小,就可以借助校验条带分析,在一块物理盘中找到一个校验条带的开始扇区,记住这个扇区号,继续往后找,后面会有连续的一些校验扇区,直到突然又出现了正常数据,说明校验条带已经结束了,那么校验条带的开始扇区到这个正常数据所在扇区之间的扇区数,就是一个条带的大小。

判断哪些扇区是校验的方法前文介绍过。对于物理盘数量为奇数的RAID-5,校验扇区非常容易判断,因为物理盘数量为奇数,在同一条带组中正常数据的条带数就是偶数,数量为偶数的相同数值经过异或运算结果一定是0,正常文件记录的头标志“46 49 4C 45”经过异或后就是4个00,这很容易看得出来。

而对于物理盘数量为偶数的RAID-5,在同一条带组中正常数据的条带数就是奇数了,数量为奇数的相同数值经过异或运算后结果一定还是原数值,那么正常文件记录的头标志“46 49 4C 45”经过异或后的校验结果还是“46 49 4C 45”,这就比较难判断了,如图17-20所示。

图17-20 4块成员盘的文件记录

图17-20所示是一个由4块硬盘构成的RAID-5,目前都位于1 184 768号扇区,但4块成员盘的该扇区前4个字节都是“46 49 4C 45”,这时就不能通过这4个字节判断哪个扇区是校验了,而是要具体分析文件记录中的每个属性,比如0x10属性中的时间值是否合乎常规、0x30属性中的文件名是否正常、0x80属性中的RUN LIST结构是否正确、每个属性的类型值及大小是否合法等等,都能够分析出哪个扇区是校验。

RAID成员盘的盘序判断

盘序的分析也有很多方法,这里还是谈谈借助$MFT文件记录判断盘序的方法。

借助$MFT文件记录判断盘序的方法依然分为两种情况,一种是有文件记录号的,另一种是没有文件记录号的。

如果$MFT的文件记录中有文件记录号,盘序判断就相对容易些,记录号从小到大排列的顺序基本就是RAID的盘序了,尤其是在RAID-0中,在RAID-5中不完全是这样,因为RAID-5还要涉及数据的循环方向,但文件记录号从小到大排列的顺序也是可以参考的。

看一下图17-21中的例子。

图17-21 判断盘序的例子

图17-21中三块成员盘在1184788扇区的文件记录号分别为1657、1721、1593,那么可以初步判断这三块成员盘在RAID中的盘序为:硬盘0为0号盘,硬盘1为1号盘,硬盘2为2号盘。

如果$MFT的文件记录中没有文件记录号,盘序判断就要复杂一些,尤其是对于RAID-5来说。对于没有文件记录号的盘序判断放在17.2.3节讲解,因为这需要先判断出校验的方向,然后再用物理盘中的校验块反推出该物理盘上第一个校验块所在扇区,从而就能够判断该物理盘在RAID中的盘序了。

RAID校验方向的判断

在前面的内容中我们讲过RAID-5的基本结构有左异步、左同步、右异步、右同步。在这些名称中的“左”、“右”就是针对校验方向来说的,左异步、左同步结构中的校验块都是从最后一块物理盘开始,依次往前面的物理盘中排列,整个RAID都按照这个规律循环往复,这种校验的排列方向我们称为“左结构”;而右异步、右同步结构中的校验块都是从第一块物理盘开始,依次往后面的物理盘中排列,整个RAID都按照这个规律循环往复,这种校验的排列方向我们称为“右结构”。

左结构的RAID-5如图17-22所示。

图17-22 左结构的RAID-5

右结构的RAID-5如图17-23所示。

图17-23 右结构的RAID-5

在判断校验方向之前,都需要先把条带大小分析出来,也就是说分析条带大小是分析RAID的第二步,分析RAID开始扇区是第一步。如果盘序也已分析出来,那么再分析校验方向就很容易了,只需要把每块物理盘上的校验条带找到,然后画出图来,就像图17-22或图17-23一样,是左结构还是右结构就一目了然了。

而如果盘序还没有确定下来,只确定了RAID开始扇区和条带大小,那么就可以用反推法确定校验的方向,从而也就确定了盘序。

下面具体讲解反推法的分析思路。

假设有两个RAID-5,都由3块成员盘组成,RAID起始扇区都是物理盘的0号扇区,条带大小都是16个扇区,校验方向一个是左结构,一个是右结构,如图17-24和图17-25所示。

图17-24 左结构RAID-5

图17-25 右结构RAID-5

对图17-24和图17-25中的两个RAID-5,现在仅仅分析出了RAID开始位置是物理盘的0号扇区,条带大小是16个扇区,我们看如何利用反推法分析出它们的盘序和校验方向。

还是以MBR磁盘及NTFS文件系统为例作分析,因为RAID开始位置是物理盘的0号扇区,所以必定有一块物理盘的0号扇区为MBR(也可能有两块物理盘0号扇区有MBR,另一个是校验)。对于左结构来说,0号扇区是MBR的物理盘一定是RAID-5的0号盘,如图17-24所示;对于右结构来说,0号扇区是MBR的物理盘一定是RAID的1号盘,如图17-25所示,但现在并不知道哪个是左结构,哪个是右结构,所以盘序也不能确定。

从物理盘前部的条带往往无法分析出哪些条带是校验,所以可以找到我们比较熟悉的$MFT区域进行分析,通过搜索或者通过BPB参数计算的方法可以很容易找到每块物理盘中的文件记录,并可以用前面讲过的方法在文件记录区域找到校验条带。

现在假设,我们在图17-24的硬盘0中180号扇区发现校验扇区,那么180号扇区所在的条带也就是校验条带了,然后用反推法就能算出硬盘0的第一个校验条带是几号条带,再加上硬盘0的0号扇区是MBR,就能断定硬盘0的盘序和该RAID-5的校验方向了。

具体算法是,用在硬盘0中找到的校验扇区号对条带大小与盘数的乘积取余,即

180 MOD(16×3)=36

计算的结果等于36,这个值的含义就是:36号扇区一定是校验。从图17-24可以看到36号扇区属于2号条带,所以硬盘0的2号条带是该盘的第一个校验条带,0号条带和1号条带只能是数据条带了,而0号扇区又是MBR,所以硬盘0一定是0号盘。硬盘0被确定为0号盘,该RAID-5就只能是左结构了。

然后再去硬盘1和硬盘2中找到某个校验扇区,用取余的方法算出它们的第一个校验块所在位置,也就能确定它们的盘序了。

再看图17-25,这个RAID-5中硬盘1的第一个扇区是MBR,可以到它的文件记录区域找一个校验扇区,假设为169号扇区,计算该盘第一个校验块所在位置的方法是

169 MOD(16×3)=25

计算的结果等于25,这个值的含义就是:25号扇区一定是校验。从图17-25可以看到25号扇区属于1号条带,所以硬盘1的1号条带是该盘的第一个校验条带,0号条带和2号条带只能是数据条带了,而0号扇区又是MBR,所以硬盘1一定是1号盘。

硬盘1被确定为1号盘,该RAID-5就只能是右结构了。然后再去硬盘0和硬盘2中找到某个校验扇区,用取余的方法算出它们的第一个校验块所在位置,也就能确定它们的盘序了。

这就是用反推法分析校验方向和盘序的具体思路。

RAID数据同步与异步的判断

在前面的内容中我们讲过RAID-5的基本结构有左异步、左同步、右异步、右同步。在这些名称中的“异步”、“同步”就是针对数据方向来说的,左异步、右异步结构中各条带组内的数据块均由低号盘向高号盘依次写入,整个RAID都按照这个规律循环往复,这种数据块的排列方向被称为“异步”;而左同步、右同步结构中每个条带组内的第一个数据块首先写入校验块所在物理盘的下一物理盘中,其余数据块再依次写入,整个RAID都按照这个规律循环往复,这种数据的排列方向被称为“同步”。

在RAID-5的实际分析中如何确定数据走向是异步还是同步呢?下面用一个左结构的例子进行讲解。图17-26和图17-27是分析对照图。

图17-26 异步结构图17-27 同步结构

图17-28是分析对象。

图17-28 分析对象

分析过程如下:

(1)从“数据块A”入手

首先查看“数据块A”的末尾扇区的数据,然后再查看“数据块B”和“数据块D”开始扇区的数据。如果“数据块A”末尾扇区的数据能够跟“数据块B”开始扇区的数据衔接,那么该RIAD属于异步结构,即图17-26所示的结构;如果“数据块A”末尾扇区的数据能够跟“数据块D”开始扇区的数据衔接,那么该RIAD属于同步结构,即图17-27所示的结构。

(2)从“数据块C”入手

如果从“数据块A”上看不出衔接性,还可以从“数据块C”入手分析,首先查看“数据块C”的末尾扇区的数据,然后再查看“数据块D”和“数据块F”开始扇区的数据。如果“数据块C”末尾扇区的数据能够跟“数据块D”开始扇区的数据衔接,那么该RIAD属于异步结构,即图17-26所示的结构;如果“数据块C”末尾扇区的数据能够跟“数据块F”开始扇区的数据衔接,那么该RIAD属于同步结构,即图17-27所示的结构。

(3)从“数据块D”入手

如果从“数据块C”上也看不出衔接性,还可以从“数据块D”入手分析,首先查看“数据块D”的末尾扇区的数据,然后再查看“数据块E”和“数据块B”开始扇区的数据。如果“数据块D”末尾扇区的数据能够跟“数据块E”开始扇区的数据衔接,那么该RIAD属于异步结构,即图17-26所示的结构;如果“数据块D”末尾扇区的数据能够跟“数据块B”开始扇区的数据衔接,那么该RIAD属于同步结构,即图17-27所示的结构。

(4)从“数据块E”入手

如果从“数据块D”上依然看不出衔接性,还可以从“数据块E”入手分析,首先查看“数据块E”的末尾扇区的数据。然后再查看“数据块F”和“数据块H”开始扇区的数据。如果“数据块E”末尾扇区的数据能够跟“数据块F”开始扇区的数据衔接,那么该RIAD属于异步结构,即图17-26所示的结构;如果“数据块E”末尾扇区的数据能够跟“数据块H”开始扇区的数据衔接,那么该RIAD属于同步结构,即图17-27所示的结构。

数据同步与异步的分析一般都是作为分析RAID-5的最后一个步骤。这个结构分析完了,RAID-5的完整结构就全部分析结束了,下一步就可以开始重组数据了。

Windows系统下各种RAID数据恢复实例分析

RAID恢复是数据恢复技术中的难点,不但要求有扎实的基本功和丰富的经验,还需要绝对的耐心和细心,尤其是对于一些结构很复杂的RAID,必须付出更多的努力。

本节我们将进行实例分析。因为读者的基础不一,为了照顾到所有读者,我们提供的案例有难有易,但基本会本着先易后难的原则循序渐进。

本书讲解的案例全部来自我们工作中的实际业务,绝不是通过程序模拟出来的,所以每一个案例都有血有肉,对数据恢复技术的爱好者来讲应该是弥足珍贵的。

同时为了照顾用户的隐私,对有些案例我们会做一些技术处理,以免泄露用户的数据信息。

RAID都是由两块以上硬盘组成的,为了方便对案例的保存,这里一般将RAID中的每块硬盘做成镜像文件,保存在大容量硬盘中,每个镜像文件就视为一块物理盘,在做RAID的分析时,直接打开文件分析即可。

对于RAID的恢复,可以分为两个步骤:第一步,分析RAID组成结构;第二步,数据重组。其中第一步是难点,是最为关键的,这也学习RAID恢复的重点。第一步做完之后,第二步就非常容易了,重组数据可以通过镜像的方式,也可以通过工具组成虚拟RAID,然后直接提取数据,这些方法在前面的内容中也介绍过,随后将通过案例进行实际操作。

因为大多RAID中每块物理盘的容量都非常大,如果将每块物理盘都完整地做成文件镜像,将很难有那么大的空间存放,所以对有些RAID,我们只镜像每块物理盘的小部分扇区,只要这些扇区能够满足我们分析RAID结构的目的,这就够了,毕竟对于学习和研究来说,分析RAID结构是最重要的。

RAID-0数据恢复实例分析

该案例是一个非常简单的常规RAID-0案例,由两块500GB物理盘组成,两块物理盘已被做成两个文件镜像。这两个文件是RAID-0中两块成员盘的部分镜像,直接用WinHex打开这两个文件就可以进行分析了。

用WinHex打开镜像文件后,WinHex是用“页”来显示文件内容的,而不是“扇区”,如图17-29所示。

图17-29 WinHex用“页”来显示文件内容

在分析RAID结构时,需要以“扇区”为单位去分析,而不是“页”。WinHex提供将“页”转换为“扇区”的功能,具体菜单命令为“专用工具”→“将镜像文件转换为磁盘”,如图17-30所示。

图17-30 将镜像文件转换为磁盘

分析RAID结构

分别将每个镜像文件解释为磁盘后,就可以开始分析了,这一步是恢复磁盘RAID数据的重点步骤。

这个RAID是由两块盘组成的RAID-0。首先做一个约定,我们这里称文件“0.img”为“硬盘0”,文件“1.img”为“硬盘1”,但请读者注意,这些文件的编号只是随意编排的,并不一定与RAID中各个硬盘的盘序相符。

通过WinHex查看两块盘的第一个扇区可以看出,“硬盘0”的第一个扇区是MBR,如图17-31所示。

图17-31 “硬盘0”的第一个扇区是MBR

从图17-31的MBR扇区尾部可以看见磁盘签名、分区表项及结束标志。“硬盘1”的第一个扇区看不出是什么结构,如图17-32所示。

图17-32 “硬盘1”的第一个扇区

从两块成员盘的第一个扇区就可看出“硬盘0”是RAID的开始,所以“硬盘0”是0号盘,而“硬盘1”自然就是1号盘了,这样,RAID的盘序就确定了。

下面分析RAID的条带大小。

从“硬盘0”MBR扇区的分区表可以看出该RAID只分了一个区,分区开始位置在63号扇区,如图17-33所示。

图17-33 “硬盘0”MBR扇区的分区表

跳转到“硬盘0”的63号扇区,发现是一个DBR扇区,如图17-34所示。

图17-34 “硬盘0”的63号扇区

从这一点可以证明该RAID-0的条带大小一定大于或等于64扇区,而“硬盘0”的64号扇区的内容显然是$Boot文件的第二个扇区,即NTLDR区域,也就是说与DBR是衔接的,如图17-35所示。

图17-35 “硬盘0”的64号扇区的内容

这就可以断定该RAID-0的条带大小一定大于64扇区了。

再跳转到“硬盘0”127号扇区,查看127扇区的内容与128扇区的内容是否有衔接性,如果没有,就可以断定块大小为128扇区了。图17-36所示为“硬盘0”127号扇区。

图17-36 “硬盘0”的127号扇区

图17-37所示为“硬盘0”128号扇区。

图17-37 “硬盘0”的128号扇区

从这两个扇区看不出它们是否有衔接性,所以无法判断条带大小是否为128扇区。再看“硬盘1”的127号扇区和的128号扇区,同样看不出数据是否衔接,所以这种方法行不通,我们只能寻找其他方法。

因为NTFS文件系统中的$MFT文件是我们所熟悉的,可以从这个文件入手来判断条带大小。找$MFT文件的位置有两种方法,一是可以通过搜索文件记录的头标志找到,二是可以通过BPB参数大致算出$MFT文件的开始位置。我们采用第二种方法。

DBR在“硬盘0”的63号扇区。跳转到DBR扇区,通过WinHex的模板查看BPB参数得知$MFT文件开始于20152簇,如图17-38所示。

图17-38 DBR扇区的BPB参数模板

从BPB参数中还能够知道每簇扇区数为8,所以可以计算出$MFT文件在逻辑卷中的扇区号为20152×8=161216,而该RAID-0是由两块成员盘组成的,所以$MFT文件在物理盘中的开始扇区大致为(161216÷2)+63=80671。跳转到“硬盘0”的80671扇区,果真是$MFT文件的开始,如图17-39所示。

图17-39 “硬盘0”的80671号扇区

同时将“硬盘1”也跳转到80671号扇区,内容如图17-40所示。

图17-40 “硬盘1”的80671号扇区

显然这也是一个文件记录,现在就从这两个并列的扇区入手,分析条带大小。

从文件记录的内容中可以看到该文件系统的文件记录包含“文件记录号”这一参数,在文件记录的“2CH-2FH”偏移地址处就是当前文件记录的记录号,“硬盘0”的80671号扇区为0号文件记录,如图17-41所示。

图17-41 “硬盘0”的80671号扇区为0号文件记录

“硬盘1”的80671号扇区为0x40号文件记录,换算为十进制也就是64,如图17-42所示。

图17-42 “硬盘1”的80671号扇区为64号文件记录

两块成员盘的80671号扇区所在文件记录的差为64,而每个文件记录占2个扇区,所以这两个并列的扇区之间就相差64×2=128个扇区,即条带大小为128扇区。

数据重组

重组数据可以通过镜像的方式,也可以通过工具组建虚拟RAID-0,然后直接提取数据,下面分别讲解。

做镜像

我们这里介绍用Raid Reconstructor做镜像的方法,做法如下:

第1步 选择RAID类型。

打开Raid Reconstructor工具,选择RAID类型为RAID-0,如图17-43所示。

图17-43 选择RAID类型

第2步 设定盘数。

该RAID-0由两块成员盘组成,在“drives”后面输入“2”,如图17-44所示。

图17-44 设定盘数

第3步 加入镜像文件。

类型选择好后,在“Drive1”和“Drive2”处分别把两个镜像文件加载进去,如图17-45所示。

图17-45 加载镜像文件

注意:在加载镜像文件时必须按照事先分析好的盘序依次加进去。

第4步 设置条带大小。

两个镜像文件按顺序加载好后,需要设置RAID在每块盘中的起始扇区号及条带大小,“Start sector of the RAID on each individual drive”这一项就是设置RAID在每块盘中的起始扇区号的,当前RAID-0起始于每块物理盘的0号扇区,所以填0即可。“Block size”处是填写条带大小的位置,依据前面分析好的结果,填写128,如图17-46所示。

图17-46 设置条带大小

第5步 打开驱动器。

参数都设置好后,单击工具下方的“Open drive”,将驱动器打开,如图17-47所示。

图17-47 打开驱动器

第6步 做镜像。

该RAID的结构我们已经分析好,所以工具中的“Analyze”就可以跳过了,直接进入“Copy”。

可以选择做成硬盘镜像,也可以选择做成文件镜像,这里选择做成镜像文件,如图17-48所示。

图17-48 做镜像

选择一个镜像文件的保存路径后,单击“Copy”按钮就可以开始做了。因为这两块盘并不是RAID-0中完整的两块成员盘,只是部分扇区的镜像,所以数据重组后无法看到文件。如果是两块完整的硬盘或镜像文件,这一步做完后就可以看到RAID逻辑盘中的文件了。

组建虚拟RAID

有些时候并不一定需要把RAID逻辑盘做成镜像,而只需要组建一个虚拟RAID就可以提取需要的数据了,下面实际操作。

第1步 打开镜像文件。

打开工具R-studio,选择Drive→Open Image命令,如图17-49所示。

图17-49 打开镜像文件

打开镜像文件所在的路径,选中两个镜像文件,单击“打开”按钮,如图17-50所示。

图17-50 选中两个镜像文件

第2步 创建虚拟RAID。

选择菜单“Create”→“Create Virtual BLOCK RAID”,创建一个虚拟条带RIAD,如图17-51所示。

图17-51 创建一个虚拟条带RIAD

然后在工具的界面右侧选择RAID类型为RAID-0,如图17-52所示。

图17-52 选择RAID类型为RAID-0

创建了一个虚拟RAID-0后,在界面右边的虚拟RAID-0区域内单击鼠标右键,把两个镜像文件按照分析好的盘序的顺序加入进来,如图17-53所示。

图17-53 将镜像文件添加到虚拟RAID-0中

第3步 设置参数。

用鼠标单击右边的“Block Size”,把块大小设置为64KB(128扇区),如图17-54所示。

图17-54 设置参数

第4步 查看数据。

参数设置正确后,在左边对话框中的“Virtual Block Raid 1”就会出现RAID-0逻辑盘的分区,如图17-55所示。

图17-55 查看数据

用鼠标双击“Partition1”就能够直接看到RAID-0逻辑卷中的数据了,或者也可以在“Virtual Stripe Set 1”上单击鼠标右键,对该虚拟RAID进行扫描,如图17-56所示。

图17-56 对该虚拟RAID进行扫描

另外也把这个虚拟RAID-0做成一个镜像文件,如图17-57所示。

图17-57 把虚拟RAID做成一个镜像文件

以上方法可以根据实际情况选择,总之以最终得到数据为目的。

RAID-1E数据恢复实例分析

该案例由3块73GB的SCSI硬盘组成,用户也说不清用的是哪一种级别的RAID,所以我们首先需要分析这3块盘组建的是哪一种RAID。

分析RAID级别

我们将3块物理盘从0号扇区开始做成3个文件镜像,命名为“0.img”、“1.img”和“2.img”,这3个文件是RAID中3块成员盘的部分镜像,我们这里称文件“0.img”为“硬盘0”、文件“1.img”为“硬盘1”、文件“2.img”为“硬盘2”,但这些文件的编号只是随意编排的,并不一定与RAID中各个成员盘的盘序相符。

先分析每块硬盘的第一个扇区,“硬盘0”的第一个扇区内容如图17-58所示。

图17-58 “硬盘0”的第一个扇区

“硬盘0”的第一个扇区是MBR,分区表中有一个类型为0x07的分区表项,其具体参数如图17-59所示。

图17-59 “硬盘0”第一个扇区的分区表模板

分区表中显示分区开始于63号扇区,大小为12 673 521个扇区。

该MBR中只使用了这一项分区表项,其他3项都是空的,而这一项分区表项所管理的分区大小为12 673 521扇区,大约是个6GB的大小,并且分区已被激活,说明它是个系统分区,是RAID控制器划分出来的独立分区,并不是RAID逻辑盘上的一个逻辑卷,所以我们无法从分区大小上判断这个RAID的级别。

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

图17-60 “硬盘1”第一个扇区

从图17-60中可以看到“硬盘1”第一个扇区是一个空扇区。

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

图17-61 “硬盘2”第一个扇区

从图17-61中可以看到“硬盘2”的第一个扇区也全部为0。

通过3块成员盘第一个扇区内的数据来看,它们肯定是不符合异或运算的,所以可以排除RAID-3、RAID-4、RAID-5这几个级别,另外因为成员盘数目只有3块,所以也可以排除RAID-10、RAID-5E、RAID-5EE、RAID-6这几个级别,那么剩下的可能性就是JBOD、RAID-0和RAID-1E了。

继续分析每块成员盘后面的扇区,在“硬盘1”的16号扇区又发现了MBR,与“硬盘0”的第一个扇区完全一样,如图17-62所示。

图17-62 在“硬盘1”的16号扇区

“硬盘0”和“硬盘2”的16号扇区则全部为0,从这一点可以排除JBOD和RAID-0的可能性,因为这两种级别的RAID没有冗余数据,也就是没有重复数据的可能性。

那么该RAID的级别就只能是RAID-1E了,不过这只是推断,还需要在下面的分析中进行验证。

分析条带大小和盘序

在第1步中我们推断该RAID的级别很可能是RAID-1E,那么我们就假设它是RAID-1E,然后从后面的分析中加以验证。

3块成员盘组成RAID-1E后数据的分布情况如图17-63所示。

图17-63 3块成员盘组成的RAID-1E数据分布图

从图17-63看,RAID-1E的数据分布有这样的规律:在各个物理盘中,以两个条带组为一个单元,在一个单元中,上一个条带组内是连续排列的数据,下一个条带组则是上一个条带组的错位镜像,即将上一个条带组中每个成员盘内的数据向右移动一块盘的位置,写入下一个条带组的各个成员盘中,最后一个成员盘的数据则写入第一个成员盘中。

在第1步的分析中,我们发现“硬盘0”的第一个扇区是MBR,这可以说明“硬盘0”就是0号盘,相当于图17-63中“物理盘0”第一个条带的数据块“D0”的第一个扇区。

又因为我们在“硬盘1”的16号扇区发现了MBR,这就是对图17-63中“物理盘0”的数据块“D0”的镜像,也就相当于图17-63中“物理盘1”第二个条带的数据块“D0”。通过这一点我们可以得出两个结论:第一,“硬盘1”就是1号盘;第二,该RAID条带大小是16个扇区。

通过以上的分析,该RAID结构基本清楚了:RAID级别为RAID-1E,盘序为“硬盘0”是0号盘、“硬盘1”是1号盘、“硬盘2”是2号盘,RAID条带大小是16个扇区。

我们可以进一步验证上面的推论。

从RAID逻辑盘上看,63号扇区是DBR,按照条带大小为16个扇区,那么这个DBR就应该在数据块“D3”的最后一个扇区,反映到物理盘上,就是“硬盘0”的47号扇区和“硬盘1”的63号扇区。下面我们用WinHex查看这两个扇区。

“硬盘0”的47号扇区的内容如图17-64所示。

图17-64 “硬盘0”的47号扇区

“硬盘0”的47号扇区确实是一个NTFS文件系统的DBR。接下来再看“硬盘1”的63号扇区,如图17-65所示。

图17-65 “硬盘1”的63号扇区

“硬盘1”的63号扇区也是一个NTFS文件系统的DBR,都与我们推断的结论相符,所以最终我们可以确定,该RAID的结构为:RAID级别为RAID-1E,盘序为“硬盘0”是0号盘、“硬盘1”是1号盘、“硬盘2”是2号盘,RAID条带大小是16个扇区。

数据重组

对RAID-1E进行数据重组,目前还没有现成的软件可以使用,也就是说现有的RAID恢复工具都不能直接支持RAID-1E的级别,所以只能自己动手写个小程序,或者用WinHex的脚本功能,都可以重组RAID-1E的数据。

重组的基本思路:将图17-63中各个物理盘的0号条带组、2号条带组、4号条带组等所有编号为偶数的条带组按照盘序衔接到一起,就拼凑成为了完整的RAID-1E逻辑盘。

左同步RAID-5数据恢复实例分析

该RAID-5由4块300GB的SAS硬盘组成,因服务器掉电而导致RAID-5无法访问。把4块SAS硬盘去RAID化后插入SAS模组中分别做成文件镜像,然后用WinHex同时打开4个文件镜像进行分析。首先做一个约定,我们这里称文件“0.img”为“硬盘0”、文件“1.img”为“硬盘1”、文件“2.img”为“硬盘2”、文件“3.img”为“硬盘3”,但请读者注意,这些文件的编号只是随意编排的,并不一定与RAID-5中各个硬盘的盘序相符。

下面开始分析该RAID-5的结构。

分析RAID开始扇区

首先用WinHex查看“硬盘0”的第一个扇区,内容如图17-66所示。

图17-66 “硬盘0”的第一个扇区

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

图17-67 “硬盘1”的第一个扇区

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

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

“硬盘3”第一个扇区的内容如图17-69所示。

图17-69 “硬盘3”的第一个扇区

从图中看这4块成员盘的第一个扇区都不是MBR,而是一些杂乱无章看不懂的数据,非常像是服务器的配置信息,从这一点看该RAID的开始扇区应该不在硬盘的头部。

既然物理盘头部都没有MBR,那么MBR应该在配置信息之后,所以下一步可以在每块物理盘中搜索MBR。搜索MBR的方法即搜索MBR的结束标志“55 AA”。

经过搜索,在4块物理盘中都没有发现MBR,只在硬盘2的21380号扇区找到一个DBR,如图17-70所示。

图17-70 硬盘2的21 380号扇区

这是一个NTFS文件系统的DBR,我们用模板看看其BPB参数,如图17-71所示。

图17-71 DBR的BPB参数模板

首先我们注意“隐藏扇区数”的值为64 260,并不是常规情况下看到的63,这个要引起重视,“隐藏扇区数”也就是本分区的相对开始扇区号,该DBR是我们找到的第一个DBR,也就是说该DBR所在的分区是RAID-5逻辑盘的第一个分区,所以这个“隐藏扇区数”就应该是RAID-5逻辑盘的绝对扇区号。

RAID-5逻辑盘的第一个分区开始于64 260扇区,同时也说明在第一个分区之前有64 260个扇区,这些扇区是做什么用的呢?

现在我们先做一个计算:64260÷(RAID成员盘数-1)=64260÷(4-1)=21420。这个值跟该DBR所在扇区的扇区号21 380非常接近,这就说明了这个RAID-5的开始扇区是在物理盘的头部,4块物理盘组成RAID-5逻辑盘之后,先在逻辑盘中拿出了64 260个扇区存储了一些数据,这些数据应该是系统的管理信息,之后从64 260号扇区开始才作为第一个分区的开始,所以逻辑盘的64 260扇区是分区的DBR。

经过以上分析可以确定该RAID-5开始扇区就在物理盘的头部,但逻辑盘中第一个分区的开始位置在64 260扇区,这个要记住,在后面做RAID-5虚拟重组是会用到。

分析RAID结构

经过第一步的分析我们知道,4块物理盘的头部都有很多管理信息,这些数据很难看懂,所以无法用这些信息来分析盘序、块大小等结构,甚至连哪块物理盘可能是0号盘都无法看出,那么我们只能去找$MFT文件区域,从文件记录上入手分析RAID-5的结构。

找$MFT文件的方法一是可以通过搜索来找,二是可以通过计算来确定其大概位置,然后在附近稍作搜索就能快速找到。我们采用先计算的方法。

从图17-71中可以看到该分区$MFT文件起始簇号为3 432 350,每簇扇区号为1,所以$MFT文件在物理盘中的大概起始扇区号的计算方法为:(3 432 350×1÷3)+(64260÷3)=1 165 536,这就是把$MFT文件在分区中的起始簇号转化为在物理盘上的起始扇区号的数值,但因为RAID-5的数据是以条带为单位循环写入,所以计算出来的这个扇区号不会完全精确,只是一个出入非常小的大概位置。

用WinHex跳转到每块物理盘的1 165 536扇区,在附近很快找到了$MFT文件的文件记录,是在硬盘1的1 165 474号扇区,如图17-72所示。

图17-72 硬盘1的1 165 474号扇区

硬盘1的1 165 474号扇区是$MFT文件自身的文件记录,也就是$MFT文件中的第一个文件记录。从该文件记录0x80属性的Run List中可以看出$MFT文件有三个碎片,我们从Run List模板中看一下具体数值,如图17-73所示。

图17-73 Run List模板

从Run List模板中可以看出,第一个数据流只有32个簇的大小,该分区每簇为1个扇区,32个簇也就是32个扇区,相当于16个文件记录,所以第一个数据流文件记录太少,这么少的数据流显然不够分析RAID-5结构。从模板中看第二个数据流为20 056个簇,应该够分析了,所以应该找到第二个数据流,从第二个数据流入手分析RAID-5的结构。

第二个数据流的起始簇号为54 560,这是以第一个数据流的起始簇号3 432 350为起点的相对簇号。我们可以把这个相对簇号转换为第二个数据流在物理盘中的绝对扇区号,具体算法为:54 560×每簇扇区数÷3+第一个数据流在物理盘中的绝对扇区号,即

(54 560×1÷3)+1 165 474=1183660

这就是$MFT文件第二个数据流在物理盘中的起始扇区号,当然这个扇区号也不会完全精确,只是一个出入非常小的大概位置。

有读者可能觉得这样算太麻烦,直接搜索不是很方便吗。如果通过直接搜索的方式去找$MFT文件,就可能导致找到的$MFT文件不一定是本分区的$MFT文件,而是以前的逻辑盘或者物理盘中遗留的。用这些$MFT文件进行RAID结构分析,会导致分析的结果有误。

下面跳转到每块物理盘的1 183 660扇区附件寻找$MFT文件的第二个数据流,找的时候还有一个要求,就是4块物理盘要在同一个扇区都有文件记录,因为我们分析的时候需要对4块物理盘进行并列分析,所以必须位于同一扇区。

结果发现从1 183 744号扇区开始,每个物理盘都是文件记录了,那么我们的分析就从这里开始。

分析条带大小

在RAID结构分析中,一般都是把条带大小放在第一位。该RAID-5的条带大小很好分析,因为这个服务器用的Windows 2003系统,文件记录中有记录号。根据我们前面介绍过的方法,两个相邻的记录号相减就是条带大小。

下面具体分析4块物理盘1 183 744号扇区的内容。“硬盘0”的1 183 744号扇区如图17-74所示。

图17-74 “硬盘0”的1 183 744号扇区

“硬盘1”的1 183 744号扇区如图17-75所示。

图17-75 “硬盘1”的1 183 744号扇区

“硬盘2”的1 183 744号扇区如图17-76所示。

图17-76 “硬盘2”的1 183 744号扇区

“硬盘3”的1 183 744号扇区如图17-77所示。

图17-77 “硬盘3”的1 183 744号扇区

4块物理盘1 183 744号扇区看起来都是文件记录,如何判断哪个是校验呢?

因为这个RAID-5由4块硬盘组成,盘数为偶数,所以在一个条带组内的三个数据条带的文件记录头标志“46 49 4C 45”经过异或运算后,结果依然是“46 49 4C 45”。单从头标志就看不出谁是校验了,但仔细分析一下,还是很容易分辨的。我们用文件记录模板看一下硬盘3的1 183 744号扇区,如图17-78所示。

图17-78 硬盘3的1 183 744号扇区的模板

从模板中看硬盘3的1 183 744号扇区前面的结构还比较正常,都符合文件记录的结构,但从0x30属性往后,就是非法数值了,显然这是一个校验扇区。

再看其他三块成员盘的1 183 744号扇区,都是标准的文件记录,其中硬盘0的文件记录号为47,硬盘1的文件记录号为111,硬盘2的文件记录号为175,两两之间都相差64个文件记录,所以条带大小为128扇区。

分析盘序和校验方向

盘序和校验方向这两个参数有很大的相关性,所以分析的时候基本上没有先后次序,大多都是同时进行。

刚才从文件记录号上大概可以判断硬盘0、硬盘1、硬盘2是相邻的,不过还需要进一步验证。

通过前面分析的4块物理盘的1 183 744号扇区,判断出条带大小是128扇区,那么下一步就是从4块物理盘的1 183 744号扇区再往后跳转128个扇区,这样就进入了下一个条带组,从这个新的条带组的扇区中分析每块物理盘的记录号以及哪块盘是校验,分析完再往后跳转128个扇区。分析的同时把相应数据记录下来,如图17-79所示。

图17-79 分析的数据记录

图17-79中“P”代表校验,镜像文件代表相应的物理硬盘,从图中每块物理盘相应条带中的记录号和校验位置,立刻能判断出该RAID-5的结构就是左同步,盘序跟4个镜像文件的编号相符。

数据重组

针对这个RAID-5的实际情况,选择R-studio进行数据重组比较方便。打开R-studio把4个镜像文件加入,然后创建一个虚拟RAID-5,设置好结构参数。这些过程就不再详细演示了。

创建完成的虚拟RAID-5如图17-80所示。

图17-80 创建完成的虚拟RAID-5

在创建完成的虚拟RAID-5下并没有分区出现,难道是我们分析的结构不对?不是这个原因,导致看不到分区的原因是这个RAID-5的逻辑盘从64 260扇区开始,所以我们还需要在这个创建完成的虚拟RAID-5上再做一个区域,区域开始位置是64 260扇区,大小就是第一个分区的大小,具体数值可以到DBR中查看,如图17-81所示。

图17-81 在虚拟RAID-5上做一个区域

区域创建完成后就能看到分区了,如图17-82所示。

图17-82 看到分区了

最后只需用鼠标双击“Direct Volume”就能看到数据了。

右同步RAID-5数据恢复实例分析(每扇区2048字节)

本例是一个比较罕见的RAID-5,它的罕见之处在于以下三点:

(1)RAID-5结构为右同步。在各种结构的RAID-5中,左异步、左同步、右异步比较多见,唯独右同步是最少见的一种结构。

(2)每扇区大小为2048字节。在该RAID-5的逻辑盘中,扇区大小不是常规的512字节,而是被定义为2048字节,即每个扇区相当于常规扇区的4倍大小。

(3)每个$MFT记录大小为2048字节。该RAID-5的逻辑卷使用NTFS文件系统,但元文件$MFT中每个文件记录的大小不是常规的1024字节,而是2048字节,即每个文件记录相当于常规文件记录的2倍大小。

下面我们一起看看这个罕见的RAID-5实例。

该RAID-5由8块1TB的SATA硬盘组成,将这8块成员盘去RAID化后连接到一个8通道的SAS适配器上。因为SAS适配器可以向下兼容STAT硬盘,这样同时可以连接8块硬盘,比较方便。

由于该RAID-5成员盘的数目比较多,成员盘容量也很大,对成员盘做完整的磁盘镜像很不方便,于是我们将每块物理盘截取一部分扇区做成文件镜像,命名为“0.img”到“7.img”,并称文件“0.img”为“硬盘0”、文件“1.img”为“硬盘1”、文件“2.img”为“硬盘2”,以此类推。但这些文件的编号只是随意编排的,并不一定与RAID-5中各个成员盘的盘序相符。

在后文的分析过程中,根据需要,有些部分我们采用镜像文件的截图,而有些地方则采用原物理盘的截图,在效果上没有区别。

分析RAID开始扇区

用WinHex同时打开该RAID-5的8个镜像文件,查看8块成员盘的第一个扇区,就是“硬盘0”第一个扇区的内容,如图17-83所示。

图17-83 “硬盘0”的第一个扇区

“硬盘0”的第一个扇区很明显是MBR,并且结构完好。

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

图17-84 “硬盘1”的第一个扇区

“硬盘1”的第一个扇区看不出是什么结构。那么接着看下一块成员盘,“硬盘2”第一个扇区的内容如图17-85所示。

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

“硬盘2”的第一个扇区也看不出是什么结构,再接着看下一块成员盘。“硬盘3”第一个扇区的内容如图17-86所示。

图17-86 “硬盘3”的第一个扇区

“硬盘3”的第一个扇区内容全部为0,随后的“硬盘4”、“硬盘5”、“硬盘6”、“硬盘7”的第一个扇区全都是0,就不一一截图了。

从8块成员盘的第一个扇区分析,只有“硬盘0”的第一个扇区是MBR,并且结构完好,那么可以初步断定该RAID-5在物理盘上的起始扇区就是0号扇区。

分析RAID-5结构

分析条带大小

RAID-5结构的分析一般都从条带大小入手。刚才我们在“硬盘0”的第一个扇区发现了MBR,这个MBR中只有一个分区表项,其具体数值见图17-87中的模板。

图17-87 MBR的模板

从MBR的模板的分区表项1可以看出分区类型为NTFS、分区开始于63号扇区、大小是1 023 983 037扇区,是将近500GB的一个分区,而该RAID-5是由8块1TB的成员盘组成的,逻辑盘总容量应该是7TB才对。从这一点可以看出,该RAID-5是被RAID控制器划分了多个逻辑盘。

该分区开始于63号扇区,我们可以用WinHex跳转到“硬盘0”的63号扇区,看看它是不是NTFS文件系统的DBR。如果是一个完好的DBR,说明该扇区跟MBR还在一个条带内,也说明条带大小是大于等于64扇区的;如果不是DBR,则说明DBR跟MBR不在一个条带内,而是写入到其他成员盘中了,也就说明条带大小是小于64扇区的。

“硬盘0”63号扇区的内容如图17-88所示。

图17-88 “硬盘0”的63号扇区

结果发现“硬盘0”的63号扇区全部是0,并不是DBR,那么现在是不是可以肯定该RAID-5的条带大小就是小于64扇区的呢?如果是常规情况就可以这样下结论了,不过别忘了这是一个比较特殊的案例,我们先往下分析。

既然“硬盘0”的63号扇区不是DBR,我们就去其他成员盘中查找DBR。通过搜索发现“硬盘3”的124号扇区是DBR,如图17-89所示。

图17-89 “硬盘3”的124号扇区

这个DBR所在的位置非常奇怪,感觉很不合常理,但在其他成员盘的前部都不再有DBR了。我们具体分析一下这个DBR中的BPB参数就不会再觉得奇怪了,具体参数如图17-90中的模板。

图17-90 BPB参数模板

具体看BPB参数的模板,我们关注下面几个数值:

  • “每扇区字节数”的值为2048,也就是常规扇区的4倍大小;

  • “每簇扇区数”的值为2,即两个扇区为一个簇,按照常规扇区大小换算,应该为8个扇区;

  • “扇区总数”的值为1 023 983 036,是一个将近500GB的分区,按照常规扇区大小换算,应该是一个将近2TB的分区;

  • “$MFT的起始簇号”的值为786 432,将它换算为逻辑卷中的常规扇区号,应该为786432×2×4=6291456扇区;

  • “文件记录的大小描述”的值为“-11”,把它换算为文件记录的字节数等于2048,也就是说该逻辑卷中每个文件记录大小是4个常规扇区。

以上这些数值在后面的分析中都会用到,请读者将它们记住。

现在再回头分析DBR的位置问题,因为MBR中描述分区开始扇区为63,即DBR应该在逻辑盘的63号扇区,但该逻辑盘每扇区是2048字节,所以按照常规扇区计算,DBR在逻辑盘的位置应该是63×4=252扇区。

目前DBR位于“硬盘3”的124号扇区,用DBR在逻辑盘中的位置扇区减去124,结果是128,这基本可以说明当前RAID-5的条带大小是128个常规扇区,即64KB,同时也能说明,124号扇区有DBR的“硬盘3”在盘序上应该紧接着第一个扇区为MBR的“硬盘0”。

到这里我们初步判断该RAID-5的条带大小为128个常规扇区,即64KB。下面我们可以进一步验证。

通过DBR中的BPB参数我们计算出$MFT文件在逻辑卷中的起始扇区号为786432×2×4=6291456,而该RAID-5由8块成员盘组成,所以$MFT文件在物理盘中的大概起始扇区号的计算方法为(6291456÷7)+(252÷7),结果约等于898 815,这就是把$MFT文件在逻辑卷中的起始簇号转化为在物理盘上的起始扇区号的结果,但因为RAID-5的数据是以条带为单位循环写入,所以计算出来的这个扇区号不会完全精确,只是一个出入非常小的大概位置。

用WinHex跳转到898 815扇区,结果不是文件记录的第一个扇区,而是最后一个扇区,再往后翻一个扇区,即898 816号扇区就是文件记录的开始了。我们将每块成员盘都跳转到898 816号扇区进行对比分析,其中“硬盘0”898 816号扇区的内容如图17-91所示。

图17-91 “硬盘0”的898 816号扇区

“硬盘0”的898 816号扇区所在文件记录的记录号为65。

“硬盘1”898 816号扇区的内容如图17-92所示。

图17-92 “硬盘1”的898 816号扇区

“硬盘1”的898 816号扇区所在文件记录的记录号为129。

“硬盘2”898 816号扇区的内容如图17-93所示。

图17-93 “硬盘2”的898 816号扇区

“硬盘2”的898 816号扇区所在文件记录的记录号为33。“硬盘3”898 816号扇区的内容如图17-94所示。

图17-94 “硬盘3”的898 816号扇区

“硬盘3”的898 816号扇区所在文件记录的记录号为97。

“硬盘4”898 816号扇区的内容如图17-95所示。

图17-95 “硬盘4”的898 816号扇区

“硬盘4”的898 816号扇区是校验信息,我们通过文件记录的模板查看一下就很清楚了,如图17-96所示。

图17-96中方框内的参数明显都是非法值,所以这个扇区不是正常的文件记录,而是校验。

图17-96 文件记录的模板

“硬盘5”898 816号扇区的内容如图17-97所示。

图17-97 “硬盘5”的898 816号扇区

“硬盘5”的898 816号扇区所在文件记录的记录号为161。“硬盘6”898 816号扇区的内容如图17-98所示。

图17-98 “硬盘6”的898 816号扇区

“硬盘6”的898 816号扇区所在文件记录的记录号为193。

“硬盘7”898 816号扇区的内容如图17-99所示。

图17-99 “硬盘7”的898 816号扇区

“硬盘5”的898 816号扇区所在文件记录的记录号为1。

把以上各成员盘在898 816号扇的文件记录号排列在一起,结果如图17-100所示。

图17-100 各成员盘在898 816号扇的文件记录号

从这些文件记录号中很容易看出来,它们两两之间的差为32,所以该RAID-5的每个条带是32个文件记录的大小。在前文我们分析过,这个文件系统的$MFT文件中每个文件记录占4个扇区,所以32个文件记录就是128扇区,最终我们得出该RAID-5的条带大小就是128个常规扇区,即64KB。

分析盘序及循环方向

前面分析过,“硬盘0”的第一个扇区是MBR,所以这块硬盘不是0号盘就是1号盘了,在RAID-5为左结构的情况下它是0号盘,在RAID-5为右结构的情况下它是1号盘。另外又知道“硬盘3”的124扇区是DBR,这块硬盘在盘序上是接在“硬盘0”之后的。

以上是我们现在能得到的关于盘序的一点信息。对于具体的盘序及循环方向,在这个案例中我们利用文件记录进行分析,因为在前面的分析中我们已经发现该文件系统的文件记录中有记录号,这对我们的分析有很大帮助。

现在我们已经判定该RAID-5的条带大小为128扇区,并且分析了8块成员盘898 816号扇区的文件记录,那么下一步我们要从8块成员盘的898 816号扇区再往后跳转128个扇区,这样就进入了下一个条带组,从这个新的条带组的扇区中分析每块成员盘的记录号以及哪块盘是校验,分析完再往后跳转128个扇区。分析的同时把相应信息记录下来,如图17-101所示。

图17-101 各成员盘的文件记录信息

图17-101中“P”代表校验,从图中每块物理盘相应条带中的记录号和校验位置,立刻能判断出该RAID-5的结构就是右同步,盘序为“硬盘2”是0号盘、“硬盘0”是1号盘、“硬盘3”是2号盘、“硬盘1”是3号盘、“硬盘5”是4号盘、“硬盘6”是5号盘、“硬盘4”是6号盘、“硬盘7”是7号盘。

数据重组

该案例数据重组的方法也比较特殊,有两个原因:第一,因为RAID-5逻辑盘被定义为每扇区2048字节,用一般工具进行数据重组,按照MBR中分区表的指针是无法找到DBR的,所以不能识别逻辑卷;第二,RAID控制器把该RAID-5分为几个独立的逻辑盘,我们必须一一找到每个逻辑盘的开始位置,才能把每个逻辑盘重组成功。

首先我们用WinHex把8块成员盘组成虚拟RAID-5,以便于分析每个逻辑盘的位置。

打开WinHex的“重组RAID”功能,如图17-102所示。

图17-102 WinHex的“重组RAID”界面

该RAID-5由8块成员盘组成,需要把它们按照盘序加入进来,单击图17-102中的“添加硬盘按钮”,出现如图17-103所示的选择硬盘界面。

图17-103 选择硬盘界面

图17-103中的“HD0”是计算机的系统盘,不是RAID-5中的成员盘,从“HD1”到“HD8”为RAID-5中的8块成员盘,将它们按照分析好的盘序依次加入进虚拟RAID中,并把条带大小设置为128扇区,把RAID结构设置为“Level 5:forward parity dynamic”,即“右同步”,如图17-104所示。

图17-104 设置参数

参数设置完成后单击“OK”按钮,WinHex就把这8块成员盘按照我们设置的参数组建成为一个虚拟RAID-5了,如图17-105所示。

图17-105 WinHex组建的虚拟RAID-5的第一个扇区

不过通过WinHex的数据浏览功能查看这个虚拟RAID-5,只能看到一个488GB的分区,并且分区还无法显示文件系统类型,如图17-106所示。

图17-106 488GB的分区

图17-106中这个488GB的分区真实大小应该是488GB的4倍,分区表中描述它的起始位置是63号扇区,实际在63×4=252扇区。正因为MBR中分区表的指针无法找到DBR,所以这个分区后面跟着一个问号。

我们跳转到虚拟RAID-5的252号扇区,这就是RAID-5第一个逻辑卷的DBR,如图17-107所示。

图17-107 第一个逻辑卷的DBR

第一个逻辑卷的DBR中记录的卷的大小是“3D 08 BD BC”,分区表中描述的数值比它多一个扇区,为“3D 08 BD BD”,这是十六进制,换算为十进制等于1 023 983 037。因为RAID-5逻辑盘定义的扇区大小为2048字节,所以这个分区真实大小是1 023 983 037×4=4095932148扇区。

下面我们在虚拟RAID-5中找第二个逻辑盘的开始位置,用上一个逻辑盘的开始扇区252加上扇区数4 095 932 148,结果等于4 095 932 400,理论上这应该是第二个逻辑盘的起始扇区。用WinHex跳转过去,结果发现4 095 932 400号扇区是一个空扇区,并没有任何分区信息,如图17-108所示。

图17-108 虚拟RAID-5的4 095 932 400号扇区

从4 095 932 400号扇区往后搜索“55 AA”标志,结果在4 095 989 760扇区找到了MBR,如图17-109所示。

图17-109 虚拟RAID-5的4 095 989 760号扇区

这正是RAID-5中第二个逻辑盘的MBR,分区表中描述了分区开始位置在63号扇区,实际值应该乘以4,即252扇区;分区大小是1 023 999 102扇区,实际值也应该乘以4,即4 095 996 408。

我们从4 095 989 760号扇区往后跳转252个扇区,即跳转到4 095 990 012号扇区,的确是DBR扇区,如图17-110所示。

图17-110 虚拟RAID-5的4 095 990 012号扇区

现在可以确定该RAID-5上的第二个逻辑卷起始于4 095 990 012扇区,大小为4 095 996 408扇区。

我们接着在虚拟RAID-5中找第三个逻辑盘的开始位置,用第二个逻辑盘的开始扇区4 095 990 012加上扇区数4 095 996 408,等于8 191 986 420,理论上这应该是第三个逻辑盘的起始扇区。用WinHex跳转过去,结果发现8 191 986 420号扇区是一个空扇区,并没有任何分区信息,如图17-111所示。

图17-111 虚拟RAID-5的8 191 986 420号扇区

从8 191 986 420号扇区往后搜索“55 AA”标志,结果在8 191 989 760号扇区找到了MBR,如图17-112所示。

图17-112 虚拟RAID-5的8 191 989 760号扇区

这正是RAID-5中第三个逻辑盘的MBR,分区表中描述了分区开始位置在63号扇区,实际值应该乘以4,即252扇区;分区大小是665 588 952扇区,实际值也应该乘以4,即2 662 355 808。

我们从8 191 989 760号扇区往后跳转252个扇区,即跳转到8 191 990 012号扇区,的确是DBR扇区,如图17-113所示。

图17-113 虚拟RAID-5的8 191 990 012号扇区

现在可以确定该RAID-5上的第三个逻辑卷起始于8 191 990 012号扇区,大小为2 662 355 808扇区。

因为距离虚拟RAID-5的末尾还有很远,所以我们继续往后找第4个逻辑盘的开始位置,用第三个逻辑盘的开始扇区8 191 990 012加上扇区数2 662 355 808 ,等于10 854 345 820,理论上这应该是第4个逻辑盘的起始扇区。用WinHex跳转过去,结果发现10 854 345 820号扇区是一个空扇区,并没有任何分区信息,如图17-114所示。

图17-114 虚拟RAID-5的10 854 345 820号扇区

从10 854 345 820号扇区往后搜索“55 AA”标志,结果在10 854 389 760扇区找到了MBR,如图17-115所示。

图17-115 虚拟RAID-5的10 854 389 760号扇区

这正是RAID-5中第4个逻辑盘的MBR,分区表中描述了分区开始位置在63号扇区,实际值应该乘以4,即252扇区;分区大小是703 438 092扇区,实际值也应该乘以4,即2 813 752 368。

我们从10 854 389 760号扇区往后跳转252个扇区,即跳转到10 854 390 012号扇区,的确是DBR扇区,如图17-116所示。

图17-116 虚拟RAID-5的10 854 390 012号扇区

所以可以确定该RAID-5上的第4个逻辑卷起始于10 854 390 012扇区,大小为2 813 752 368扇区。

把RAID-5上的第4个逻辑卷的起始扇区号10 854 390 012加上其总扇区数2 813 752 368,结果等于13 668 142 380,已经接近RAID-5的总大小,所以后面没有下一个逻辑卷了。

现在RAID-5上4个逻辑卷的起始地址和大小都已经分析清楚完毕,可以开始数据重组了。这个案例我们用UFS Explorer进行重组,运行UFS Explorer后界面如图17-117所示。

图17-117 UFS Explorer的界面

图17-117的“HDD1”到“HDD8”就是该RAID-5的8块成员盘。

在UFS Explorer的“Tools”→“Build virtual RAID array”菜单下可以创建虚拟RAID,如图17-118所示。

图17-118 创建虚拟RAID的菜单

创建虚拟RAID的界面中把成员盘按照顺序添加进去,并按照分析好的参数进行一一设置,如图17-119所示。

图17-119 设置参数

设置完参数后单击“Build”按钮,就创建出一个虚拟RAID,如图17-120所示。

图17-120 生成的虚拟RAID

从图17-120看这个虚拟RAID也只显示488.27GB的大小,这都是因为扇区大小为2048的缘故,目前这样无法看到数据,我们还需要在这个虚拟RAID上把4个逻辑卷做出来。

在虚拟RAID上单击鼠标右键,选择“Define Virtual Partition”菜单,如图17-121所示。

图17-121 “Define Virtual Partition”菜单

然后在出现的对话框中填入需要定义的逻辑卷的起始扇区和大小。我们首先定义第一个逻辑卷,具体数值如图17-122所示。

图17-122 定义第一个逻辑卷的起始扇区和大小

定义完成后在虚拟RAID下面就会出现一个逻辑卷,单击这个逻辑卷就可以看到数据了,如图17-123所示。

图17-123 第一个逻辑卷内的数据

为了避免泄露用户的数据,我们对截图做了技术处理,隐去文件名。

下面再定义第二个逻辑卷,具体数值如图17-124所示。

图17-124 定义第二个逻辑卷的起始扇区和大小

定义完成后在虚拟RAID下面就会再出现一个逻辑卷,单击这个逻辑卷就可以看到数据了,如图17-125所示。

图17-125 第二个逻辑卷内的数据

接下来再定义第三个逻辑卷,具体数值如图17-126所示。

图17-126 定义第三个逻辑卷的起始扇区和大小

定义完成后在虚拟RAID下面就会出现第三个逻辑卷,单击这个逻辑卷就可以看到数据了,如图17-127所示。

图17-127 第三个逻辑卷内的数据

最后定义第4个逻辑卷,具体数值如图17-128所示。

图17-128 定义第4个逻辑卷的起始扇区和大小

定义完成后在虚拟RAID下面就会出现第4个逻辑卷,单击这个逻辑卷就可以看到数据了,如图17-129所示。

图17-129 第4个逻辑卷内的数据

到此为止,该RAID-5完整地恢复了所有数据。

成员盘前部有RAID信息的RAID-5数据恢复实例分析

该RAID-5由3块36GB的SCSI硬盘组成,服务器在运行中突然死机,重新启动服务器后无法识别RAID-5逻辑盘,原有数据全部丢失。

把3块SCSI硬盘去RAID化后分别进行检测,没有发现坏扇区,可能是RAID控制器或者RAID信息故障导致RAID-5崩溃。

物理盘检测完成后将它们插入SCSI模组中分别做成文件镜像,然后用WinHex同时打开3个文件镜像进行分析。首先做一个约定,我们这里称文件“0.img”为“硬盘0”、文件“1.img”为“硬盘1”、文件“2.img”为“硬盘2”,但这些文件的编号只是随意编排的,并不一定与RAID-5中各个硬盘的盘序相符。

下面开始分析该RAID-5的结构。

分析RAID开始扇区

依然从每块物理盘的0号扇区入手,首先用WinHex查看“硬盘0”的第一个扇区,内容如图17-130所示。

图17-130 “硬盘0”的第一个扇区

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

图17-131 “硬盘1”的第一个扇区

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

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

从图中看这3块成员盘的第一个扇区都不是MBR,该RAID-5的MBR扇区是否被破坏了呢?为了弄清楚这一点,我们在每块物理盘中往后搜索MBR,搜索MBR的方法即搜索MBR的结束标志“55 AA”。

先从硬盘0开始搜索,结果在“硬盘0”的128号扇区找到一个MBR,如图17-133所示。

图17-133 “硬盘0”的128号扇区

在该MBR的分区表中使用了3个分区表项,第一个是类型为“DE”的配置分区,第二个是NTFS分区,第三个是扩展分区,这三个分区表项的具体参数如图17-134所示。

图17-134 分区表参数模板

接下来我们查看一下“硬盘1”的128号扇区,其内容如图17-135所示。

图17-135 “硬盘1”的128号扇区

“硬盘1”的128号扇区显然也是MBR,并且与“硬盘0”的128号扇区内容完全一样,按照RAID-5的数据存储原理,“硬盘2”的128号扇区一定全是0字节。

跳转到“硬盘2”的128号扇区,内容如图17-136所示。

图17-136 “硬盘2”的128号扇区

正如我们推断的那样,“硬盘2”的128号扇区完全是0字节,这就说明“硬盘0”的128号扇区和“硬盘1”的128号扇区的两个MBR中必定有一个是检验信息。

另外,从3块成员盘的128号扇区的数据来看,可以肯定该RAID-5的起始扇区就在每块物理盘的128号扇区。

分析RAID结构

该RAID-5的结构我们提供两种分析方法:第一种方法是利用该RAID-5逻辑盘中的第一个逻辑卷进行分析,这个逻辑卷是一个FAT16文件系统;第二种方法是利用该RAID-5逻辑盘中的第二个逻辑卷进行分析,这个逻辑卷是一个NTFS文件系统。

方法一利用FAT文件系统进行分析。

分析条带大小

从图17-134的分区表参数模板中我们可以看到该RAID-5逻辑盘的第一个逻辑卷开始于63号扇区,也就是说RAID-5逻辑盘的63号扇区应该是逻辑卷的DBR。现在我们跳转到“硬盘0”的相对63号扇区,换算为绝对扇区号为191,该扇区内容如图17-137所示。

图17-137 “硬盘0”的191号扇区

从图17-137可以看出来这个扇区的确是DBR,并且是FAT16文件系统的DBR,其BPB参数如图17-138所示。

图17-138 DBR的BPB参数模板

DBR的BPB参数中显示分区的扇区总数为64 196,隐藏扇区数为63,这些数值都与128号扇区的MBR分区表中第一个表项的信息相符,说明这就是RAID-5逻辑盘第一个逻辑卷的DBR,同时也证明了该RAID-5的条带大小是大于或等于64扇区的。

DBR的BPB参数中还显示“DBR保留扇区数”为1,说明DBR之后紧跟着的扇区就是FAT表的开始,我们往下翻一个扇区,即192号扇区,其内容如图17-139所示。

图17-139 “硬盘0”的192号扇区

“硬盘0”的192号扇区正是FAT的开始,从这里可以推断该RAID-5的条带大小一定大于64扇区,所以下一个可能的值就是128了,为了判断条带大小是否为128扇区,可以查看“硬盘0”的相对扇区号127和128的内容,如果这两个扇区的内容是衔接的,那么条带大小就不是128扇区;相反,如果这两个扇区的内容不衔接,则该RAID-5的条带大小就是128扇区。

“硬盘0”的相对扇区号127和128换算为绝对扇区号为255和256,先跳转到255号扇区,其内容如图17-140所示。

图17-140 “硬盘0”的255号扇区

非常巧合,“硬盘0”的255号扇区也是FAT表的开始,不过这是FAT2的开始,因为在DBR的BPB参数中记录了每个FAT表的扇区数为63扇区,所以“硬盘0”的192号扇区是FAT1的开始,而255号扇区就正好是FAT2的开始位置。

再查看“硬盘0”的256号扇区,其内容如图17-141所示。

图17-141 “硬盘0”的256号扇区

“硬盘0”的256号扇区内的数据显然不是FAT表所应该具有的数据结构,所以256号扇区与255号扇区的内容不衔接,这样就可以断定该RAID-5的条带大小是128扇区。

分析盘序和校验方向

盘序和校验方向这两个参数有很大的相关性,所以分析的时候基本上没有先后次序,大多都是同时进行。

通过前面的分析已经知道,“硬盘0”和“硬盘1”的128号扇区都是MBR,并且其中一个必定是校验信息,现在我们先来判定这两个MBR哪一个是校验。

在刚才分析条带大小的过程中,我们主要利用了“硬盘0”的128号扇区到255号扇区之间的数据进行判断的,在分析中可以很清楚地看到这128个扇区的数据在结构上非常完整,并且与分区表信息、BPB参数完全匹配,也就是说,这一个条带不像校验信息,除非“硬盘1”的128号扇区到255号扇区的内容与“硬盘0”完全一样,否则“硬盘1”的第一个条带就是校验块。下面我们进行验证。

前面分析过,“硬盘0”的255号扇区是FAT2的起始扇区,我们就来看看“硬盘1”的255号扇区是否一样,跳转到“硬盘1”的255号扇区,内容如图17-142所示。

图17-142 “硬盘1”的255号扇区

“硬盘1”的255号扇区显然不是FAT表的内容,所以“硬盘1”的第一个条带是校验块,也就是说“硬盘1”的128号扇区的MBR扇区是校验信息。

现在我们判断出“硬盘1”的第一个条带是校验块,那么如果该RAID-5是左结构,“硬盘1”就是“2号盘”,“硬盘0”是“0号盘”,“硬盘2”则是“1号盘”,其结构如图17-143所示。

图17-143 左结构示意图

如果该RAID-5是右结构,“硬盘1”就是“0号盘”,“硬盘0”是“1号盘”,“硬盘2”则是“2号盘”,其结构如图17-144所示。

图17-144 右结构示意图

只要把该RAID-5的左、右结构确定了,盘序也就可以确定了。

我们依然从“硬盘0”入手,现在已经确定“硬盘0”的第一个条带是数据块,只要判断出“硬盘0”的第二个条带是数据块还是校验块,就可以知道该RAID-5是左结构还是右结构了。可以对照图17-143和图17-144来看,如果“硬盘0”的第二个条带是数据块,那么该RAID-5就是左结构;如果硬盘0的第二个条带是校验块,那么该RAID-5就是右结构。

已经知道该RAID-5的起始扇区是物理盘的128号扇区,条带大小也是128扇区,所以第二个条带在物理盘中的绝对起始扇区号是256,跳转到“硬盘0”的256号扇区,其内容如图17-145所示。

图17-145 “硬盘0”的256号扇区

不用去对比其他两块物理盘的256号扇区,也能够从图17-145中很明显地看出“硬盘0”的256号扇区一定是数据而非校验,也就是说“硬盘0”的第二个条带是数据块,所以该RAID-5一定是左结构,从而得出其盘序为:“硬盘0”是“0号盘”,“硬盘2”是“1号盘”,“硬盘1”是“2号盘”。

分析数据的循环方向

数据的循环方向即同步和异步。我们已经分析出该RAID-5是左结构,所以它要么是左异步,要么是左同步。如果是左异步,其结构如图17-146所示。

图17-146 左异步结构图

如果是左同步,其结构如图17-147所示。

图17-147 左同步结构图

现在我们只要分析数据块“1”最后一个扇区后面衔接的数据在“0号盘”上还是在“2号盘”上,如果在“0号盘”上,就是左异步;如果在“2号盘”上,就是左同步。

数据块“1”是“1号盘”的第一个条带,其最后一个扇区也就是硬盘2的255号扇区,该扇区的内容如图17-148所示。

图17-148 “硬盘2”的255号扇区

从内容看,“硬盘2”的255号扇区是一个系统可执行文件的部分数据。为了判断该扇区之后的数据写入的位置,我们需要分别查看“0号盘”和“2号盘”第二个条带的开始扇区。

“0号盘”第二个条带的开始扇区也就是“硬盘0”的256号扇区,其内容在之前的分析中已经查看过,可以参看图17-145,很明显这个扇区的内容与图17-148中“硬盘2”的255号扇区的内容有相关性,是衔接的,所以数据块“1”最后一个扇区之后衔接的数据在“0号盘”上,该RAID-5应该为左异步结构。

方法二利用NTFS文件系统进行分析。

分析条带大小

从图17-134的分区表参数模板中我们可以看到该RAID-5逻辑盘的第二个逻辑卷开始于64 260号扇区,也就是说RAID-5逻辑盘的64 260号扇区应该是第二个逻辑卷的DBR。我们现在需要把RAID-5逻辑盘的64 260号扇区换算为物理盘上的扇区号,计算方法为

64260÷(3-1)+128=32258

这就是把第二个逻辑卷的DBR在RAID-5逻辑盘中的扇区号转化为在物理盘上的扇区号的数值,但因为RAID-5的数据是以条带为单位循环写入,所以计算出来的这个扇区号不会完全精确,只是一个出入非常小的大概位置。

首先跳转到“硬盘0”的32 258号扇区,但并不是DBR,往后翻了两个扇区到达32 260号扇区,结果就是DBR了,如图17-149所示。

图17-149 “硬盘0”的32 260号扇区

该扇区的BPB参数如图17-150所示。

图17-150 DBR扇区的BPB参数

该BPB的“隐藏扇区数”和“扇区总数”两个参数的值都与第二个逻辑卷分区表项中的值一致,所以这的确是RAID-5逻辑盘中第二个逻辑卷的DBR。

为了分析RAID-5的结构,我们还需要去找$MFT文件区域,从文件记录上入手分析RAID-5的结构。

找$MFT文件的方法一是可以通过搜索来找,二是可以通过计算来确定其大概位置,然后在附近稍作搜索就能快速找到。我们采用先计算的方法。

从图17-150中可以看到该分区$MFT文件起始簇号为20 380,每簇扇区号为1,所以$MFT文件在物理盘中的大概起始扇区号的计算方法为:(20308×1÷2)+32260=42414,这就是把$MFT文件在分区中的起始簇号转化为在物理盘上的起始扇区号的数值,但因为RAID-5的数据是以条带为单位循环写入,所以计算出来的这个扇区号不会完全精确,只是一个出入非常小的大概位置。

用WinHex跳转到每块物理盘的42 414扇区,在附近很快找到了$MFT文件的文件记录,是在“硬盘0”的42 456号扇区,如图17-151所示。

图17-151 “硬盘0”的42 456号扇区

“硬盘0”的42 456号扇区就是$MFT文件自身的文件记录。从该文件记录0x80属性的Run List中可以看出$MFT文件有非常多的碎片。我们从Run List模板中看一下具体数值,如图17-152所示。

图17-152 Run List模板

从Run List模板中可以看出,第一个数据流只有32个簇的大小,该分区每簇为1个扇区,32个簇也就是32个扇区,相当于16个文件记录,所以第一个数据流文件记录太少,这么少的数据流显然不够分析RAID-5结构。从模板中看第二个数据流为252 896个簇,足够分析了,所以我们应该找到第二个数据流,从第二个数据流入手分析RAID-5的结构。

第二个数据流的起始簇号为874 816,这是以第一个数据流的起始簇号20 308为起点的相对簇号,我们可以把这个相对簇号转换为第二个数据流在物理盘中的绝对扇区号,具体算法为:874816×每簇扇区数÷2+第一个数据流在物理盘中的绝对扇区号,即

(874816×1÷2)+42456=479864

这就是$MFT文件第二个数据流在物理盘中的起始扇区号,当然这个扇区号也不会完全精确,只是一个出入非常小的大概位置。

下面跳转到每块物理盘的479 864扇区附件寻找$MFT文件的第二个数据流。找的时候还有一个要求,就是3块物理盘要在同一个扇区都有文件记录。因为我们分析的时候需要对3块物理盘进行并列分析,所以必须位于同一扇区。

结果发现从479 872号扇区开始,每个物理盘都是文件记录了,那么我们的分析就从这里开始。

“硬盘0”的479 872号扇区内容如图17-153所示。

图17-153 “硬盘0”的479 872号扇区

“硬盘1”的479 872号扇区内容如图17-154所示。

图17-154 “硬盘1”的479 872号扇区

“硬盘2”的479 872号扇区内容如图17-155所示。

图17-155 “硬盘2”的479 872号扇区

很显然“硬盘2”的479 872号扇区是校验,硬盘0和硬盘1的479 872号扇区是完好的文件记录。从文件记录中可以看出该NTFS分区是由Windows 2000系统创建出来的,文件记录中没有记录号,所以无法用文件记录号计算条带大小,那么只能用校验块所占的扇区数判断条带大小了。

从“硬盘2”的479 872号扇区往后搜索文件记录的头标志“46 49 4C 45”,结果在480 000号扇区找到了文件记录,说明这是一个条带的开始扇区,同时把硬盘1和硬盘2也转到480 000扇区,发现硬盘0是校验,如图17-156所示。

图17-156 “硬盘0”的480 000号扇区

“硬盘0”的480 000号扇区就是一个校验块的开始。我们从硬盘0的480 000号扇区往后再搜索文件记录的头标志“46 49 4C 45”,即找到下一个数据块的开始扇区。这个扇区与480 000号扇区之间的差就是该RAID-5的条带大小。

很快在480 128号扇区就搜索到了一个新的文件记录,用480 128减去480 000,结果等于128,所以该RAID-5的条带大小是128扇区。

分析盘序和校验方向

我们采用取模反推法判断该RAID-5的盘序和校验方向。刚才在硬盘0的480 000找到了一个校验块的起始扇区,我们可以用反推法计算“硬盘0”的第一个校验块的起始扇区,计算方法为

(480000-128)MOD(128×3)=256

256号扇区是第三个条带的开始,说明“硬盘0”的第一个校验块在第三个条带上。从前面的分析我们知道“硬盘0”的第一个扇区是MBR。这两个条件和在一起,我们可以断定该RAID-5只能是左结构,并且“硬盘0”就是“0号盘”。

用同样的方法很容易就可以反推出“硬盘2”为“1号盘”,“硬盘1”为“2号盘”。

分析数据的循环方向

数据的循环方向即同步和异步,我们已经分析出该RAID-5是左结构,所以它要么是左异步,要么是左同步。

我们从480 128号扇区对3块物理盘连续分析了3个条带,得出如图17-157所示的校验块分布结构。

图17-157 校验块分布结构图

下面我们就利用这个校验块分布结构来判定该RAID-5是左异步还是左同步。

如果“数据块A”后面衔接的是“数据块X”,该RAID-5就是左异步;如果“数据块A”后面衔接的是“数据块Y”,该RAID-5就是左同步。

我们首先查看“数据块A”的最后一个扇区,即“硬盘2”的480 255号扇区,不过480 255号扇区是一个文件记录的第二个扇区,内部没有什么数据,不利于分析,所以我们查看上一个扇区,即480 254号扇区,其内容如图17-158所示。

图17-158 “硬盘2”的480 254号扇区

然后查看“数据块X”的第一个扇区,即“硬盘0”的480 256号扇区,其内容如图17-159所示。

图17-159 “硬盘0”的480 256号扇区

最后再查看“数据块Y”的第一个扇区,即“硬盘1”的480 256号扇区,其内容如图17-160所示。

图17-160 “硬盘1”的480 256号扇区

从3个文件记录的内容进行比较,显然“硬盘2”的480 254号扇区的文件记录与“硬盘0”的480 256号扇区的文件记录是同一目录下的文件,而“硬盘1”的480 256号扇区的文件记录则不是,这就可以判断出“数据块A”后面衔接的是“数据块X”,所以该RAID-5是左异步结构。

数据重组

这个RAID-5的数据重组比较容易,只要记住该RAID起始扇区是128就可以了,其他没有什么特殊之处,所以为了节省篇幅,这里就省略重组过程。

成员盘中部有RAID信息的RAID-5数据恢复实例分析

本例是一个在成员盘的中部存放配置信息的RAID-5案例。对于这种把RAID信息放在成员盘中部的RAID,分析RAID结构的难度比较大,如果不能准确地找到物理盘中部的配置信息并把它们去除,那么在重组RAID后就会影响到逻辑卷大部分数据的正确性,不只是系统配置信息所在地址后面的数据会受影响,系统配置信息所在地址前面的数据也同样会受影响,因为NTFS文件系统内的数据是分布存储的,逻辑卷的中间插入了RAID信息,就会导致很多地址的指向发生错误。下面我们开始具体分析。

这个RAID-5案例由3块SCSI硬盘组成,每个成员盘的容量为18GB,我们将3块成员盘做成3个文件镜像,因为这个案例比较复杂,需要全盘分析,所以我们对3块物理盘都做了完整镜像,这里称文件“0.img”为“硬盘0”,文件“1.img”为“硬盘1”,文件“2.img”为“硬盘2”,但文件的编号只是随意编排的,并不一定与RAID-5中各个成员盘的盘序相符。

分析RAID起始扇区

用WinHex同时打开3个镜像文件,从第一个扇区入手,“硬盘0”的0号扇区内容如图17-161所示。

图17-161 “硬盘0”0号扇区的内容

从内容看“硬盘0”的第一个扇区肯定不是MBR。

再看“硬盘1”,它的0号扇区内容如图17-162所示。

图17-162 “硬盘1”0号扇区的内容

“硬盘1”的第一个扇区的内容与“硬盘0”第一个扇区的内容类似,同样不是MBR。

最后再看“硬盘2”,它的0号扇区内容如图17-163所示。

图17-163 “硬盘2”0号扇区的内容

“硬盘2”的第一个扇区显然是MBR,但仔细分析发现分区表中有一个动态磁盘分区的表项,难道说这个RAID-5是动态磁盘软RAID?

其实根据经验来看,“硬盘0”和“硬盘1”的第一个扇区的数据是RAID信息,所以“硬盘2”的第一个扇区的数据也应该是RAID信息,但可能是用户或者其他技术人员把该硬盘独立连接到计算机上被系统做了初始化并自动转换为动态磁盘,所以第一个扇区被写入MBR,同时该硬盘的6号扇区也会写入动态磁盘的私有头,硬盘最后1MB的空间还会被写入LDM,这属于一种二次破坏,是数据恢复最忌讳的行为。幸运的是,该硬盘前部存放的是RAID配置信息,而最后1MB的空间则没有使用,所以这个二次破坏并没有影响到用户的数据。

接下来在3块物理盘中搜索十六进制数值“55 AA”,目的是查找RAID-5逻辑盘的MBR,结果在“硬盘2”128号扇区发现了MBR,如图17-164所示。

图17-164 “硬盘2”的128号扇区的内容

在MBR的分区表中有3个分区表项,用WinHex模板查看其具体数值,如图17-165所示。

图17-165 分区表的参数模板

分区表的第一项描述了一个配置分区,分区开始于63号扇区,大小为64 197扇区;分区表的第二项描述了一个NTFS分区,分区开始于64 260号扇区,大小为8 241 345扇区;分区表的第三项也描述了一个NTFS分区,分区开始于8 305 605号扇区,大小为62 765 892扇区。从这些数值可以计算出所有分区所占扇区数的总和为71 071 497,这与3块18GB的物理盘组成的RAID-5逻辑盘的总扇区数之和基本相等,所以可以判断这个MBR就是RAID-5逻辑盘的有效MBR,从而也证明了该MBR所在扇区128就是RAID起始扇区。

分析RAID结构

分析条带大小

从图17-165所示的分区表参数模板中我们可以看到该RAID-5逻辑盘的第一个分区开始于63号扇区,也就是说RAID-5逻辑盘的63号扇区应该是该分区的DBR。现在我们跳转到硬盘2的相对63号扇区,换算为绝对扇区号为191,该扇区内容如图17-166所示。

图17-166 “硬盘2”的191号扇区

从图17-166可以看出来这个扇区的确是DBR,并且是FAT16文件系统的DBR,其BPB参数如图17-167所示。

图17-167 DBR的BPB参数模板

DBR的BPB参数中显示分区的扇区总数为64 197,隐藏扇区数为63,这些数值都与128号扇区的MBR分区表中第一个表项的信息相符,说明这就是该RAID-5逻辑盘第一个分区的DBR,同时也证明了该RAID-5的条带大小是大于或等于64扇区的。

DBR的BPB参数中还显示“DBR保留扇区数”为1,说明在逻辑结构上DBR之后紧跟着的扇区就应该是FAT表的开始。我们往下翻一个扇区,即192号扇区,其内容如图17-168所示。

图17-168 “硬盘2”的192号扇区

“硬盘2”的192号扇区的确是FAT表的数据结构,但并不是FAT表的开始,从这里可以推断该RAID-5的条带大小一定就是64扇区了,所以FAT表开始扇区的数据写到其他成员盘中了。

为了进一步确认以上的结论,我们可以同时查看“硬盘0”和“硬盘1”的128号扇区,看看有没有FAT表开始扇区的数据。“硬盘0”的192号扇区内容如图17-169所示。

图17-169 “硬盘0”的128号扇区

“硬盘0”的128号扇区很像是校验信息。再看“硬盘1”的128号扇区,如图17-170所示。

图17-170 “硬盘1”的128号扇区

“硬盘1”的128号扇区正是FAT表的开始,这就进一步验证了该RAID-5的条带大小一定是64扇区。

分析盘序和校验方向

通过前面的分析已经知道,“硬盘2”的128号扇区是MBR,191号扇区是DBR;而“硬盘1”的128号扇区是FAT表的起始扇区,该内容应该衔接在“硬盘2”的191号扇区之后;“硬盘0”的128号扇区是校验。根据以上这些信息可知,如果该RAID-5是左结构,“硬盘2”就是“0号盘”,“硬盘1”是“1号盘”,“硬盘0”则是“2号盘”,其结构如图17-171所示。

图17-171 左结构示意图

如果该RAID-5是右结构,那么“硬盘0”就是“0号盘”,“硬盘2”是“1号盘”,“硬盘1”则是“2号盘”,其结构如图17-172所示。

图17-172 右结构示意图

所以只要把该RAID-5的左、右结构确定了,盘序也就可以确定了。

我们从“硬盘2”入手分析,“硬盘0”的128号扇区是MBR,所以其第一个条带是数据块,只要判断出“硬盘2”的第二个条带是数据块还是校验块,就可以知道该RAID-5是左结构还是右结构了。可以对照图17-171和图17-172来看,如果“硬盘2”的第二个条带是数据块,那么该RAID-5就是左结构;如果硬盘2的第二个条带是校验块,那么该RAID-5就是右结构。

已经知道该RAID-5的起始扇区是物理盘的128号扇区,条带大小是64扇区,所以第二个条带在物理盘中的绝对起始扇区号是192,“硬盘2”的192号扇区我们在前面已经查看过,可以参考图17-168,其内容是FAT表的数据结构,也就是说这个扇区是数据,不是校验。为了进一步验证,我们再查看一下“硬盘0”的192号扇区和“硬盘1”的192号扇区。

“硬盘0”的192号扇区内容如图17-173所示。

图17-173 “硬盘0”的192号扇区

“硬盘0”的192号扇区也是FAT表内的数据结构,不是校验,所以“硬盘1”的192号扇区就应该是校验了,其内容如图17-174所示。

图17-174 “硬盘1”的192号扇区

从图17-174中的内容看,“硬盘1”的192号扇区内的数据的确是由“硬盘0”的192号扇区和“硬盘2”的192号扇区的数据经过异或运算的结果,所以它就是校验信息,从而确定了“硬盘2”的192号扇区是数据,不是校验,所以该RAID-5一定为左结构,从而得出其盘序为:“硬盘2”是“0号盘”,“硬盘1”是“1号盘”,“硬盘0”是“2号盘”。

分析数据的循环方向

数据的循环方向即同步和异步,我们已经分析出该RAID-5是左结构,所以它要么是左异步,要么是左同步。如果是左异步,其结构如图17-175所示。

图17-175 左异步结构图

如果是左同步,其结构如图17-176所示。

图17-176 左同步结构图

现在我们只要分析数据块“1”最后一个扇区后面衔接的数据在“0号盘”上还是在“2号盘”上。如果在“0号盘”上,就是左异步;如果在“2号盘”上,就是左同步。

数据块“1”是“1号盘”的第一个条带,其最后一个扇区也就是“硬盘1”的191号扇区,该扇区的内容如图17-177所示。

图17-177 “硬盘1”的191号扇区

从内容看,“硬盘1”的191号扇区是FAT表中的部分数据,其最后一个表项值为“00 40”。为了判断该扇区之后的数据写入的位置,我们需要分别查看“0号盘”和“2号盘”第二个条带的开始扇区。

“0号盘”第二个条带的开始扇区也就是“硬盘2”的192号扇区,其内容如图17-178所示。

图17-178 “硬盘0”的192号扇区

“硬盘0”的192号扇区也是FAT表中的部分数据,其第一个表项值为“01 80”,显然与“硬盘1”的191号扇区中最后一个表项值“00 40”不衔接。

再看“硬盘2”的192号扇区,其内容如图17-179所示。

图17-179 “硬盘2”的192号扇区

“硬盘2”的192号扇区同样是FAT表中的部分数据,其第一个表项值为“01 40”,显然与“硬盘1”的191号扇区中最后一个表项值“00 40”衔接,所以该RAID-5的数据的循环方向为异步结构。

综上所述,该RAID-5应该为左异步结构。

第一次数据重组

为了分析的时候更加直观,我们选择用WinHex进行重组,打开菜单栏“专业工具”下的“重组RAID”选项,按照分析好的盘序及RAID结构设置各个参数,如图17-180所示。

图17-180 设置RAID参数

RAID参数设置完成后单击“确定”按钮,WinHex中就会出现一个“RAID 5:2+1+0”选项卡,如图17-181所示。

图17-181 “RAID 5:2+1+0”选项卡

这个“RAID 5:2+1+0”选项卡中的数据就是虚拟重组出来的RAID-5逻辑盘,我们可以看到逻辑盘中有3个分区,如图17-182所示。

图17-182 RAID-5逻辑盘中的3个分区

表面看起来这3个分区都是正确的,第一个分区是配置分区,没有用户的数据,可以不用理会;第二个分区是系统区,大小为3.9GB,打开后数据完全正常,但该分区也没有重要数据;第三个分区是数据分区,大小为29.9GB,用户的重要数据都在这个分区内,其中最重要的是一个数据库文件,我们直接打开这个分区,如图17-183所示。

图17-183 打开分区3

单击分区3的“打开”选项后,WinHex会对这个分区内的数据做一遍“磁盘快照”,然后就能够预览分区内的数据了。

在数据浏览框内找到用户的数据库文件,结果发现文件是错误的,并且文件的大小显示为0字节,如图17-184所示。

图17-184 文件的大小显示为0字节

用户说这个数据库文件非常重要,其他文件都可以不要,但如果这个数据库文件如果恢复不成功,损失将会非常大。

根据该数据库文件的MFT记录分析,其Data Run所指向的地址中的内容根本就不是数据库的结构,看来问题比较严重。

再次分析RAID结构

经过对该分区其他文件的分析发现,分区内的大部分数据都是错误的,这说明RAID结构上可以会有问题。

回顾前面的分析过程,RAID起始扇区、盘序、条带大小、循环方向都分析得很严谨,不会是这些环节出现问题,那么问题还会出现在哪个环节呢?

考虑到该RAID-5逻辑盘的三个分区中,前两个分区的数据都完全正常,只有第三个分区的数据不正常,所以就从逻辑盘的第三个分区入手进行分析。

在上一步中我们已经用WinHex把该RAID-5进行了虚拟重组,并且能够直接访问逻辑盘的第三个分区,这就是我们选用WinHex进行重组的原因。WinHex的这一功能非常方便,对我们的分析有很大帮助。

我们利用NTFS文件系统的结构知识,对逻辑盘的第三个分区进行了大量的计算和分析,最终发现在$MFT文件当中夹着一段RIAD信息,把$MFT文件隔开了,所以导致分区内的很多文件出错。

RIAD信息在第三个分区中的开始位置是80 325号扇区,而80 324号扇区还是完好的文件记录,如图17-185所示。

图17-185 分区3的80 324号扇区

80 324号扇区是一个文件记录的前半部分,80 325号扇区则应该是这个文件记录的后半部分,但实际上80 325号扇区已经不是文件记录的内容了,如图17-186所示。

图17-186 分区3的80 325号扇区

据此分析可知,RAID信息是从80 325号扇区开始的。继续往后分析发现,80 324号扇区所在文件记录的后半部分出现在分区3的83 067号扇区,其内容如图17-187所示。

图17-187 分区3的83 067号扇区

83 067号扇区的前一个扇区,即83 066号扇区则是一个空扇区,如图17-188所示。

图17-188 分区3的83 066号扇区

从这一现象可以推断,RAID信息就结束于83 066号扇区,从83 067号扇区往后则是正常的数据。

所以,在该RAID-5逻辑盘的分区3内部,80 325号扇区是RAID信息的起始地址,83 066号扇区则是RAID信息的结束地址。根据这两个数值可以计算出RAID信息一共占用了2742个扇区。根据RAID-5数据分布的结构特点,把2742除以2,结果等于1371,这个数值就是RAID信息在每块RAID-5物理盘内所占的扇区数。

通过上面的分析,我们可以把这3块RAID-5物理盘以及现在重组出来的RAID-5逻辑盘的结构画成一幅图,如图17-189所示。

图17-189 RAID-5物理盘及逻辑盘的结构图

从图17-189的结构来看,因为在3块物理盘中都有1371个扇区的RAID信息,在这种情况下重组数据后,RAID信息刚好位于RAID-5逻辑盘的第三个分区内,占用了2742个扇区,这就导致了逻辑盘第三个分区的数据错误。

解决这个问题的思路有两个:

第一,分析逻辑盘,找到RAID信息在逻辑盘中的开始位置和结束位置,然后将逻辑盘内RAID信息之前的扇区做成镜像,再将逻辑盘内RAID信息之后的扇区做成镜像,把两部分镜像拼接到一起,就可以完整地恢复出所有数据。

第二,分析物理盘,找到RAID信息在物理盘中的开始位置和结束位置,然后将3块物理盘内RAID信息之前的扇区(即图17-189中的“A1”、“A2”、“A3”部分)分别用R-studio的“Create Region”功能做成3个区域,再把“A1”、“A2”、“A3”这3个区域组成虚拟RAID-5;接下来将3块物理盘内RAID信息之后的扇区(即图17-189中的“B1”、“B2”、“B3”部分)分别用R-studio的“Create Region”功能做成3个区域,再把“B1”、“B2”、“B3”这3个区域组成虚拟RAID-5;最后把两个虚拟RAID-5用R-studio虚拟成JBOD,就可以完整地恢复出所有数据。这种方法完全利用虚拟重组,避免了做镜像的操作。

这个案例我们用第一种思路进行恢复。

再次数据重组

之前我们已经分析出在该RAID-5逻辑盘的分区3内部,80 325号扇区是RAID信息的起始地址,83 066号扇区则是RAID信息的结束地址,所以我们就把分区3的0到80 324号扇区做成镜像,再把分区3的83 067号扇区到分区末尾做成镜像,之后把两部分镜像拼接到一起并命名为Partition3.img。这是在利用WinHex的磁盘快照功能浏览该分区的数据,用户需要的数据库文件已经完全正确了,如图17-190所示。

图17-190 数据库文件完全正确

将这一对数据库文件拷贝出来验证,没有出现任何问题,这个RAID-5的数据圆满恢复成功。

HP双循环数据恢复实例分析

HP服务器在收购康柏公司前,用的都是常规RAID-5结构,自从收购康柏后,其RAID-5就沿用了康柏的双循环RAID-5,现在一般把它称为HP双循环。

本节我们具体分析一个HP双循环的RAID-5。该RAID-5由5块73GB的SCSI硬盘组成,我们分别把5块硬盘做成镜像文件,命名为HP0.dsk、HP1.dsk、HP2.dsk、HP3.dsk和HP4.dsk,在这里分别称它们为“硬盘0”、“硬盘1”、“硬盘2”、“硬盘3”、“硬盘4”,但这些文件的编号只是随意编排的,并不一定与阵列中各个硬盘的盘序相符。

分析RAID开始扇区

用WinHex同时打开5个镜像文件,分析它们的第一个扇区,结果发现5块盘的第一个扇区都是MBR,这5个MBR中的数据除了磁盘签名不一样,其他完全一样。为了节省篇幅,这里只把硬盘0的第一个扇区截图贴出来,如图17-191所示。

图17-191 “硬盘0”的第一个扇区

这个MBR中有一个分区表项,分区开始位置在63号扇区,分区大小为16 002扇区,也就是接近8MB,分区类型是“12H”,这个类型就是当年康柏定义的一种专用类型,是用于存储康柏配置信息的分区类型。

虽然这个存放配置信息的分区分配了16 002个扇区,但实际上没有用这么多,RAID的开始扇区并没有在16 002扇区之后,而是从1088扇区就开始了,这是HP双循环的一个特点。

分析RAID结构

我们把每块物理盘都跳转到1088号扇区,发现“硬盘4”是一个MBR扇区,如图17-192所示。

图17-192 “硬盘4”的1088号扇区

该MBR中有两个分区表项,一个主分区,一个扩展分区,其中主分区是NTFS文件系统,开始于63号扇区,具体参数如图17-193所示。

图17-193 分区表的具体参数

“硬盘3”的1088号扇区全都是0,如图17-194所示。

图17-194 “硬盘3”的1088号扇区

“硬盘2”的1088号扇区是衔接在NTFS文件系统DBR之后的一个扇区,即NTLDR区域,如图17-195所示。

图17-195 “硬盘2”的1088号扇区

“硬盘1”的1088号扇区是一些索引项,显然是索引缓冲区中的数据,如图17-196所示。

图17-196 “硬盘1”的1088号扇区

“硬盘0”的1088号扇区只能是校验了,因为一个条带组中必须有一个校验块,而前4块成员盘的1088扇区都是数据块,所以硬盘0的1088扇区必须是校验,如图17-197所示。

图17-197 “硬盘0”的1088号扇区

从内容看这个扇区也确实是校验。

通过上面分析5块成员盘中RAID开始位置的第一个扇区,其实已经可以判断出盘序了,有MBR的“硬盘4”是“0号盘”;1088扇区都是0的“硬盘3”是“1号盘”,因为这些0是MBR保留扇区中的内容,同时也能说明该RAID条带大小在64扇区之内;“硬盘2”是“2号盘”,因为它的1088扇区是DBR的下一个扇区,而DBR肯定在硬盘3上。我们通过搜索果然在硬盘3的1119号扇区找到了DBR,如图17-198所示。

图17-198 “硬盘3”的1119号扇区

从RAID开始扇区1088计算,1119号扇区相当于是31号扇区,这也就说明了条带大小是32扇区;“硬盘0”的1088扇区是校验,所以它就是4号盘了,剩下的“硬盘1”就是“3号盘”。所以该RAID-5的盘序刚好跟镜像文件的编号相反。

刚才分析的条带大小为32扇区,这只是双循环内部RAID-4的条带大小。还需要分析外部循环RAID-5的条带大小,这个可以从硬盘0入手,因为它的第一个条带就是校验,可以从它的第一个条带往下翻,看从哪个扇区开始是数据。

经过查找,发现“硬盘0”的1600扇区开始出现数据,数据结构为索引块,其内容如图17-199所示。

图17-199 “硬盘0”的1600扇区

1600扇区扇区相当于是RAID-5内的512号扇区,也就是说“硬盘0”的外循环校验块大小是512扇区,包含16个内循环小条带。

数据重组

结构分析完成之后就可以组建虚拟RAID了。这个案例我们就用WinHex来组建虚拟RAID,具体设置如图17-200所示。

图17-200 用WinHex组建虚拟RAID

虚拟RAID创建成功后就可以看到分区了,如图17-201所示。

图17-201 显示出分区

因为镜像文件不是全盘镜像,所以看到的分区不完整。

HP ADG RAID-6数据恢复实例分析

这是一个HP服务器的RAID-6案例,HP的RAID-6也称为HP ADG,其结构比较特殊,与其他RAID-6的结构都不同。

该RAID-6由7块硬盘组建,但其中一块硬盘出现了物理故障,无法修复,所以我们就用剩下的6块硬盘进行分析和恢复。

将6块成员盘做成文件镜像,命名为0.img到5.img,并称它们为“硬盘0”到“硬盘5”。

分析RAID开始扇区

用WinHex同时打开6个镜像文件,分析它们的第一个扇区,结果发现6块成员盘的第一个扇区都是MBR,这6个MBR中的数据除了磁盘签名不一样,其他完全一样。这里只把“硬盘0”的第一个扇区截图贴出来,其他5块盘就不贴图了。“硬盘0”的第一个扇区如图17-202所示。

图17-202 “硬盘0”的第一个扇区

这个MBR中有一个分区表项,分区开始位置在63号扇区,分区大小为16 002扇区,也就是接近8MB,分区类型是“12H”,这个类型就是当年康柏定义的一种专用类型,是用于存储康柏配置信息的分区类型。

虽然这个存放配置信息的分区分配了16 002个扇区,但实际上没有用这么多,RAID的开始扇区并没有在16 002扇区之后,而是从1088扇区就开始了,这与HP双循环RAID-5的结构一样。

我们把每块物理盘都跳转到1088号扇区,发现“硬盘0”是一个MBR扇区,如图17-203所示。

图17-203 “硬盘0”的1088号扇区

该MBR中有一个分区表项,分区类型是NTFS文件系统,开始于63号扇区,具体参数如图17-204所示。

图17-204 分区表的具体参数

从分区表的参数中可以计算出分区的总扇区数与7块物理盘组建的RAID-6逻辑盘大小刚好相等,说明该MBR就是RAID-6逻辑盘的有效MBR,也说明RAID起始扇区就是物理盘的1088扇区。

分析RAID结构

继续查看其他成员盘的1088号扇区,发现“硬盘1”的1088扇区都是0字节,而“硬盘2”的1088号扇区是NTLDR区域,如图17-205所示。

图17-205 “硬盘2”的1088号扇区

是NTLDR区域应该是跟在NTFS文件系统的DBR之后,而DBR肯定在“硬盘2”的前一块成员盘第一个条带的最后一个扇区上,我们通过搜索果然在硬盘1的1119号扇区找到了DBR,如图17-206所示。

从RAID开始扇区1088计算,1119号扇区相当于是31号扇区,这也就说明了该RAID-6条带大小是32扇区。

图17-206 “硬盘1”的1119号扇区

再查看剩下成员盘的1088扇区,“硬盘3”的1088扇区大部分都是0字节,“硬盘4”的1088扇区则很明显是P校验,如图17-207所示。

图17-207 “硬盘4”的1088号扇区

而“硬盘5”的1088扇区则是Q校验,如图17-208所示。

图17-208 “硬盘5”的1088号扇区

进一步分析每块成员盘的1088号扇区到1119号扇区之间的内容,发现硬盘0的1089到1119扇区都是0字节,这些是MBR的保留扇区;“硬盘1”的1089到1118扇区也都是0字节,它们同样是MBR保留扇区,硬盘1的1119扇区则是NTFS文件系统的DBR,这在前面已经分析过,所以“硬盘1”在盘序上应该是衔接在硬盘0之后的。

“硬盘2”的1088号扇区是NTLDR区域,所以“硬盘2”是衔接在“硬盘1”之后的。“硬盘2”的1119号扇区是元文件$MFT的起始位置,如图17-209所示。

图17-209 “硬盘2”的1119号扇区

“硬盘2”的1119号扇区是元文件$MFT自身的文件记录的第一个扇区,其更新序列号为“37 00”,再看硬盘3的1088号扇区,它正好是$MFT文件记录的第二个扇区,如图17-210所示。

图17-210 硬盘3的1088号扇区

这就可以肯定“硬盘3”是衔接在“硬盘2”之后的。

那么还有一块有故障的成员盘,它的盘序应该在什么位置呢?

从“硬盘3”的1088号扇区往后分析,发现随后都是NTFS元文件的文件记录,从1119扇区开始则是一个保留记录,如图17-211所示。

图17-211 “硬盘3”的1119号扇区

一般在元文件的文件记录之后都会有几个保留记录,“硬盘3”的1119号扇区是第一个保留记录的第一个扇区,其后还应该有这个记录的第二个扇区及另外的几个保留记录,这些数据则应该存储到下一块成员盘的第一个条带中,现在“硬盘4”和“硬盘5”的第一个条带都是校验信息,所以可以肯定衔接在“硬盘3”之后的硬盘就是缺失的故障盘。

通过上面的分析可以把盘序确定下来了:“硬盘0”是“0号盘”、“硬盘1”是“1号盘”、“硬盘2”是“2号盘”、“硬盘3”是“3号盘”、“硬盘4”是“5号盘”、“硬盘5”是“6号盘”,“4号盘”缺失。

盘序确定之后,我们再分析每块成员盘1119号扇区之后的数据,发现“硬盘0”、“硬盘1”、“硬盘2”和“硬盘3”持续到1599号扇区都是数据,没有任何校验出现;而“硬盘4”和“硬盘5”则持续到1599号扇区都是校验信息,没有正常数据出现。从1600号扇区开始,数据和校验信息才开始在成员盘中发生循环,这又跟HP的双循环RAID-5是一样的,我们把该RAID-6的结构用一幅图描述出来,如图17-212所示。

图17-212 RAID-6的结构图

图17-212中的“0”、“1”等数字代表数据块;“P0”、“P1”等代表P校验块;“Q0”、“Q1”等代表Q校验块。其中每个条带的大小为512扇区,其中又包含了16个大小为32扇区的小条带,小条带按照RAID-4的形式组织数据。

数据重组

现有的RAID重组工具还不能支持这种特殊的RAID-6结构,所以只能自己动手写个小程序,或者用一些软件提供的脚本功能,都可以重组这个RAID-6的数据。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
硬盘维修培训(1)|北亚数据恢复中心--800-810-5880(服务器) 4006-50...
不花一分钱 普通硬盘数据恢复五大妙招
数据恢复技术的分析与对策
硬盘数据恢复技术简介
硬盘分区表知识——详解硬盘MBR
磁盘结构与FAT文件系统
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服