使用 Redhat,如果这有区别的话。
有默认限制吗?可以更改吗?如果没有,有什么解决方法可以增加目录中允许的文件夹数量吗?
答案1
答案2
在 ext2 中,根据 Wikipedia 的说法为 32,768 -http://en.wikipedia.org/wiki/Ext2fs#File_system_limits. 取决于您使用的文件系统。
答案3
您可能要考虑替代要执行的操作。即使您保持在文件系统限制以下(例如,ext2 为 32k),在单个目录中存储数万个文件至少可以说是很麻烦的。
一种可能性是,您尝试将文件系统用于更适合数据库的用途。考虑将数据存储在 PostgreSQL、MySQL 甚至 sqlite 数据库中。没有太多文件系统能够很好地处理大量文件——移动或备份数据会很慢。
如果你确实需要存储大量文件,请考虑其他目录结构。例如,你可以按字母顺序分隔文件,例如:
a/aaron.dat
a/alex.dat
a/alan.dat
b/bill.dat
b/brian.dat
这种方法可以通过增加分离深度来扩展,例如:
a/a/aaron.dat
a/l/alex.dat
a/l/alan.dat
或者,如果您正在输入每日日志文件或接收每日交付,您可以按日期分开它们,例如:
2009-10-04/logfile-01.txt
2009-10-05/logfile-01.txt
2009-10-05/logfile-02.txt
在这种特殊情况下,您可能还需要执行一个 cron 作业将旧日志打包成压缩的 tarball,以减少文件数量。
答案4
文件夹限制是企业系统在处理任意数量的文件时会根据文件名的哈希值将其存储在一个或两个子目录中的原因。例如,对文件名进行 md5(),并使用前四个字节作为存储文件的子文件夹;对于其他级别,使用接下来的 4 个字节作为其他子文件夹,或使用接下来的 4 个字节作为其他子文件夹,等等。大多数系统的深度永远不会超过 2 级。