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

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

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

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

答案1

您应该考虑 XFS。它在文件系统和目录级别都支持大量文件,并且由于 B+ 树数据结构,即使有大量条目,性能仍保持相对稳定。

有一个维基百科上的页面大量论文和出版物详细介绍了该设计。我建议您尝试一下,并将其与您当前的解决方案进行比较。

答案2

Linux 上有十亿个文件

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

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

答案3

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

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

答案4

使用 tune2fs 启用 dir_index 可能会有帮助。要查看它是否已启用:

sudo tune2fs -l /dev/sda1 | grep dir_index

如果未启用:

sudo umount /dev/sda1   
sudo tune2fs -O dir_index /dev/sad1
sudo e2fsck -D /dev/sda1
sudo mount /dev/sda1

但我觉得你可能走错了路……为什么不生成一个平面索引并使用一些代码根据该索引随机选择呢?然后,您可以使用子目录来获得更优化的树结构。

相关内容