Bcachefs
Bcachefs是一种用于Linux操作系统的写时复制(COW)文件系统。它由首席开发者Kent Overstree在2015年发布。2022年12月,Bcachefs的开发者宣布Bcachefs达到稳定状态。[1]2023年10月,Bcachefs在Linux 6.7中合并到Linux内核主线。[2][3][4][5]Bcachefs的开发者希望实现与ZFS和Btrfs类似的现代特性以及ext4和XFS的速度和性能。 特征Bcachefs具有缓存支持,[6] 支持使用ChaCha20和Poly1305算法进行全文件系统加密,[7]支持LZ4、gzip[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,当时他称代码“基本上已经实现了所有功能”,并邀请测试人员和贡献者参与。他希望将其打造成一个既像ZFS和Btrfs一样具有丰富现代特性[14] ,又像ext4和XFS一样性能优秀的高级文件系统。 [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] 2025年8月 林纳斯·托瓦兹 將Bcachefs狀態更改為『外部維護』[17],這是Linux内核首次使用這個狀態。 参考文献
外部链接
|