Bcachefs
| 開發者 | Kent Overstreet |
|---|---|
| 發布 | 2015年8月21日 |
| 結構 | |
| 目錄內容 | 混合B+樹 |
| 檔案分配 | Extents |
| 壞塊 | 沒有記錄 |
| 功能 | |
| 日期記錄 | 修改時間(mtime)、屬性修改時間(ctime)、訪問時間(atime)和建立時間(crtime) |
| 屬性 | 擴充屬性 |
| 檔案系統權限 | POSIX (支援POSIX擴充屬性和存取控制列表) |
| 透明壓縮 | 支援 |
| 透明加密 | 支援 |
| 重複數據刪除 | 支援 |
| 寫入時複製 | 支援 |
| 作業系統支援 | Linux |
Bcachefs是一種用於Linux作業系統的寫時複製(COW)檔案系統。它由首席開發者Kent Overstree在2015年發布。2022年12月,Bcachefs的開發者宣布Bcachefs達到穩定狀態。[1]2023年10月,Bcachefs在Linux 6.7中合併到Linux內核主線。[2][3][4][5]但於2025年11月,Linux內核6.18版移除Bcachefs[6]。Bcachefs的開發者希望實現與ZFS和Btrfs類似的現代特性以及ext4和XFS的速度和效能。
特徵
[編輯]Bcachefs具有快取支援,[7] 支援使用ChaCha20和Poly1305演算法進行全檔案系統加密,[8]支援LZ4、gzip[9]和Zstandard[10]演算法的透明壓縮[7],支援檔案系統子卷快照,[7]CRC-32C和64位元校驗和。[11]它可以跨越塊裝置,整合了RAID功能。[8]
Bcachefs早期版本提供所有Bcache的功能,即實現了Linux的塊層快取系統,Bcachefs與Bcache共用約80%的代碼。[2]但截至2021年12月,塊層快取功能已從Bcachefs刪除。[10]
在數據結構層面,Bcachefs使用像許多其他現代檔案系統一樣的B樹,但節點大小很大,預設為256 KiB。這些節點內部是紀錄檔結構的,形成混合數據結構,減少了更新時重寫節點的需求。[12]快照不是通過克隆COW樹來實現的,而是通過向檔案系統對象添加版本號來實現的。[13]COW特性和桶分配器使RAID實現既沒有寫洞也沒有IO碎片化。[10]
歷史
[編輯]Bcachefs 的主要開發者是 Kent Overstreet,他也是 Bcache 的開發者。Overstreet 將 Bcache 描述為 Bcachefs 的構想「原型」[14],並計劃用 Bcachefs 取代 Bcache。[2]Overstreet 表示,Bcachefs 的開發始於 Bcache 開發者意識到其代碼庫「正在演變成一個完整的通用 POSIX 檔案系統」,且其中「蘊含着一條通向簡潔優雅設計的可能方向」。在 Bcache 於 2013 年併入 Linux 內核主線後,Overstreet 離開 Google,開始全職投入 Bcachefs 開發。[11]
經過數年無資金支援的開發,Overstreet 於 2015 年正式發布了 Bcachefs,當時他稱代碼「基本上已經實現了所有功能」,並邀請測試人員和貢獻者參與。他希望將其打造成一個既像ZFS和Btrfs一樣具有豐富現代特性[15] ,又像ext4和XFS一樣效能優秀的進階檔案系統。 [11]截至 2017 年,Overstreet 通過 Patreon 獲得 Bcachefs 開發所需的資金支援。 [8]
2018 年中,磁碟格式已經定形。 [2]Bcachefs的開發者已經提交了修補程式進行稽核,以便將Bcachefs納入Linux內核主線,但尚未被接受。 [7]
至 2019 年中,Bcachefs 的預期功能已經全部完成,相關的修補程式也已提交至LKML等待同行評審。 [3] [4] 2023 年 10 月,Bcachefs 被合併到 Linux 6.7 內核中[16] ,該版本於 2024 年 1 月正式發布。 [17]
2025年8月 林納斯·托瓦茲 將Bcachefs狀態更改為『外部維護』[18],這是Linux內核首次使用這個狀態。
參考文獻
[編輯]- ^ bcachefs. bcachefs.org. [2023-08-18]. (原始內容存檔於2023-11-05).
- ^ 2.0 2.1 2.2 2.3 Edge 2018.
- ^ 3.0 3.1 LKML 2021.
- ^ 4.0 4.1 LKML 2022.
- ^ kernel/git/torvalds/linux.git - Linux kernel source tree. git.kernel.org. [2023-11-01]. (原始內容存檔於2023-11-08).
- ^ Linus Torvalds Removes The Bcachefs Code From The Linux Kernel. www.phoronix.com. [2025-09-30] (英語).
- ^ 7.0 7.1 7.2 7.3 Larabel 2018.
- ^ 8.0 8.1 8.2 Baader 2017.
- ^ Options — bcachefs documentation. [2023-08-18]. (原始內容存檔於2023-06-20).
- ^ 10.0 10.1 10.2 Overstreet, Kent. bcachefs: Principles of Operation (PDF). 18 Dec 2021 [10 May 2023]. (原始內容存檔 (PDF)於2023-08-26).
- ^ 11.0 11.1 11.2 Larabel 2015.
- ^ Architecture. bcachefs.org. [2023-08-18]. (原始內容存檔於2023-10-31).
- ^ Snapshots. bcachefs.org. [2023-08-18]. (原始內容存檔於2023-11-06).
- ^ FAQ. bcachefs.org. [2023-11-02]. (原始內容存檔於2023-10-31).
- ^ Jackson 2015.
- ^ Bcachefs Merged Into The Linux 6.7 Kernel. www.phoronix.com. [2023-10-31] (英語).
- ^ Larabel, Michael. Linux 6.7 Released With Bcachefs, Intel Meteor Lake In Good Shape & Nouveau GSP Support. www.phoronix.com. 2024-01-07 [2024-01-07] (英語).
- ^ Linus Torvalds. MAINTAINERS: mark bcachefs externally maintained.
外部連結
[編輯]