当前位置: 首页 > 工具软件 > XFS > 使用案例 >

文件系统XFS与EXT4的区别

曹华荣
2023-12-01

XFS和EXT4的区别

  1. RHEL/Centos7默认文件系统是XFS,Centos6为Ext4,Centos5为Ext3。
  2. XFS可扩展性和Scalability比较强,Ext4受限于磁盘结构和兼容问题。
  3. EXT4可支持单个文件的大小:16GB到16TB
    XFS可支持单个文件的大小:16TB到16EB
  4. XFS是64位文件系统,理论上最大支持8EB减1字节的单个文件系统。
    Ext4是32位文件系统,理论上最大支持1EB减1字节的单个文件系统。

说明:

由于历史磁盘结构原因Ext4 的inode 个数限制(32位数)最多只能有大概40多亿文件。而且Ext4的单个文件大小最大只能支持到16T(4K block size) ,目前来说已经是瓶颈。XFS使用64位管理空间,文件系统规模可以达到EB级别。实际部署时取决于宿主操作系统的最大块限制。

性能对比结论:

高并发压力下:
xfs 的性能比 ext4 高 5-10% 左右。
io利用率
xfs 明显比ext4低,但是cpu 比较高 如果qps tps 在5000以下 etf4 和xfs系统无明显差异。压测过程中 xfs 在高并发 72个并发情况下出现thread_running 抖动,而ext4 表现比较稳定。此结论为借鉴其他大佬测试数据,如有

1、什么是文件系统

文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

2、什么是Ext4

EXT4是2008年推出的,是Linux系统下的日志文件系统第四代拓展文件系统(Fourth Extended Filesystem),是ext3文件系统的后继版本。它是一个真正可靠的文件系统,它几乎在过去几年的大部分发行版中一直是默认选项,它是由比较老的代码生成的。它是一个日志文件系统,意味着它会对文件在磁盘中的位置以及任何其它对磁盘的更改做记录。如果系统崩溃,得益于journal技术,文件系统很少会损坏。

  • Ext4的文件系统容量达到1EB,而文件容量达到了16TB.而且EXT4理论上支持无限数量的子目录。除此以外,EXT4的分配器MBalloc还支持一次性调用分配多个数据块- - - Ext4引入了盘区概念,每个盘区为一组连续的数据块,上述文件可以通过盘区的方式表示为“该文件数据保存在接下来的25600个数据块中”,提高了访问效率。
  • Ext4给日志数据添加了校验功能,日志校验功能可以很方便地判断日志数据是否损坏。而且Ext4将Ext3的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。日志总归会占用一些开销。Ext4允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。

3、什么是XSF

XFS是一种高性能的日志文件系统,最早于1993年,由Silicon Graphics(SGI)为他们的操作系统开发,大概2002年之后被移植到Linux内核上,2009年RHEL Linux版本5.4使用了XFS文件系统。

  • XFS特别擅长处理大文件,同时提供大型的数据传输。 由于其高性能,架构可扩展性和鲁棒性, XFS一直是很多企业系统的首选,特别是拥有大量数据的企业系统。XFS具有各种改进,使其能够在文件系统群体列表中脱颖而出,
  • 例如用于元数据操作的日志记录,XFS对文件系统元数据提供了日志支持。当文件系统更新时,元数据会在实际的磁盘块被更新之前顺序写入日志。XFS的日志被保存在磁盘块的循环缓冲区上,不会被正常的文件系统操作影响。可扩展/并行I / O,挂起/恢复I / O,在线碎片整理,延迟性能分配等等。现在,RHEL / CentOS 7和Oracle Linux使用XFS作为其默认文件系统。
  • XFS是一个64bit文件系统,最大支持 8exbibytes 减1字节的单个文件系统,实际部署时取决于宿主操作系统的最大块限制。对于一个32bitLinux系统,文件和文件系统的大小会被限制在 16tebibytes。

缺点:XFS文件系统不能缩小,当删除大量文件时会性能下降。

拓展:xfs剩余空间很多,但是报磁盘空间不足

xfs文件系统会把inode存储在磁盘最开始的1T空间里,如果这部分空间被完全填满了。
解决办法:
在挂载时,指定 inode64 选项:

mount -o remount -o noatime,nodiratime,inode64,nobarrier /dev/sdb1 /backup

这个在内核3.7以后的版本 已经解决了。其实默认defaults 挂载参数是,如无其他必要,默认default即可。

(rw,noatime,attr2,inode64,sunit=128,swidth=512,noquota)
 类似资料: