从一些模糊的记忆中,我以为我会“改进”创建 Linux 分区时的默认设置,并将 inode 大小增加到 1024,并且还打开-O bigalloc
(“此 ext4 功能启用集群块分配”)。
但现在,我找不到网上引用的这些设置的任何具体好处,而且我发现,在 20% 的磁盘使用率下,我已经使用了 15% 的 inode。
那么我应该简单地重新格式化分区,还是有积极的看法(或用作理由)?例如,对于包含大量文件的目录?
答案1
答案2
较大的索引节点大小可以提高非常大的文件/目录的性能,但会牺牲磁盘使用率(并且可能会降低小文件的性能)。
如果您觉得 inode 使用率太高,则需要仔细查看每个 inode 的字节数比率。多个 StackExchange 站点上有许多相关的问答。
答案3
20% 的磁盘使用率与 15% 的 inode 使用率并不算太糟糕。 20% 的磁盘使用率与 100% 的 inode 使用率将是一个问题。问题是,在 100% 磁盘使用率之前是否会达到 100% inode 使用率。这就是您需要更多索引节点的时候。
这在很大程度上取决于您使用文件系统的方式。例如,如果它是仅保存照片或视频或大小一致的类似文件的分区,则您可能无需担心。
如果您的使用是随机的,并且您将来可能会提取一些内核源代码 tarball,那么您当前的比率可能不会成立......
就性能而言,在正常情况下您可能不会注意到差异,只要您没有突破限制的应用程序,例如 24/7 热的数据库,即使是很小的优化也会带来回报。
答案4
每个文件保证至少消耗1 个 inode,如果文件足够大,则消耗更多。理论上,如果您的分区将由大量大文件组成,则需要更少的索引节点。更少的索引节点意味着更多的数据磁盘空间。特定的应用程序是数据库分区,其中数据库将大部分数据保存在几个大文件中(即 Oracle、MySQL 和 innodb)。当你说“bigalloc”时,我想你指的是 中的预设之一/etc/mke2fs.conf
,例如 CentOS7 中设置inode_ratio
为的“big” 32768
?我不确定,但我认为这本质上是“每个索引节点字节数”参数mke2fs
的参数。-i
如果这些假设正确,则需要重新格式化复制:
每个 inode 的字节数比率越大,创建的 inode 就越少。该值通常不应小于文件系统的块大小,因为在这种情况下,将创建比可以使用的更多的 inode。请注意,文件系统创建后无法更改该比率,因此请谨慎确定该参数的正确值。请注意,调整文件系统大小会更改 inode 数量以维持此比率。