跳转到内容

Bcachefs

本页使用了标题或全文手工转换
维基百科,自由的百科全书
Bcachefs
开发者Kent Overstreet
发布2015年8月21日,​9年前​(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 的主要开发者是 Kent Overstreet,他也是 Bcache 的开发者。Overstreet 将 Bcache 描述为 Bcachefs 的构想“原型”[13],并计划用 Bcachefs 取代 Bcache。[2]Overstreet 表示,Bcachefs 的开发始于 Bcache 开发者意识到其代码库“正在演变成一个完整的通用 POSIX 文件系统”,且其中“蕴含着一条通向简洁优雅设计的可能方向”。在 Bcache 于 2013 年并入 Linux 内核主线后,Overstreet 离开 Google,开始全职投入 Bcachefs 开发。[10]

经过数年无资金支持的开发,Overstreet 于 2015 年正式发布了 Bcachefs,当时他称代码“基本上已经实现了所有功能”,并邀请测试人员和贡献者参与。他希望将其打造成一个既像ZFSBtrfs一样具有丰富现代特性[14] ,又像ext4XFS一样性能优秀的高级文件系统。 [10]截至 2017 年,Overstreet 通过 Patreon 获得 Bcachefs 开发所需的资金支持。 [7]

2018 年中,磁盘格式已经定形。 [2]Bcachefs的开发者已经提交了补丁进行审核,以便将Bcachefs纳入Linux内核主线,但尚未被接受。 [6]

至 2019 年中,Bcachefs 的预期功能已经全部完成,相关的补丁也已提交至LKML等待同行评审。 [3] [4] 2023 年 10 月,Bcachefs 被合并到 Linux 6.7 内核中[15] ,该版本于 2024 年 1 月正式发布。 [16]

参考文献

[编辑]
  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. ^ 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. ^ Bcachefs Merged Into The Linux 6.7 Kernel. www.phoronix.com. [2023-10-31] (英语). 
  16. ^ 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] (英语). 

外部链接

[编辑]