对于大型文件集,每个文件夹的理想文件数

Ideal number of files per folder for large sets of files

我目前正在设计一个使用文件系统存储文档的简单存储库。未来有数百万个文件的潜力,我想用来将 ID 映射到磁盘上某个位置的策略是对 ID 进行哈希处理并使用部分哈希来确定它应该位于的目录。

一个常见的操作是读取每个文件夹及其任何嵌套文件夹中的所有文件。

My question is: is there an ideal ratio of files per directory? I have the means to control this ratio via the ID -> location algorithm. Any data to back answers up would be great.

如果您担心的是性能,这将取决于 您正在使用的文件系统类型。较旧的文件系统,如 ext2 保留 线性列表中的目录条目。在 a 中查找特定文件 目录可能非常昂贵。

现代文件系统,例如 ext4, btrfs, xfs 和其他人通常有索引目录,一个的访问时间 巨大目录中的单个文件不会明显 不同于访问小目录中的单个文件。实际上, 将数百万个文件分布在许多子目录中可能会给你 查找性能比将它们全部放在一个目录中更慢!

如果你正在编写自己的软件,那么它会做很多线性的 扫描整组文件或按名称访问单个文件, 你采用哪种方式可能并不重要(只要你 正确访问 方式.

我更担心管理外部文件系统 应用。典型的系统实用程序(如 ls)可能使用 readdir() 或 目录的线性扫描。为了防止系统管理员有 在目录中诊断问题时非常头疼 结构,我会选择一些令人愉快的浓密的东西,以及 10k-20k 的条目 每个目录(假设索引目录)都可以。

选择布局时,您可能希望注意 每个目录允许的子目录数(即 ext4 上的 64000 个)。