XFS 与 ext4 性能比较

XFS 与 ext4 性能比较

根据这个博客,

XFS 是旧的文件系统,处理小文件时速度很慢。

读到这篇文章时我的第一印象是 XFS 不好。

然而有人告诉我 XFS 使磁盘性能更好并且这个基准没有意义。

在此输入图像描述

所以我对此进行了更多研究并发现了以下事实。

维基百科

XFS 是 Silicon Graphics, Inc (SGI) 于 1993 年创建的高性能 64 位日志文件系统。从 5.3 版开始,它是 SGI IRIX 操作系统中的默认文件系统。 XFS于2001年被移植到Linux内核;截至 2014 年 6 月,大多数 Linux 发行版都支持 XFS,其中一些发行版将其用作默认文件系统。

维基百科再次 ...

XFS 中的元数据操作历来比其他文件系统慢,导致删除大量文件等操作的性能较差。

如何极客

XFS在处理大文件时具有良好的性能,但在处理许多小文件时性能比其他文件系统差。它对于主要需要处理大文件的某些类型的服务器可能很有用。

这些事实和基准正确吗?

答案1

之前的 XFS Q/A 提到了这个页面:如何选择红帽企业 Linux 文件系统。我认为它会解决您关于性能的问题:-)。这是来自官方红帽知识库。复制整个页面是不合适的。这里有一个味道:

描述这一点的另一种方法是,Ext4 文件系统变体往往在 I/O 能力有限的系统上表现更好。 Ext3 和 Ext4 在有限带宽 (< 200MB/s) 和高达约 1,000 IOPS 的能力上表现更好。对于任何具有更高功能的事物,XFS 往往会更快。与 Ext3 和 Ext4 相比,XFS 每个元数据操作消耗的 CPU 大约是 Ext3 和 Ext4 的两倍,因此,如果您的 CPU 密集型工作负载并发性很小,那么 Ext3 或 Ext4 变体会更快。一般来说,如果应用程序使用单个读/写线程和小文件,则 Ext3 或 Ext4 更好,而当应用程序使用多个读/写线程和较大文件时,XFS 会表现出色。

之前的回答

这是此答案的先前版本。我对其进行了修改和扩展,以提供背景信息并证实上述来源。它并非全部必读内容。


避免 XFS 是没有意义的老的。 XFS 和 ext2/ext3/ext4 之间有很多相似之处,包括它们的长度和长度积极的生活。

XFS 是 RedHat Enterprise Linux 主要支持的文件系统。随着时间的推移,人们为开发 XFS 付出了很多努力,尤其是来自 RHEL 的努力。 XFS 中新功能和高级功能的绝对数量更多:-)。请参阅例如对“reflink”的支持。

“Desktop Linux”安装(也针对现代笔记本电脑)仍然通常使用 ext4。 ext4 提供了一个非常熟悉、众所周知的环境。

在普通台式机上,XFS 的优势并不一定适用。 ext4 可能有优势,包括性能优势。尽管如果您从表面上看上面的数字,他们表明 XFS 可能在快速的现代笔记本电脑上具有优势!

目前,ext4 维护者受雇于 Google。 ext4 用于 Google 的 Android 操作系统。因此 ext4 用于许多硬件不太强大的手机和平板电脑中。[1][2]

我还发现 ext4 很方便,因为您可以缩小文件系统分区。当您想要管理单个磁盘上不同安装所使用的空间时,这可能很有用。 XFS 不支持缩小,只支持增长。 (原则上,这个问题可以在 LVM 中使用“精简配置”来解决。请参阅 Stratis Storage,它使用 XFS 和精简配置。也许将来 Stratis 会起飞,所有发行版都可以安装到 Stratis)。

一些在这种情况下,ext4 的设计被描述为陈旧且混乱。 XFS 显然在这里管理得更好一些:简单的文件复制(或写入)会导致 Linux 文件系统上十秒以上的延迟。更新:此链接现在提到了已提交的用于改进 ext4 的补丁,可能是针对 Linux 内核 v5.3 的。未来仍然可能会有重大改进。

XFS《小文件性能》

相对于其他文件系统,XFS 在处理许多小文件时的性能最初是一个主要弱点。随着时间的推移,已经有所改进。

需要注意的一个重大变化是延迟记录,大约在 2010-2012 年左右。也就是说,如果您看到任何在此功能之前的小文件性能比较,它们就不再相关。延迟日志记录设计很大程度上基于 ext3 日志记录:-)。 尽管如此,两者在不同情况下仍然存在性能差异。 看:https://lwn.net/Articles/476263/

(在此之前,显然“2002 年添加了版本 2 日志格式,这有助于使元数据性能更好”。但这可能无助于回答这个问题:-)。

从那时起,还有一些进一步的变化。例如,红帽文档可能无法反映所有最新更改。我注意到这句话:

[...] 免费 inode B+ 树 (finobt),以便在“老化”文件系统上获得更好的性能,并且文件类型现在默认存储在目录中 (ftype=1),这大大提高了某些具有大量文件(通常很小)的情况下的性能)文件。

- 给某事物发表意见用于存储大量小文件(HDD,而不是 SSD)的最高性能 Linux 文件系统是什么?

相关内容