什么是Unix文件夹可以容纳的最大数量的文件?

什么是Unix文件夹可以容纳的最大数量的文件?

我认为这将和文件数量一样。

每个文件系统都有所不同, http://en.wikipedia.org/wiki/Comparison_of_file_systems

在目前所有的Unix文件系统中,一个目录可以容纳几乎无限的文件数量。 而“无限制”受到磁盘空间和inode的限制 – 无论哪个先运行。

使用较旧的文件系统devise( ext2 , UFS , HFS + ),如果目录中有很多文件,事情往往会变得缓慢。 通常事情开始变得痛苦大约10,000个文件。 使用更新的文件系统( ReiserFS , XFS , ZFS , UFS2 ),您可以在目录中拥有数百万个文件,而不会遇到一般性能瓶颈。

但是在一个目录中有这么多的文件没有经过很好的testing,并且有很多工具无法正常工作。 例如,周期性的系统维护脚本可能会在其上。

我高兴地使用了一个UFS2上有几百万个文件的目录,直到我想删除这个目录 – 这花了几天时间,才发现没有问题。

这取决于创build文件系统的inode数量 。 执行

df -i 

会给你免费的inode的数量。 这是文件系统和目录可容纳多less文件的实际限制。

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

大多数现代的Unix文件系统可以将大量文件放在一个目录中,但像下面的path,列表文件等操作涉及文件列表的线性search,并且如果列表太长,就会变慢。

我似乎记得听说有几千条对于大多数实际用途来说太多了。 通常的解决scheme是打破分组。 那是,

 /some/path/to/dir/a/ /some/path/to/dir/b/ ... /some/path/to/dir/z/ 

并根据其basename的散列将文件存储在适当的子目录中。 select一个方便的散列,第一个字符可以做简单的情况。


Cristian Ciupitu在评论中写道, XFS以及其他一些非常新的文件系统使用log(N)可search结构来存放目录内容,所以这个约束被大大地改善了 。

ext3最常见的linux文件系统格式之一,如果你有一个目录中的20k +文件,真的很慢。 不pipe有多less可以容纳,你应该尽量避免在一个目录中有这么多的文件。

从你留下的评论中,我想你并不关心你的FS可以托pipe多less个文件/文件夹。

您应该考虑使用ModRewrite并将site.com/username重写为site.com/?user=或其他types,并将所有数据存储在数据库中。 每个用户创build一个文件夹通常是没有必要的(也不是一个好主意)。

也就是说,每个文件系统都有限制, df可以告诉你系统的每个分区上有多lessinode可用。