Keenan Asked: 2020-03-04 16:24:55 +0800 CST2020-03-04 16:24:55 +0800 CST 2020-03-04 16:24:55 +0800 CST 为什么 inode 偏移值似乎超过了 inode 大小? 772 我正在研究 Ext4 文件系统,并且对 128 字节的 inode 大小感到困惑,因为它似乎与它存储的最后一个元数据值冲突,该值应该在字节 156 处偏移。 在本文档中,它指出 inode 的长度为 128 字节。我在一个未挂载的 /dev/sdb1 上调用了 dumpe2fs。dumpe2fs 结果证实 inode 大小为 128。 但我很困惑,因为该文档描述了存储在 inode 中的元数据。对于元数据的每个条目,都有一个相应的物理偏移量。最后一个条目是项目 ID。它的偏移量为 0x9c(整数为 156)。 元数据偏移量似乎超过了 inode 的分配大小。我在这里有什么误解? ext4 inode 1 个回答 Voted Best Answer Kamil Maciorowski 2020-03-04T17:04:05+08:002020-03-04T17:04:05+08:00 它指出 inode 的长度为 128 字节 不,它指出[强调我的]: […] 每个 inode的磁盘记录大小为 128 字节。从 ext4 开始,可以在格式化时为文件系统中的所有 inode 分配一个更大的磁盘 inode,以提供超出原始 ext2 inode 末尾的空间。磁盘上的 inode 记录大小在超级块中记录为s_inode_size. struct ext4_inode 实际使用的超出原始 128 字节 ext2 inode 的字节数记录在i_extra_isize每个 inode 的字段中 […] 默认情况下,ext4 inode 记录为 256 字节,并且(截至 2019 年 8 月)inode 结构为 160字节(i_extra_isize = 32)。 你的疑惑: 最后一个条目是项目 ID。它的偏移量为 0x9c(整数为 156)。元数据偏移量似乎超过了 inode 的分配大小。 最后一个条目从 156 开始,占用 4 个字节 ( __le32)。它在默认的 160 字节内。 如果dumpe2fs说文件系统的 inode 大小为 128,这意味着文件系统使用原始的 128 字节 ext2 inode。没有i_extra_isize(它将在偏移量 0x80,十进制 128)或任何超出的指定。
不,它指出[强调我的]:
你的疑惑:
最后一个条目从 156 开始,占用 4 个字节 (
__le32
)。它在默认的 160 字节内。如果
dumpe2fs
说文件系统的 inode 大小为 128,这意味着文件系统使用原始的 128 字节 ext2 inode。没有i_extra_isize
(它将在偏移量 0x80,十进制 128)或任何超出的指定。