了解 XFS inode 限制

了解 XFS inode 限制

我的 XFS 分区上的 inode 已达到上限。关于这个问题有很多疑问。有人建议答案是增加分配给 inode 的最大空间百分比。或者,正如xfs_growfs手册页中所述:

-m 为文件系统中可分配为 inode 的最大空间百分比指定一个新值。

我试过这个,但我不确定我看到的是什么。当我达到限制时,默认值为 25%。这给了我在 781GB 磁盘映像上 409,600,129 个 inode。

我将其增加到 100%,现在它可以允许我使用 1,566,536,296 个 inode。

$ df -i
Filesystem                        Inodes     IUsed      IFree IUse% Mounted on
...
/dev/loop3                    1566536040 409600129 1156935911   27% /mnt/tiles

我预计会写入超过 20 亿个条目(大部分是符号链接),因此即使达到 100% 也不够。据我了解,XFS 可以支持更多文件,因此我认为我遗漏了某些内容。

我尝试使用 重新安装-o inode64,但没有什么变化。(无论如何,此选项应为默认选项)。

$ sudo xfs_growfs -m 100 .
meta-data=/dev/loop3             isize=512    agcount=4, agsize=51200000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0 rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=204800000, imaxpct=100
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=100000, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
inode max pct unchanged, skipping

我的驱动器容量是否不够?还是有我不知道的其他配置或限制?为什么 100% 的 inode 分配仅等于 1.5GB?

答案1

虽然你增加了 inode 可以使用的最大空间,但你可能没有足够的空间自由的空间可支持超过 1.5B 个 inode。由于每个 inode 使用大约 512 字节,我估计您有 ~750 GB 的可用空间。

尝试释放一些空间和/或扩展文件系统。

答案2

信不信由你,配置的卷对于你想要完成的任务来说太小了。使用循环冗余校验(你使用的是默认设置)时,XFS 的最小 inode 大小为 512 字节。20 亿个符号链接,每个链接 512b,意味着你需要至少 953 GB 或 1TB(取决于你对十亿的定义)来存储所有这些 inode。

如果您有能力重新格式化该卷,您可以使其更好地适合您的目的。

  • -i maxpct=90在 mkfs 过程中将创建一个新的卷,该卷可以使用 90% 的空间作为 inode。它不适合你的硬件,但如果你可以改变可以投入的空间,它将让 xfs 使用几乎所有的空间来跟踪符号链接。
  • -m crc=0 -i size=256在 mkfs 过程中将禁用 CRC 支持并将 inode 大小减半。此选项将适合您当前的硬件,但代价是无法防范硬件问题。

相关内容