FreeBSD 6 ufs 中目录中的最大文件总数是多少?

FreeBSD 6 ufs 中目录中的最大文件总数是多少?

FreeBSD 6 中单个子目录中存储的文件总数是否有上限?

文件系统是 ufs

答案1

这个问题在 2008 年 11 月的 freebsd-questions 列表中被讨论过。引用自艾里克·特鲁尔森

磁盘上的每个 i 节点都包含一个字段,用于指示有多少个硬链接指向该 i 节点。该字段是一个(有符号的)16 位值,这意味着允许的最大硬链接数为 32767。创建的每个子目录都包含一个指向其父目录的硬链接(“..”),从而将单个目录中的子目录数限制为少于 32767 个。

请注意,这不会限制单个目录中可以拥有的文件数量,因为普通文件不包含指向父目录的硬链接,但是根据首次创建文件系统时创建的 inode 数量,单个文件系统上可以拥有的文件和目录的总数当然是有限制的。

完整消息线程开始

这些是理论上的限制;如上所述,在达到任何限制之前,您就会开始遇到性能问题。

答案2

我使用 freebsd 6.x 做了一些涉及大量文件(50,000+)的事情,不记得有任何具体限制。在 7.2 系统上进行快速检查显示限制远远超过 100,000。截至目前,该进程仍在运行,当它失败时,我会告诉您 7.2 的硬限制是多少,这可能与 6.x 类似。

也就是说,在创建新文件/目录时,大约 30,000 个目录条目会导致巨大的性能损失。此时,人们开始创建名为 HashOfName/name 的文件,而不仅仅是 name,这样查找起来就更容易了。

答案3

我预计该数字也会根据所涉及的文件系统类型而变化。

答案4

总 inode 是目录中可以放入的文件总数的限制。总 inode 是在格式化硬盘时创建的。您可以使用较小的段来创建更多的 inode。有关详细信息,请参阅 man newfs。

vfs.ufs.dirhash_maxmem 是用于保存目录中的目录名的内存。这只会影响性能,没有任何限制。如果您有更多的内存,请将其调大,否则就不要管它了。

相关内容