近日 Linux 內核文件系統開發者提交了一組新的補丁,用於改善 Linux 對微軟 exFAT 文件系統的讀取性能。該改進主要通過引入多簇映射(Multi-Cluster Mapping)機制,使得順序讀取性能得到明顯提升,尤其是在小簇尺寸的存儲設備上表現更佳。
exFAT 是微軟設計用於閃存介質(如 USB 閃存盤、SD 卡等)的文件系統格式,因無 4GB 單文件大小限制而被廣泛採用。Linux 對該文件系統的支持已內置在內核中,同時也有用户空間工具如 exfatprogs 進行配合使用。
不過在傳統實現中,讀取操作需要大量單獨的聚簇查找調用(get_block),當簇尺寸較小時這會成為性能瓶頸。由 Kylin OS 貢獻者 Chi Zhiling 發佈的補丁組,為 Linux 內核中的 exFAT 驅動添加了 多簇映射支持。這一機制允許在一次映射操作中獲取多個簇的位置信息,從而:
-
減少單次讀取過程中的函數調用次數
-
降低內核調用開銷
-
提升順序讀取性能約 10%(以 512 字節簇為例)
根據初步的測試數據,在 512 字節簇的場景中,順序讀取的性能提升明顯,同時 get_block 的調用開銷從約 10.8% 降至 0.02%,體現了性能與效率的雙重改善。
目前,這套補丁已發佈在 Linux 內核郵件列表上,有興趣的開發者可以查看源碼補丁細節或參與後續合併討論。