ext3 中一个目录下可以直接存放多少个文件?

ext3 中一个目录下可以直接存放多少个文件?

我有一个根目录“data_0”。此目录下有大约 15,000 个目录(“a”、“b”、“c”……“aa”、“ab”……)。每个目录下都有数千个非常小的文件(4~10kB),每个文件大约有 1,000 到 2,000 个文件。

所有这些会产生 3000 万个文件。我需要将这些文件从“data_0”移动到“data_1”文件夹,但不包含“2 级”文件夹(a、b、c 等),因此:

/data_0/a/1.txt --> /data_1/a_1.txt
/data_0/a/2.txt --> /data_1/a_2.txt
...
/data_0/ccc/989.txt --> /data_1/ccc_989.txt
...

我可以走多远?性能在这里并不重要。是否存在逻辑限制或仅仅是性能限制?

答案1

如果要信任互联网上的陌生人,那么 ext3 文件夹可以包含的文件数量是没有限制的。ext3-users RedHat 邮件列表上是这么说的2.6 内核理论上允许一个目录中有“数十亿”个文件。你可能需要dir_index稍微调整一下让它顺利运行,如果你要搜索文件的话。在一个目录中有大量文件还会产生一些其他副作用,你可能想阅读一下此 StackOverflow 线程

因此答案很可能是:“是的,但是……”

答案2

单个目录中的文件数量没有逻辑限制,但随着单个目录中文件数量的增加,性能会受到很大限制(我的经验法则是将其保持在 1000 以下,尽管在某些情况下我曾做过 10000 个)。文件系统上的文件总数是有限制的,由文件系统创建参数(inode 总数)决定。每个目录的子目录数量也有硬编码限制,为 32000 个(其中两个条目始终由.和占用..)。

相关内容