文件系统EXT3,EXT4和XFS的区别

本文对比了Linux下的三种文件系统:EXT3、EXT4和XFS。EXT3支持最大32TB文件系统;EXT4扩大到1EB,并优化了数据块分配;XFS则针对高性能存储进行了优化,支持PB级存储。

文件系统EXT3,EXT4和XFS的区别:
1. EXT3
(1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件
(2)Ext3目前只支持32000个子目录
(3)Ext3文件系统使用32位空间记录块数量和i-节点数量
(4)当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块
2. EXT4
EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本。
(1)Ext4的文件系统容量达到1EB,而文件容量则达到16TB
(2)理论上支持无限数量的子目录
(3)Ext4文件系统使用64位空间记录块数量和i-节点数量
(4)Ext4的多块分配器支持一次调用分配多个数据块
3. XFS
(1)根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
(2)采用优化算法,日志记录对整体文件操作影响非常小
(3) 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间
(4)能以接近裸设备I/O的性能存储数据

本文基于kernel4.19.67版本分析。 基于如下命令完成写测试 time dd if=/dev/zero of=./test.bin count=2 bs=1G oflag=direct 同样的命令发现xfs的性能是9.4M/s, ext4是6.6M-8.8M/s, 且波动很大,大部分时间集中在7.5M/sz每秒。 基于上面的现象深入分析基于xfsext4分别direct方式写usb时的性能差异,找到了一种提升写usb性能的办法。 同时详细记录并描述了从vfs_write开始,到hcd层写数据的流程及关键点。 经过分析得到了如下几个知识点: a)xfsext4 即使是direct方式下写数据的方式也不一样,xfs依赖iomap是将数据(struct bio)提交到block层; ext4依赖filemap,最终依赖fs/direct-io将数据(struct bio )提交到block b)iomap提交到block层的数据以2M连续内存的页的方式提交,direct-io没有保证连续内存,虽然数据大小也是2M. 这是xfsext4出现性能差异的主要原因。 c)每次2M数据大小的限制是block层设置的 d)block层以回调函数(queue_rq)调用方式将数据(struct request)包装成struct blk_mq_queue_data格式提次到scsi层 e)scsi以消息方式将blk_mq_queue_data数据包装成struct scsi_cmnd格式发送给驱动usb-storage f)block层的缓冲区大小虽然有2M, 但是真正提交到scsi层时(scsi进一步提交到usb-storage)会根据设备本身的配置来拆分。如默认按120K来拆分 g)经过分析发现影响性能的点主要有一点,一个是max_sectors大小的配置,如果配置为4096扇区大小=2M, 可以将ext4的性能从7.5M/s提高到9.5M/s. xfs可以从9.4M/s提高到10.4M/s h)xfsext4快的原因是因为xfs申请的内存页是连续的页,DMA可以更快运行,但是ext4没有保证,所以xfsext4明显快。
### 不同文件系统的特性及比较 #### NTFS 文件系统 NTFS(New Technology File System)是由微软开发的一种高级日志记录文件系统,主要用于 Windows 操作系统。它的主要特点是支持大容量存储设备、安全性高以及兼容性好。然而,在 Linux 系统上使用 NTFS 可能会受到一些限制,因为它是专有技术,Linux 社区通过第三方工具来实现对其的支持。 - **优点**: 支持访问控制列表 (ACLs),提供更高的安全性稳定性;能够处理更大的分区单个文件尺寸[^1]。 - **缺点**: 在非 Windows 平台上效率较低,且不完全支持写入操作。 #### EXT3 文件系统 EXT3 是第三代扩展文件系统,基于其前身 EXT2 增加了日志功能。这使得数据恢复更加可靠,并减少了因意外断电或其他问题导致的数据丢失风险。 - **优点**: 数据完整性较高,适合于中小型数据库应用环境下的服务器部署。 - **缺点**: 对非常大的磁盘阵列或者频繁随机读写的负载可能表现不佳,相较于后来者如 EXT4XFS 来说不够高效[^2]。 #### EXT4 文件系统 作为 EXT3 的继任者,EXT4 提供了许多改进之处,比如更快的速度、更好的可伸缩性更少的碎片化倾向。它还引入了一些新特性,例如延迟分配策略(deferred allocation strategy) 多块分配(multi-block allocator),这些都极大地提高了性能。 - **优点**: 高效管理超大规模卷的能力显著增强;具备良好的向后兼容性,允许从旧版本平滑升级到最新标准而无需重新格式化整个驱动器。 - **缺点**: 虽然已经过充分测试并广泛应用于生产环境中,但在极端情况下仍可能存在某些局限性或潜在漏洞。 #### XFS 文件系统 XFS 是一种高性能的日志型文件系统,最初由 Silicon Graphics 开发用于 IRIX 操作系统,之后被移植至 Linux 。以其卓越的大规模文件管理连续I/O吞吐量著称。 - **优点**: 极端条件下的稳定运行能力突出;特别适用于媒体流服务等领域需求持续高速传输的应用场合。 - **缺点**: 删除大量小文件时可能会遇到性能瓶颈;缺乏内置压缩机制意味着占用更多实际物理空间。 ```python import os def check_file_system(path): """Check the type of filesystem at a given path.""" statvfs = os.statvfs(path) fstype = statvfs.f_fstypename.decode('utf-8') if hasattr(statvfs, 'f_fstypename') else None return fstype print(check_file_system('/')) ``` 上述脚本可以用来检测指定路径所使用的具体文件系统类型。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值