ext4、ntfs、xfs、btrfs、zfs、f2fs和reiserFS文件系统性能对比

这篇具有很好参考价值的文章主要介绍了ext4、ntfs、xfs、btrfs、zfs、f2fs和reiserFS文件系统性能对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ext4、ntfs、xfs、btrfs、zfs、f2fs和reiserFS性能测试对比

原文地址:CSDN 博客



1. 前言

目前的文件系统五花八门,从人人皆知的 ext4、ntfs 和 xfs,到 btrfs、zfs 等小众文件系统,可谓是琳琅满目,让人难以抉择适合自身业务的文件系统。

本文总结了国外网友在 OpenBenchmark 网站上的结果,并给出不同情境下各大文件系统的性能表现与对比。

目前所涉及到的文件系统包括:

  • btrfs
  • xfs
  • ext4
  • f2fs
  • reiserFS
  • ntfs
  • zfs

写文不易,还望一键三连点个关注吧!


2. Linux 4.4 Benchmark

测试基准数据来源于 Linux 4.4 File-Systems。

2.1 测试环境

名称 配置
处理器 Intel Xeon E5-2687W v3 @ 3.5GHz(20 Cores)
主板 MSI X99S SLI PLUS(MS-7885) v1.0
芯片组 Intel Xeon E7 v3
内存 16GB
硬盘 PNY CS1211 120GB + 80GB Intel SSDSCKGW08
操作系统 Ubuntu 16.04
内核版本 4.4.0-040400-generic(x86_64)
GCC GCC 5.3.1 20160122

各文件系统挂载选项:

文件系统 挂载选项
btrfs relatime,rw,space_cache,ssd,subvol=/,subvolid=5
xfs attr2,inode64,noquota,relatime,rw
ext4 data=ordered,relatime,rw
f2fs acl,active_logs=6,background_gc=on,extent_cache,inline_data,relatime,rw,user_xattr
reiserFS relatime,rw
ntfs allow_other,blksize=4096,group_id=0,relatime,rw,user_id=0
zfs defaults

2.2 测试手段

对于文件系统的 benchmark,分为以下的测试手段:

  • aio-stress:使用 SuSE 开发的异步 I/O 框架,测试异步 I/O 在高压环境下的随机写入能力。
  • sqlite:测量 SQLite 数据库进行固定数量的 Insert 操作的写入用时,此为数值越小越好的测试。
  • flexible IO tester:无缓存情况直写磁盘的情况下,测试硬盘对 4KB 大小的块的随机读写顺序读写能力。
  • fs-mark:创建众多的 1MB 文件以测试文件系统写入能力。
  • dbench:模拟多用户读写压力的 benchmark 工具。
  • compilebench:通过内核树的编译与更新,模拟并测试硬盘快满且文件夹存放过久后的表现。

2.3 测试结果

测试结果的总表如下,其中标 ^ 的为同测试中最优数据,标 *最差数据。数据单位均为 MB/s 或秒,且仅保留整数部分。:

测试 btrfs xfs ext4 f2fs reiserFS ntfs zfs
aio-stress ^2920 2385 2424 1606 1606 11* 146
sqlite (越小越好) 755* 379 384 471 384 ^294 501
fio: 随机读取 104 109 110 104* 112 ^215
fio: 随机写入 84 80 79 95 75* ^98
fio: 顺序读取 113* 185 185 184 185 ^219
fio: 顺序写入 81* 93 87 84 96 ^101
fs-mark: 1K 文件 35 35 35 ^60 31* 35 37
fs-mark: 5K 文件, 4 线程 68 71 ^112 76 79 41* 59
fs-mark: 5K 文件, 32 子目录 35 35 36 ^60 31* 34 36
dbench: 6 客户 53 ^62 61 54 47 29* 60
dbench: 12 客户 105 ^118 107 96 74 30* 117
compilebench: 创建内核树 160 206 314 ^339 115 44* 145

各个测试的图表如下:

ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器 ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器
ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器 ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器
ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器 ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器
ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器 ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器
ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器 ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器
ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器 ntfs和ext4读写速度比较,服务器,linux,系统架构,服务器

2.4 各大文件系统对比

  1. 高并发读写:btrfs 最优,xfs 及 ext4 稍好,zfs 及 ntfs 最差。
  2. 随机读写:ntfs 最优,其余相差不大。
  3. 顺序读写:ntfs 最优,btrfs 最差,其余相差不大
  4. 顺序多文件写入:f2fs 最优,其余相差不大。
  5. 并发多文件写入:ext4 最优,ntfs 最差,zfs 较弱,其余相差不大。
  6. 顺序多文件写入不同子目录:f2fs 最优,其余相差不大。
  7. 多客户使用体验:xfs 最优,ntfs 最差,reiserFS 较弱,其余皆优秀。

通过此 benchmark,可以发现各个文件系统具有特性,且各有优缺点

  • btrfs 仍处于开发阶段,其 COW (Copy On Write) 机制使其对数据库的插入操作表现较差。
  • xfs 和 ext4 的综合素质优秀,特定能力上不会过于耀眼,但是对用户来说综合体验最佳
  • f2fs 在多文件情境下表现出色。
  • reiserFS 即将被 reiser4 文件系统取代,综合性能大不及其它系统。
  • ntfs 在串行的工作模式下,其随机读写和顺序读写能力都极高;反之,其在高并发高压环境下表现不佳

注:fio 测试中缺少 zfs 相关数据,将在之后的测试中重新进行分析。


3. ZFS Ubuntu 16.04 测试

由于 zfs 相关数据在第 2 章的测试中不够完善,因此本章补充 zfs 相关的测试内容。

本章数据参考自 ZFS Ubuntu 16.04 Testing。

3.1 测试环境

名称 配置
处理器 Intel Xeon E5-2687W v3 @ 3.5GHz(20 Cores)
主板 MSI X99S SLI PLUS(MS-7885) v1.0
芯片组 Intel Xeon E7 v3
内存 16GB
硬盘 PNY CS1211 120GB + 80GB Intel SSDSCKGW08
操作系统 Ubuntu 16.04
内核版本 4.4.0-21-generic (x86_64)
GCC GCC 5.3.1 20160122

各文件系统挂载选项:

文件系统 挂载选项
zfs defaults
ext4 data=ordered,relatime,rw
btrfs relatime,rw,space_cache,ssd,subvol=/,subvolid=5
xfs attr2,inode64,noquota,relatime,rw

注:此环境与测试 2 中基本一致,可以联合查看。

3.2 测试手段

对于文件系统的 benchmark,分为以下的测试手段:

  • fs-mark:创建众多的 1MB 文件以测试文件系统写入能力。
  • blogbench:模拟一个博客网站的压力场景,测试随机读写的能力。
  • dbench:模拟多用户读写压力的 benchmark 工具。
  • iozone:发起众多不同类型的 I/O 请求,测试文件系统的性能。
  • compilebench:通过内核树的编译与更新,模拟并测试硬盘快满且文件夹存放过久后的表现。、

3.3 测试结果

与 2.3 中测试样式基本一致,所使用单位为 MB/s 或其他特殊的单位:

测试 xfs ext4 btrfs xfs
fs-mark: 1K 文件 ^37 35 35 34*
fs-mark: 5K 文件, 4 线程 59* ^112 67 69
fs-mark: 5K 文件, 32 子目录 ^36 35 35* 35
blogbench: 读取 358K* 563K 2719K ^3688K
blogbench: 写入 906* ^13086 7602 5382
dbench: 6 客户 59 ^61 52* 60
iozone: 4Kb, 8GB 读取 1131* ^6272 6225 6138
iozone: 4Kb, 8GB 写入 201* 464 ^478 464
compilebench 178* ^372 191 252

3.4 zfs 性能分析

相较于其他常用的文件系统,zfs 在性能上并不能占得太多优势,相反地,zfs 在各方面的性能上都不及其它的文件系统

但这并不意味着 zfs 一无是处,zfs 的使用场景主要位于多硬盘体系,其最具特色的功能在于其提供文件系统级别的 raid 阵列能力,因此仍然有不少的适用场景。


4. 关于性能测试

性能测试并不代表文件系统的实际体验,在读者阅读此篇文章之前,需要明确此点。

许多文件系统并不一定专门为性能而生,它们都有自己的适用场景,每个文件系统都有其独特的设计初衷。例如:

  • btrfs 和 zfs 都具有 COW(Copy On Write) 机制。COW 机制使得它们在进行修改操作时具有不俗的性能,但也带来了磁盘空间的浪费,并增加了读取时的消耗。
  • btrfs 和 zfs 都自带 raid 功能。在数据可用性有要求的情况下,相比其他的文件系统,它们能提供开箱即用的 raid 阵列能力。
  • btrfs 对所有数据都带有 checksum 机制,确保文件完整性。
  • xfs 具有动态 inode 分配能力,适合大文件分配。
  • … …

因地制宜,适才取用,才是程序员之道。


5. 总结

本文笔者总结了 OpenBenchmark 上的一些数据,并整合出了文件系统的性能对比。

字不在多,好用就行。笔者刚回到 CSDN 没多久,感觉 CSDN 写作中,弥漫着浓浓的就业、应试气氛。对于我这种只想观看前沿技术和新奇报道的博主而言,不是十分友好,且预感此篇文章也将石投大海,掀不起一丝风浪。

无妨,只望有用之士取之即可,愿开源精神长存

若觉得本文有用,还望一键三连,俺必定十分感激!文章来源地址https://www.toymoban.com/news/detail-824517.html

到了这里,关于ext4、ntfs、xfs、btrfs、zfs、f2fs和reiserFS文件系统性能对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ext4 文件系统和XFS文件系统的对比

    ext4 和 XFS 是Linux操作系统中常见的两种文件系统。它们都是现代的高性能文件系统,各自具有优缺点。以下是它们之间的比较: 性能: XFS 在处理大文件和大目录时比 ext4 表现更好。而 ext4 在处理小文件和目录时表现更优。此外, XFS 具有更好的并发访问性能和更高的吞吐量

    2024年02月02日
    浏览(31)
  • 【Ubuntu】解决EXT4-fs error (device sda2): ext4_find_entry

    在Ubuntu 22.04下跑深度学习实验时遇到这个问题, 电脑卡住并无法进行任何操作。 找到一个权宜之计通过一条命令暂时解决(适用于时间紧迫或者更换硬件条件不允许) or 值得一提的是,这个操作无法一劳永逸,我的ubuntu系统是放在1TB的固态硬盘上:(固态硬盘链接链接),22年7月

    2024年04月09日
    浏览(35)
  • 【Docker】AUFS、BTRFS、ZFS、储存池详解

    洁洁的个人主页 我就问你有没有发挥! 知行合一,志存高远。 前言 Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之

    2024年02月13日
    浏览(22)
  • 【Docker】Docker中 AUFS、BTRFS、ZFS、存储池概念的详细讲解

    前言 Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介: 热爱跑步的恒川 ,致力于

    2024年02月11日
    浏览(31)
  • 【Docker】浅谈Docker之AUFS、BTRFS、ZFS、Container、分层的概念

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 Docker 对 container 的使用基本是建立在LXC基础之上的,然而LXC存在的问题是难以移动 - 难以通过标准化的模板制作

    2024年02月08日
    浏览(70)
  • 【Docker】Docker中 的AUFS、BTRFS、ZFS、存储池概念的详细讲解

    前言 作者简介: 辭七七,目前大二,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 AUFS (AnotherUnionFS) 是一种 Union FS , 简单来说就是支持将不同目录挂载到同一个虚拟文件系统下(unite several di

    2024年02月05日
    浏览(28)
  • Ext4日志优化-iJournaling

    这几年随着SSD等高性能介质的普及,及其在大规模分布式存储系统上的应用。基于Append only的日志写入技术也应用得越来越多,这几天刚好有空,重读了Ext4文件系统的日志部分的内容,也正好看到一篇对Ext4日志技术进行优化的论文,该论文中的优化方案,作为Ext4经典日志技

    2023年04月25日
    浏览(27)
  • ubuntu挂载ext4文件系统

    创建文件系统时,可添加选项-b指定blocksize,-I指定Inodesize。 挂载文件系统时,可指定journal optional: 关于joural optional: journal data=journal模式提供了完全的数据块和元数据快的日志,所有的数据都会被先写入到日志里,然后再写入磁盘(掉电非易失存储介质)上。在文件系统崩

    2024年02月15日
    浏览(28)
  • ext4 - mballoc块分配机制

    概述 ext4为了尽量避免block管理的碎片化有如此措施: 1.mballoc多块分配器。  buddy算法管理每个block group 采用prellocation机制,氛围per-cpu local preallocation和per inode preallocation 小文件和大文件采用不同的策略 小文件(具体怎么算小文件可配置)尽量保持在一起,默认应该是512 blo

    2024年02月16日
    浏览(29)
  • Mac OS挂载ext4硬盘

    Home - macFUSE 如下载macfuse-4.4.3dmg安装 安装过程可能会遇到“若要要启用系统扩展,您需要在恢复环境中修改安全性设置”的提示,如下图: 解决: 关机,直到键盘灯全灭了! 再按住开机键,直到出现下图界面,再松开!具体看下面的文章链接 参考文章:M1芯片遇到“若要要启

    2024年02月09日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包