好的,不是那么大,但是我需要使用一个目录,其中大约 60,000 个文件(平均大小为 30kb)存储在一个目录中(这是一个要求,因此不能简单地分成文件数量较少的子目录)。
这些文件将被随机访问,但一旦创建,就不会再写入同一文件系统。我目前正在使用 Ext3,但发现它非常慢。有什么建议吗?
答案1
您应该考虑 XFS。它在文件系统和目录级别都支持大量文件,并且由于 B+ 树数据结构,即使有大量条目,性能仍保持相对稳定。
有一个维基百科上的页面大量论文和出版物详细介绍了该设计。我建议您尝试一下,并将其与您当前的解决方案进行比较。
答案2
本文作者深入探讨了文件系统在处理大量文件时的一些性能问题,并对各种文件系统 ext3、ext4 和 XFS 的性能进行了很好的比较。本文以幻灯片形式提供。https://events.static.linuxfound.org/slides/2010/linuxcon2010_wheeler.pdf
答案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
但我觉得你可能走错了路……为什么不生成一个平面索引并使用一些代码根据该索引随机选择呢?然后,您可以使用子目录来获得更优化的树结构。