Bcachefs

Bcachefs是一种用于Linux操作系统的写时复制（COW）文件系统。它由首席开发者Kent Overstree在2015年发布，在Linux 6.7中合并到Linux内核主线。Bcachefs的开发者希望实现与ZFS和Btrfs类似的现代特性以及ext4和XFS的速度和性能。2022年12月，Bcachefs的开发者宣布Bcachefs达到稳定状态。

特征
Bcachefs具有缓存支持， 支持使用ChaCha20和Poly1305算法进行全文件系统加密，支持LZ4、gzip和Zstandard算法的透明压缩，支持文件系统子卷快照，CRC-32C和64位校验和。它可以跨越块设备，整合了RAID功能。

Bcachefs早期版本提供所有Bcache的功能，即实现了Linux的块层缓存系统，Bcachefs与Bcache共享约80%的代码。但截至2021年12月，块层缓存功能已从Bcachefs删除。

在数据结构层面，Bcachefs使用像许多其他现代文件系统一样的B树，但节点大小很大，默认为256 KiB。这些节点内部是日志结构的，形成混合数据结构，减少了更新时重写节点的需求。快照不是通过克隆COW树来实现的，而是通过向文件系统对象添加版本号来实现的。COW特性和桶分配器使RAID实现既没有写洞也没有IO碎片化。

历史
Bcachefs的主要开发者是Kent Overstreet，他之前是Bcache的开发者，他将Bcache称为Bcachefs的“原型”。Overstreet希望Bcachefs能够取代Bcache。Overstreet曾表示，当Bcache的开发人员意识到其代码库“已经演变成一个完整的、通用的POSIX文件系统”时，Bcachefs的开发就开始了，并且“如果我们朝着那个方向发展，文件系统将会有一个非常清晰优雅的设计”。在Bcache于2013年合并到Linux内核主线之后的一段时间内，Overstreet离开了Google，全职从事Bcachefs的开发。

经过几年的无资金支持的开发，Overstreet于2015年发布了Bcachefs，当时他称代码“基本上已经实现了所有功能”，并呼吁测试人员和贡献者参与。他希望Bcachefs像ZFS或Btrfs一样具有现代特性，同时也拥有ext4和XFS这样的传统文件系统的速度和性能。截至2017年，Overstreet通过Patreon获取对Bcachefs开发的财政支持。

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

2019年，Bcachefs所需的特性已经实现，并且相关补丁已提交到Linux内核邮件列表进行同行评审。截至2023年2月，Bcachefs仍未被合并到Linux内核主线。2023年5月，Bcachefs再次提交给LKML，但未能合并到Linux 6.5内核。

2023年9月，Bcachefs被合并到实验性的Linux内核开发树linux-next中。2023年10月，Bcachefs被正式合并到Linux 6.7中。

参考文献

外部链接 
 

2015年软件
壓縮式檔案系統
Linux内核支持的文件系统