inode 的大小是固定的吗?

Zep*_*hyr 0 linux filesystems inode

我们将文件分成固定大小的块并存储。

我想知道文件的 inode 大小是否与块大小相同,还是不同并且具有固定大小?

Paw*_*uin 5

一个块包含文件的实际数据,因此通常我们希望块尽可能大,同时仍然具有不错的性能。事实证明,一个非常好的块大小大约是一个页面的大小。引用ext4 wiki

块大小在 mkfs 时指定,通常为 4KiB。如果块大小大于页面大小(即 i386 上只有 4KiB 内存页的 64KiB 块),您可能会遇到安装问题。

“mkfs 时间”是指创建文件系统的时间。所以一旦我们创建了文件系统,块大小就固定了,最有可能是 4KiB。

inode 只需要包含指向数据块的指针(还有一些关于文件的元信息 - 上次访问的时间,它属于哪个用户等)。在维基的不同部分,他们指出

默认情况下,ext4 inode 记录为 256 字节,并且(截至 2013 年 10 月)inode 结构为 156 字节 [...]。inode 结构末尾和 inode 记录末尾之间的额外空间可用于存储扩展属性。每个 inode 记录可以与文件系统块大小一样大,尽管这不是非常有效。

因此,我们可以确实使i节点一样大的块,但在实际的系统中,这可能并非如此。如果您想知道,inode结构只讨论指向数据块的指针。所以我们有 156 个字节的指向实际文件内容的指针,但整个 inode 占用了 256 个字节——基本上,我们有 100 个字节可以在闲暇时使用,用于我们想要的任何元数据。

简而言之,ext4 是非常可配置的。但是很有可能您的块大小为 4KiB,而您的 inode 记录为 256 字节。