計劃為即將到來的 Linux 6.5 內核合併窗口發送的另一個功能是引入對使用設備映射器 (DM) 代碼的精簡配置存儲的配置原語的支持。
週末創建的分支是 linux-dm.git 的 dm-6.5-provision-support。現在它在一個標記為“6.5”的分支上,似乎已準備好發送給即將到來的 Linux 6.5 合併窗口,以防止 Linus Torvalds 或其他內核開發人員提出任何問題。
這些配置原語由 Google 的 Chrome 操作系統團隊開發。谷歌的 Sarthak Kukreti 之前在郵件上的早期 RFC 補丁中解釋了這一舉措列表:
“這個補丁系列是一個 RFC 的機制,通過堆棧精簡配置存儲設備/文件系統上的配置請求。
linux 內核提供了幾種機制來設置精簡配置塊存儲抽象( eg. dm-thin, loop devices over sparse files), 要么直接作為塊設備,要么作為文件系統的後備存儲。目前,缺少將數據寫入設備或文件系統,用戶無法預分配空間以供使用在這樣的存儲設置中。考慮以下用例:
1) suspend-to-disk 和從 dm-thin 設備恢復:為了確保底層 thinpool 元數據在掛起機制期間不被修改,dm-thin 設備需要被完全配置。
2) 如果文件系統在稀疏文件上使用循環設備,文件系統上的 fallocate() 將為文件分配塊,但底層稀疏文件將保持不變。
3)又如虛擬機使用稀疏文件/dm-thin作為存儲設備;默認情況下,VM 邊界內的分配不會影響主機。
4) 一些存儲標準支持在真實硬件設備上進行自動精簡配置的機制。例如:
一個。 NVMe 規範 1.0b 第 2.1.1 節鬆散地討論了自動精簡配置:“當識別命名空間數據結構的 NSFEAT 字段中的 THINP 位設置為‘1’時,控制器……應跟踪分配的塊數Namespace Utilization 字段”
b. SCSi 塊命令參考-4 部分參考“精簡配置邏輯單元”,
c。 UFS 3.0 規範第 13.3.3 節引用了“精簡配置”。在上述所有情況下,目前預分配空間的唯一方法是發出寫入(或使用 WRITE_ZEROES/WRITE_SAME)。但是,對於較大的預分配大小,這並不能很好地擴展。
此補丁集引入了原語以支持跨文件系統和塊設備的塊級配置(注意:術語“配置”用於防止術語“分配/預分配”過載)請求。這允許 fallocate() 和文件創建請求跨塊設備和文件系統的堆疊層保留空間。目前,補丁集涵蓋了設備映射器目標、循環設備和 ext4 的原型,但相同的機制可以擴展到其他文件系統/塊設備,也可以擴展用於 4 a-c 中的設備。”
引入 REQ_OP_PROVISION 請求的補丁簡單地將此配置總結為:
“引入塊請求 REQ_OP_PROVISION。此請求的目的是請求底層存儲為給定的塊範圍預分配磁盤空間。支持此功能的塊設備將在其請求隊列中導出規定限制。
此補丁還添加了在塊設備上以模式 0 調用 fallocate() 的功能,這將向指定範圍內的塊設備發送 REQ_OP_PROVISION,”
此塊供應原語工作已經進行了幾個月,並在 Chrome OS 和上游 Linux 內核上成功測試。圍繞 REQ_OP_PROVISION 的塊和 DM 更改以及對其的環回設備支持現在準備出現在 Linux 6.5 中。
如果 Linux 6.4 穩定版本沒有再推遲一周,Linux 6.5 合併窗口預計將於下週開始。Linux 6.5 穩定版本應在 8 月底左右首次亮相。