近日,linux 内核文件系统开发团队提交了一批新补丁,旨在优化 linux 对微软 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),面向社区开放审查与讨论。开发者可查阅详细代码变更及测试报告,参与后续合入流程。
源码地址:点击下载











