适用于数百万文件的最佳文件系统

适用于数百万文件的最佳文件系统

在以下场景中,您会选择哪种 Linux 文件系统/设置来获得最佳速度:

几百万个文件 平均文件大小约为 3mb 随机访问文件 需要频繁获取所有文件的列表 不断写入新文件 不断读取旧文件

答案1

真正重要的是你如何组织您的文件。

如果您计划拥有一个包含约 10M 个文件的大型目录,那么任何文件系统都会受到影响,尽管 XFS 和 ZFS 可以很好地处理这种最坏的情况。

建议的方法是将文件组织到多个较小的目录中,并设置合理的文件数(~32K),以避免出现不同但相关的问题(即:ls大目录曾经非常慢)。

如果这不可能的话,我会使用 XFS 或 ZFS,但只有在测试装置上模拟预期负载后(注意:即使 EXT4 在性能方面也很好,但可能会严重影响 inode 限制)。

答案2

对于通用文件系统来说,您的工作负载几乎是最糟糕的。数百万个文件、频繁枚举、大量读写。巨大的元数据 I/O。对于大量文件,问题很少是传输文件本身的带宽,而是反复查询目录条目和 inode 的 IOPS 数量。

综合测试此工作负载,同时监控应用程序以确保其性能令人满意。在实际生产规模存储和 IOPS 级别上。确保匹配文件夹结构,每个目录 300 个文件与每个目录 3,000,000 个文件有很大不同。尝试几个不同的文件系统,适用于 Linux XFS 和 EXT4。

可能需要非常快的 SSD 存储和大量 RAM 才能使其充分运行。

也许您与操作系统供应商签订了支持合同,您可以让性能专家对其进行审核。

如果要获得可接受的性能,请考虑更改应用程序。考虑从文件系统以外的数据库存储和查询文件列表。许多数据库可能能够比受 POSIX 和 Linux VFS 限制的文件系统更快地返回几百万个结果。

答案3

从您的描述来看,XFS 是合适的选择。它是为了处理数十亿个文件而创建的。不过,您必须考虑适合您的计划的后端存储。

相关内容