HFS+文件系统的叶节点位于B−树的末端,主要用来存放数据记录,一个叶节点由三部分构成,它们是节点描述符、数据记录、节点记录起始偏移量列表。
节点描述符和节点记录起始偏移量列表属于公共结构,在讲解其他节点时已经详细分析过,就不再重复了,本节主要分析数据记录的结构。
首先看一个具体的叶节点,其内容如图6-38所示。
图6-38 叶节点
在图6-38所示的节点中,节点描述符的08H偏移处的值为“FF”,该字节是个带符号数,换算为十进制等于“−1”,说明这是个叶节点。节点描述符之后是节点记录列表,其中有很多个数据记录,在图中圈出了前两个,即“数据记录0”和“数据记录1”。在节点的末尾是节点记录起始偏移量列表,可以看到列表中包含很多表项。
叶节点中数据记录的结构也使用“关键字”结构,与索引节点中的“关键字”结构类似,该结构的具体含义见表6-26。
表6-26 数据记录的“关键字”结构
字节偏移(相对偏移) | 字段长度(字节) | 字段名和定义 |
0x00~0x01 | 2 | 关键字的长度(N)。该参数占用1个字节或者两个字节。如果B−树的头记录中“属性”参数“1位”进行了设置,则该参数占用两个字节;否则占用1个字节(可查看表6-21)。在HFS+文件系统中,该参数都占用两个字节 |
0x02~0x(N+1) | N | 关键字。对于叶节点,关键字的字节数总是由它的“关键字长度”参数定义 |
0x(N+2)~ | ~ | 关键字的数据(后文介绍) |