我需要在 ext4 系统上保存数百万个文件。
我知道采用具有多个子目录的结构是普遍接受的解决方案。我想知道在目录/子目录数量方面最佳方法是什么。
例如,我尝试了 16/16/16/16 这样的结构(即从 1 到 16 的(子)目录),我发现我能够在 2 分 50 秒内将 100K 文件移动到此结构。
当尝试将 100K 文件移动到 8/8/8/8/8/8 结构时,需要 11 分钟。因此,16/16/16/16 方法似乎更好,但我想知道是否有人对更好的目录/子目录分布有一些经验。
答案1
1)XFS现在是更好的选择比 EXT4更早。
2)即使每个目录有 1024 个条目也应该没问题,因此您可以适当减少子目录的深度级别。
答案2
经过多次测试,我找到了一个对我有用的解决方案,希望它也能帮助其他人:
我创建了一个 255/255 目录结构,然后使用 ramdisk (/dev/shm) 快速创建目录,然后在其中保存文件。然后每分钟将文件移动到硬盘一次。
使用这种方法将保存 255/255 目录中 100K 文件的时间从大约 5 分钟缩短到大约 5 秒。