ext4 为目录条目启用哈希

ext4 enable hashes for directory entries

根据kernel.org,可以将目录存储在树中而不是列表中,但您需要在 inode 结构中启用此标志 (EXT4_INDEX_FL)。我这是默认启用的还是我必须用一些标志格式化我的分区?

我需要存储许多小文件(同样的老问题),每个大约 130k,我知道这将有助于加快查找速度,并且建议将这些文件存储在 2 级目录层次结构中。还有什么我需要考虑的,这样如果想存储接近 60.000.000 的此类文件,它就不会爆炸吗? (可能是块大小的其他值,一组中的块数)

e2fsprogs 套件将此选项称为 dir_index。默认情况下它是启用的,您可以通过 运行 tune2fs -l DEVICE 作为根用户验证它是否在文件系统上启用。

确实建议您手动对文件进行分片,这样您就不会在同一目录中拥有大量文件。虽然使用 B 树使操作 O(log n) 而不是 O(n),但对于大量文件,该操作仍然很昂贵。

如果您知道要创建大量文件,可以使用 -i 选项将 inode 比率设置为 4096;这将创建更多的 inode,以便您可以容纳更多的文件。您还可以在 /etc/mke2fs.conf.

中查看大量情况的通用设置