一个 Unix 文件夹可以容纳的最大文件数是多少?

23 linux unix filesystems

一个 Unix 文件夹可以容纳的最大文件数是多少?

我认为它将与文件数量相同。

bas*_*ero 20

因文件系统而异,http://en.wikipedia.org/wiki/Comparison_of_file_systems

  • http://en.wikipedia.org/w/index.php?title=Comparison_of_file_systems&diff=prev&oldid=266054153 (2认同)

小智 16

在所有当前的 Unix 文件系统上,一个目录实际上可以容纳无限数量的文件。而“无限制”受磁盘空间和索引节点的限制- 无论先用完。

对于较旧的文件系统设计(ext2UFSHFS+),如果目录中有很多文件,事情往往会变慢。通常事情开始变得痛苦大约 10,000 个文件。使用较新的文件系统(ReiserFSXFSZFSUFS2),您可以在一个目录中拥有数百万个文件而不会出现一般的性能瓶颈。

但是在一个目录中拥有如此多的文件并没有经过很好的测试,并且有很多工具无法做到这一点。例如,定期系统维护脚本可能会对它产生影响。

我很高兴地在 UFS2 上使用了一个包含数百万个文件的目录,并且在我想删除该目录之前没有发现任何问题 - 这花了几天时间。


小智 13

这取决于创建文件系统时使用的inode 数量。执行

df -i 
Run Code Online (Sandbox Code Playgroud)

将为您提供空闲 inode 的数量。这是文件系统和目录可以容纳多少文件的实际限制。


dmc*_*ten 6

我假设您正在考虑将大量文件存储在一个地方,不是吗?

大多数现代 Unix 文件系统可以将很多文件放在一个目录中,但是像跟踪路径、列出文件等操作涉及对文件列表的线性搜索,如果列表太大,则会变慢。

我似乎记得听说过几千对于大多数实际用途来说太多了。典型的解决方案是打破分组。那是,

/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/
Run Code Online (Sandbox Code Playgroud)

并根据它们的 .hash 将您的文件存储在适当的子目录中basename。选择一个方便的散列,第一个字符可能适用于简单的情况。


Cristian Ciupitu 在评论中写道,XFS以及可能其他非常新的文件系统使用log(N)可搜索结构来保存目录内容,因此这种限制得到了极大改善

  • 一些现代文件系统,例如 XFS,不涉及线性搜索。XFS 的 B-Tree 技术使其能够使用复杂的索引(来自 http://www.uoks.uj.edu.pl/resources/flugor/IRIX/xfs-whitepaper)直接访问包含文件位置的块和/或范围。 html)。 (5认同)