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