ext4,xfs文件系统深入讲解inode,block,superblock,位图,块位图等

本文详细介绍了Linux中的ext4和XFS文件系统,重点讲解了inode、block、superblock、位图和块位图的工作原理和应用场景。inode存储文件元数据,block为最小存储单元,superblock保存文件系统信息,位图用于快速查找空闲资源,块位图记录块使用情况。ext4适合通用存储,支持日志功能;XFS擅长大容量存储和高并发访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)

 

Linux中的ext4和XFS是常见的文件系统,它们在磁盘存储和文件管理方面提供了高性能和高可靠性。下面是关于ext4和XFS文件系统中的inode、block、superblock、位图和块位图的原理解释,以及使用场景的说明,同时提供了一些相关的文献和资料链接供参考:

ext4和XFS文件系统的原理详细解释:

  1. Inode(索引节点):Inode是文件系统中的数据结构,用于存储文件的元数据,包括文件大小、权限、拥有者、访问时间等信息。每个文件和目录在文件系统中都有一个唯一的inode,通过inode可以查找和访问相应的文件数据。

  2. Block(块):Block是文件系统中的最小存储单元,用于存储文件的实际数据。文件系统将大文件划分为多个块,并将这些

本文基于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明显快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼弦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值