文件系统单个目录中的大量文件

bug*_*t77 31 linux ext3

好的,不是那么大,但我需要使用一些东西,其中大约 60,000 个平均大小为 30kb 的文件存储在单个目录中(这是一个要求,因此不能简单地分成具有较少文件数量的子目录)。

这些文件将被随机访问,但一旦创建,将不会写入同一文件系统。我目前正在使用 Ext3,但发现它很慢。有什么建议?

Kam*_*iel 14

您应该考虑 XFS。它在文件系统和目录级别都支持非常大量的文件,并且由于 B+ 树数据结构,即使在大量条目的情况下,性能也保持相对一致。

在他们的 wiki 上有一个页面,里面有大量详细介绍设计的论文和出版物。我建议您尝试一下,并根据您当前的解决方案对其进行基准测试。

  • 根据@nelaar 答案中的幻灯片,ext4 在此任务中优于 xfs。 (4认同)

nel*_*aro 14

Linux 上的 10 亿个文件

本文的作者深入研究了具有大文件数量的文件系统的一些性能问题,并对各种文件系统 ext3、ext4 和 XFS 的性能进行了一些很好的比较。这是以幻灯片形式提供的。https://events.static.linuxfound.org/slides/2010/linuxcon2010_wheeler.pdf

运行 mkfs 的时间 创建 1M 50kb 文件的时间 文件系统修复时间 删除 1m 文件

  • 哇这些是一些非常难以阅读的图表。~ (29认同)
  • 我们确实更喜欢答案包含内容而不是指向内容的指针。虽然这在理论上可以回答这个问题,但 [最好](​​http://meta.stackexchange.com/q/8259) 在此处包含答案的基本部分,并提供链接以供参考。 (2认同)

Lud*_*erl 8

ext3 目录中的许多文件已在姊妹站点stackoverflow.com上进行了详细讨论

在我看来,ext3 上的一个目录中的 60 000 个文件远非理想,但根据您的其他要求,它可能已经足够了。


bug*_*t77 6

好的。我使用 ReiserFS、XFS、JFS、Ext3(启用 dir_hash)和 Ext4dev(2.6.26 内核)做了一些初步测试。我的第一印象是一切都足够快(在我强大的工作站上)——事实证明,远程生产机器的处理器相当慢。

即使在最初的测试中,我也遇到了 ReiserFS 的一些奇怪之处,因此排除了这种情况。看起来 JFS 的 CPU 需求比其他所有产品少 33%,因此将在远程服务器上进行测试。如果它表现得足够好,我会使用它。


xeo*_*eon -1

您没有指定这些文件中的数据类型。但从它的声音来看,您应该使用某种带有索引的数据库来进行快速搜索。