内联数据

内联数据功能旨在处理文件数据非常小以至于可以轻松地存储在 inode 内部的情况,这(理论上)减少了磁盘块消耗并减少了寻道时间。如果文件小于 60 字节,则数据以内联方式存储在 inode.i_block 中。如果文件的其余部分可以容纳在扩展属性空间中,那么它可能会作为 inode 主体(“ibody EA”)内的扩展属性“system.data”找到。这当然限制了可以附加到 inode 的扩展属性的数量。如果数据大小超出 i_block + ibody EA,则会分配一个常规块并将内容移动到该块。

在等待一个用于压缩存储内联数据的扩展属性键的更改期间,人们应该能够在 256 字节的 inode 中存储 160 字节的数据(截至 2015 年 6 月,当时 i_extra_isize 为 28)。在此之前,由于 inode 空间使用效率低下,限制为 156 字节。

内联数据功能需要存在一个用于“system.data”的扩展属性,即使该属性值为零长度。

内联目录

i_block 的前四个字节是父目录的 inode 号。紧随其后是一个 56 字节的空间,用于存储目录条目数组;请参阅 struct ext4_dir_entry。如果 inode 主体中存在“system.data”属性,则 EA 值也是一个 struct ext4_dir_entry 数组。请注意,对于内联目录,i_block 和 EA 空间被视为独立的目录条目块;目录条目不能跨越这两个空间。

内联目录条目不进行校验和,因为 inode 校验和应该保护所有内联数据内容。