Bcachefs

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
Bcachefs
開發者Kent Overstreet
發布2015年8月21日,​8年前​(2015-08-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]Bcachefs的開發者希望實現與ZFSBtrfs類似的現代特性以及ext4XFS的速度和性能。

特徵[編輯]

Bcachefs具有緩存支持,[6] 支持使用ChaCha20Poly1305算法進行全文件系統加密[7]支持LZ4gzip[8]Zstandard[9]算法的透明壓縮[6],支持文件系統子卷快照,[6]CRC-32C和64位校驗和[10]它可以跨越塊設備,整合了RAID功能。[7]

Bcachefs早期版本提供所有Bcache的功能,即實現了Linux的塊層緩存系統,Bcachefs與Bcache共享約80%的代碼。[2]但截至2021年12月,塊層緩存功能已從Bcachefs刪除。[9]

在數據結構層面,Bcachefs使用像許多其他現代文件系統一樣的B樹,但節點大小很大,默認為256 KiB。這些節點內部是日誌結構的,形成混合數據結構,減少了更新時重寫節點的需求。[11]快照不是通過克隆COW樹來實現的,而是通過向文件系統對象添加版本號來實現的。[12]COW特性和桶分配器使RAID實現既沒有寫洞也沒有IO碎片化。[9]

歷史[編輯]

Bcachefs的主要開發者是Linux塊緩存模塊Bcache的主要作者Kent Overstreet,Bcache是Bcachefs的「原型」。[13]Overstreet希望Bcachefs能夠取代Bcache。[2]Bcache於2013年合併到Linux內核主線,不久後,Overstreet離開了Google,全職從事Bcachefs的開發。[10]

經過幾年的無資金支持的開發,Overstreet於2015年發布了Bcachefs,聲稱「基本上已經實現了所有功能」,並邀請測試人員和貢獻者參與。他希望Bcachefs像ZFSBtrfs一樣具有現代特性[14],同時也擁有ext4XFS這樣的傳統文件系統的速度和性能。[10]截至2017年,Overstreet通過Patreon獲取對Bcachefs開發的財政支持。[7]

2018年,磁盤格式已經定形。[2]Bcachefs的開發者已經提交了補丁進行審核,以便將Bcachefs納入Linux內核主線,但尚未被接受。[6]

2019年,Bcachefs所需的特性已經實現,並且相關補丁已提交到Linux內核郵件列表進行同行評審。截至2023年2月,Bcachefs仍未被合併到Linux內核主線。[3][4]2023年5月,Bcachefs再次提交給LKML,但未能合併到Linux 6.5內核。[15]

2023年9月,Bcachefs被合併到實驗性的Linux內核開發樹linux-next中。[16]2023年10月,Bcachefs被正式合併到Linux 6.7中。[5]

參考文獻[編輯]

  1. ^ bcachefs. bcachefs.org. [2023-08-18]. (原始內容存檔於2023-11-05). 
  2. ^ 2.0 2.1 2.2 2.3 Edge 2018.
  3. ^ 3.0 3.1 LKML 2021.
  4. ^ 4.0 4.1 LKML 2022.
  5. ^ 5.0 5.1 kernel/git/torvalds/linux.git - Linux kernel source tree. git.kernel.org. [2023-11-01]. (原始內容存檔於2023-11-08). 
  6. ^ 6.0 6.1 6.2 6.3 Larabel 2018.
  7. ^ 7.0 7.1 7.2 Baader 2017.
  8. ^ Options — bcachefs documentation. [2023-08-18]. (原始內容存檔於2023-06-20). 
  9. ^ 9.0 9.1 9.2 Overstreet, Kent. bcachefs: Principles of Operation (PDF). 18 Dec 2021 [10 May 2023]. (原始內容存檔 (PDF)於2023-08-26). 
  10. ^ 10.0 10.1 10.2 Larabel 2015.
  11. ^ Architecture. bcachefs.org. [2023-08-18]. (原始內容存檔於2023-10-31). 
  12. ^ Snapshots. bcachefs.org. [2023-08-18]. (原始內容存檔於2023-11-06). 
  13. ^ FAQ. bcachefs.org. [2023-11-02]. (原始內容存檔於2023-10-31). 
  14. ^ Jackson 2015.
  15. ^ Larabel, Michael. Bcachefs Submitted For Review - Next-Gen CoW File-System Aims For Mainline. www.phoronix.com. 10 May 2023 [10 May 2023]. (原始內容存檔於2023-06-29) (英語). 
  16. ^ Bcachefs Merged Into Linux-Next. www.phoronix.com. [2023-09-12]. (原始內容存檔於2023-10-31) (英語). 

外部連結[編輯]