將 Bcachefs 提升到 Linux 內核

作為 Linux 內核一部分的 BCache SSD 塊設備緩存系統的作者 Kent Overstreet 在 LSFMM 2023 會議(Linux Storage, Filesystem, Memory Management)的演講中總結了推廣 Bcachefs 文件系統的工作成果& BPF Summit),深入探討了Linux內核的主要組成,並談到了該FS的進一步開發計劃。 10 月份,提出了一組實施 Bcachefs FS 的更新補丁,以供審查並包含在 Linux 內核的主要組成中。 FS Bcachefs 已經發展了大約 2020 年。 XNUMX 年底宣布準備在納入核心之前審查 Bcachefs 的實施情況,當前版本的補丁考慮了之前審查期間發現的意見和缺陷。

Bcachefs 的開發目標是在性能、可靠性和可擴展性方面達到 XFS 水平,同時提供 Btrfs 和 ZFS 固有的附加功能,例如在分區中包含多個設備、多層存儲佈局、複製(RAID 1/10)、緩存、透明數據壓縮(LZ4、gzip 和 ZSTD 模式)、狀態切片(快照)、通過校驗和進行完整性驗證、存儲 Reed-Solomon 糾錯碼的能力 (RAID 5/6)、信息加密存儲(ChaCha20 和 Poly1305)被使用)。 在性能方面,Bcachefs 領先於 Btrfs 等基於 Copy-on-Write 機制的文件系統,表現出接近 Ext4 和 XFS 的性能。

在 Bcachefs 開發的最新成就中,值得注意的是可寫入快照的實現的穩定性。 與 Btrfs 相比,Bcachefs 中的快照現在具有更好的可擴展性,並且沒有 Btrfs 固有的問題。 實踐中,在組織MySQL備份時測試了快照的工作情況。 Bcachefs 在提高可擴展性方面也做了很多工作——文件系統在 100 TB 存儲的測試中表現良好,預計不久的將來 Bcachefs 將在 1 PB 存儲中實現。 添加了新的 nocow 模式以禁用“寫時復制”(nocow) 機制。 在夏季,他們計劃使糾錯碼和 RAIDZ 的實現達到穩定狀態,並解決使用 fsck 實用程序恢復和檢查文件系統時內存消耗高的問題。

在未來的計劃中,提到了在 Bcachefs 開發中使用 Rust 語言的願望。 Bcachefs 的作者表示,他喜歡編碼,而不是調試代碼,現在當有更好的選擇時,用 C 編寫代碼是瘋狂的。 Rust 已經參與了 Bcachefs 的一些用戶空間實用程序的實現。 此外,正在醞釀用 Rust 逐步完全重寫 Bcachefs 的想法,因為使用這種語言可以顯著節省調試時間。

至於將 Bcachefs 納入 Linux 內核主流,由於變更規模較大(2500 個補丁和約 90 萬行代碼),採用過程可能會延遲,難以審核。 為了加快審查速度,一些開發人員建議將補丁系列分成更小的、邏輯上更獨立的部分。 在討論過程中,一些與會者還提請注意一名開發人員對該項目的開發情況,以及如果其開發人員出了問題,代碼可能無法維護的危險(兩名紅帽員工對該項目感興趣,但他們的工作仍在進行中)。有限的錯誤修復)。

Bcachefs 是使用 Bcache 塊設備開發中已經測試過的技術開發的,旨在將對慢速硬盤的訪問緩存到快速 SSD 驅動器上(自 3.10 版起包含在內核中)。 Bcachefs 使用寫時復制(COW)機制,其中更改不會導致數據覆蓋 - 新狀態被寫入新位置,之後當前狀態指示器發生變化。

Bcachefs的一個特點是支持驅動器的多層連接,其中存儲由多層組成——最快的驅動器(SSD)連接到底層,用於緩存經常使用的數據,頂層形成容量更大且更便宜的磁盤可存儲需求較少的數據。 寫回緩存可以在層之間使用。 可以動態地將驅動器添加到分區或從分區中分離,而無需中斷文件系統的使用(數據自動遷移)。

來源: opennet.ru

添加評論