编录文件是HFS+文件系统中占有空间最大的一个元文件,在分析RAID结构时往往都需要借助编录文件。

编录文件采用B-树结构组织数据。在B-树中有头节点、位图节点、索引节点、叶结点等结构。这些结构都有其固定格式,对它们的结构熟练掌握是分析RAID的基本要求。

在RAID-5的结构分析中,往往需要利用校验块分析条带大小、循环方向等参数,那么在成员盘中找到校验块就很重要。熟悉了编录文件结构的特征,就可以用对比排除法找到校验块。

在一个5块成员盘组成的RAID-5中,我们通过文件系统的卷头定位到编录文件,通过计算把编录文件在RAID-5逻辑盘中的地址转换为物理盘的扇区号,并在每块成员盘的同一个扇区找到某个节点的最后一个扇区。下面我们就可以利用节点的末尾扇区判断校验块。

该扇区号为633 135,首先查看“硬盘0”的633 135号扇区,其内容如图20-13所示。

HFS+文件系统编录文件在RAID分析中的作用-数据恢复迷

图20-13 “硬盘0”的633 135号扇区

“硬盘1”的633 135号扇区的内容如图20-14所示。

HFS+文件系统编录文件在RAID分析中的作用-数据恢复迷

图20-14 “硬盘1”的633 135号扇区

“硬盘2”的633 135号扇区的内容如图20-15所示。

HFS+文件系统编录文件在RAID分析中的作用-数据恢复迷

图20-15 “硬盘2”的633 135号扇区

“硬盘3”的633 135号扇区的内容如图20-16所示。

HFS+文件系统编录文件在RAID分析中的作用-数据恢复迷

图20-16 “硬盘3”的633 135号扇区

“硬盘4”的633 135号扇区的内容如图20-17所示。

HFS+文件系统编录文件在RAID分析中的作用-数据恢复迷

图20-17 “硬盘4”的633 135号扇区

在节点的最末尾处存放的是节点记录起始偏移量列表。节点记录起始偏移量列表由若干个表项构成,每个表项占用2个字节,用以描述每个节点记录的起始偏移地址。

节点记录起始偏移量列表在描述节点记录起始位置时,每个表项都采取倒序的方式排列,即第一个节点记录的偏移地址由节点记录起始偏移量列表的最后一个表项描述;第二个节点记录的偏移地址由节点记录起始偏移量列表的倒数第二个表项描述,以此类推。

因为节点中第一个节点记录总是开始于该节点的0x0E偏移处,所以每个节点最后两个字节的值总是0x00 0E。对比该RAID-5各成员盘的633 135号扇区发现,“硬盘0”、“硬盘1”、“硬盘2”、“硬盘3”的扇区末尾都是完整的节点记录起始偏移量列表,而“硬盘4”的633 135号扇区末尾两个字节的值却是“00”,这就可以断定该扇区是校验信息,从而可知该扇区所在的条带是校验块。

这是一种利用编录文件中的节点判断校验块的方法,不过这种方法在分析RAID-5的校验块时,只适用于成员盘个数为奇数的情况,如果成员盘个数为偶数则不适用。