我需要一个方向,因为所有的博客/基准似乎都是相互矛盾的。
目标:
FS 上有大量小文件,目录树形式类似于 AB/CD/EF... 两个大小组:G1:10-20 kB G2:100-500kB
我需要使用 nginx 来快速访问服务器。
限制
删除或创建性能并不重要。在极端情况下,可能需要一分钟,我不在乎。读取/访问必须快速<-> nginx。文件在创建时被复制到不同的磁盘,因此不涉及 raid。只是商品。动态 inode 创建或类似。可靠性不是主要问题,因为在 3 个不同的服务器上有重复项。
背景与矛盾
我读到 XFS 适合处理许多小文件的高性能邮件服务器。其他人说 XFS 不擅长处理小文件,EXT4 更好。
并且互联网上对此一直存在矛盾。
问题
总的来说,问题在于 inode 分配。大 inode 表浪费空间。将其设置得太弱,您就完蛋了:擦除并重新创建分区(不可能发生这种情况)。
对我来说,这是一个陷阱,即使还有可用空间,它也会阻止我添加新文件。这就是为什么我希望换用其他东西。
由于文件的高度动态性和不可预测的数量,我似乎陷入了困境。因此需要您的意见。
btrfs 被认为尚未准备好投入生产。其他的似乎不行(可靠性)
在这种情况下我应该使用什么 FS?
答案1
并且互联网上对此一直存在矛盾。
但您希望在这里得到一致的答案吗?
我唯一具体的建议是忘记 ZFS - 除非你在 Solaris 上运行(它会产生很多意义)。
除此之外,如何配置磁盘、I/O 调度程序以及为磁盘 I/O 提供备用内存比 FS 的选择更重要 - 但您确实特别询问了 FS。但是,您没有提供很多有关弹性要求的信息:您的电源有多可靠?您需要快照功能吗?
虽然我是 Reiser 的忠实粉丝,并且在我的网络服务器上运行它多年,但我不会在新系统上使用它 - 它从未被采用为 Linux 内核的一部分,并且开发正在逐渐停止。
因此在 Linux 上剩下的候选者是 XFS、JFS、Ext4 和 BTRFS(还有 NILFS - 但这又是一种小众工具,而且在我看来性能方面又很差)。
如果您必须使用 LVM(即使没有快照 IME,也会产生很大的性能开销),那么请确保您拥有具有屏障支持的最新版本 - 并且如果您使用日志文件系统,请启用屏障。
如果性能是您唯一的考虑因素,那么现在是时候开始基准测试了 - 我建议使用 Jens Axboe 的 fio 来测量读/写性能 - 它可以配置为模拟许多工作负载。
答案2
ZFS 和 XFS 分配 inode动态地所以可以满足需求。我不会选择 ReiserFS。