近日,Linux内核开发团队提交了一批针对exFAT文件系统的性能优化补丁,旨在提升对微软exFAT文件系统的读取效率。此次优化的核心在于引入了多簇映射(Multi-Cluster Mapping)机制,能够显著改善大文件顺序读取的性能表现,尤其在使用小簇尺寸(如512字节)的闪存设备上效果更为突出。

exFAT是微软专为闪存类存储介质(如U盘、SD卡等)设计的轻量级文件系统。它突破了传统FAT32格式的单文件4GB大小限制,如今已成为跨平台移动存储的主流格式。Linux自5.4版本起已将exFAT驱动原生集成至内核,并通过用户态工具集(如exfatprogs)提供完整的格式化和管理支持。
然而,在原有实现中,每次读取操作都需要频繁调用get_block接口逐个查询簇的物理位置信息。当簇尺寸较小时,这种方式会引发大量细粒度的内核调用,形成明显的性能瓶颈。此次由麟麒软件工程师Chi Zhiling提交的补丁系列,为内核exFAT驱动新增了多簇映射能力——即单次操作即可批量获取连续多个簇的物理地址映射关系,从而实现:
- 大幅削减单次I/O过程中的
get_block调用次数 - 显著降低内核路径开销与上下文切换成本
- 在512字节簇配置下,顺序读取吞吐量提升约10%
实测数据显示:在512字节簇配置场景中,get_block相关开销从原先的约10.8%骤降至0.02%,不仅读取速度得到实质性改善,系统整体响应效率也同步增强。
目前该补丁集已正式提交至Linux内核邮件列表(LKML),面向社区开放审查与讨论。开发者可查阅详细代码变更及测试报告,参与后续合并流程。
源码地址:点击下载
