ext4 上 400 万个文件的最佳选择

ext4 上 400 万个文件的最佳选择

我打算将 400 万个文件放入 EXT4 分区。我每个目录中有大约 700 个文件,平均文件大小为 38kb,总大小为 169 GB。

在块大小、索引节点大小和索引节点比率方面我可以选择哪些最佳选项?

考虑到 fsck 可能需要的检查时间,创建两个或更多分区是否更好?

答案1

对于 ext4 来说,在单个文件系统中处理 4M 文件没有问题,只要文件系统使用足够的 inode 进行格式化。如果文件名不是太大,单个目录中甚至有 4M 个文件也没有问题。

Lustre 文件系统在单个目录中包含 1.5-2B 文件和 10-12M 文件(这大约是内核 4.recent 之前添加“large_dir”功能时的目录限制)。这意味着您不需要对目录结构进行任何特殊操作来处理文件,除非您将来可能需要存储更多文件,或者如果您定期周转文件,您可能希望在其中创建“基于年龄”的目录,然后在一段时间后删除它们。

合理的格式选项是:

mke2fs -t ext4 -i 32768 -b 4096

-i 32768 = average file size is 32KB, to ensure enough inodes
-b 4096 = blocksize, to allow large directories

默认 inode 大小就可以了,除非您在每个文件上存储大量 xattrs。如果是(用于getfattr -d -m- -ehex /path/to/existing/file查看平均 xattr 大小是多少),则用于-I增加它。目前核心 inode 大小约为 180 字节,其余部分可用于快速 xattrs。

如果您将文件系统放在 LVM/DM 设备上,那么如果将来需要更多空间/索引节点,您还可以在线调整其大小以添加更多空间/索引节点。您无法轻易更改的是索引节点比率或索引节点大小。

相关内容