Linux:为什么要改变 inode 大小?

Linux:为什么要改变 inode 大小?

Tune2fs 允许将 inode 大小从默认大小(ext3 上为 128 字节,ext4 上为 256 字节)更改为几乎任何大小,但它应该是 2 的幂。更改默认 inode 大小的原因是什么?

这里据说这样做可以将 ACL 属性存储在 inode 中。在 inode 中还可以存储什么?

有没有理由增加现代​​大容量驱动器(2TB 及以上)的 inode 大小?

答案1

我认为当前版本的 mkfs.ext2/3/4 默认为 256 字节 inode 大小(请参阅 /etc/mke2fs.conf)。如果我没记错的话,这可以使用 ext4 启用纳秒时间戳,而且正如您所说,inode 中可以容纳更多扩展属性。例如,这些扩展属性包括 ACL、SELinux 标签、一些 Samba 特定标签。

当然,更大的 inode 会浪费一点空间,而且随着它们变大,您会很快陷入收益递减的境地。对于大多数情况来说,默认的 256 字节可能是一个完美的折衷方案。

答案2

使用 ext4 选项 inline_data(Linux 3.8 中的新功能)后,增大 inode 大小又有了一个新的理由:使用此选项,文件内容可以存储在文件的 inode 中(如果文件足够小)。这样可以避免一次查找操作。我还没有看到任何实际基准测试。

答案3

有没有理由增加现代​​大容量驱动器(2TB 及以上)的 inode 大小?

如果您想处理 2038 年之后的时间戳,否则它将不起作用。

来自mkfs.ext2手册:

File systems with an inode size of  128  bytes  do  not  support
timestamps  beyond January 19, 2038.  Inodes which are 256 bytes
or larger will support extended timestamps,  project  id's,  and
the ability to store some extended attributes in the inode table
for improved performance.

请注意,有些发行版有此内容/etc/mke2fs.conf

    small = {
        blocksize = 1024
        inode_size = 128
        inode_ratio = 4096
    }

这意味着,即使是现在,像这样的小分区/boot也会变得更小inode_size

来自mke2fs手册页:

如果文件系统大小大于或等于 3 但小于 512 兆字节,mke2fs(8) 将使用小文件系统类型。

答案4

Grub 不能在 inode 大小为 256 的情况下工作,因此我使用 128。

相关内容