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