Bcachefs
![本页使用了标题或全文手工转换](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
此条目翻译品质不佳。 (2023年8月18日) |
开发者 | 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]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的主要开发者是Linux块缓存模块Bcache的主要作者Kent Overstreet,Bcache是Bcachefs的“原型”。[13]Overstreet希望Bcachefs能够取代Bcache。[2]Bcache于2013年合并到Linux内核主线,不久后,Overstreet离开了Google,全职从事Bcachefs的开发。[10]
经过几年的无资金支持的开发,Overstreet于2015年发布了Bcachefs,声称“基本上已经实现了所有功能”,并邀请测试人员和贡献者参与。他希望Bcachefs像ZFS或Btrfs一样具有现代特性[14],同时也拥有ext4和XFS这样的传统文件系统的速度和性能。[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]
参考文献
[编辑]- ^ 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.
- ^ 5.0 5.1 kernel/git/torvalds/linux.git - Linux kernel source tree. git.kernel.org. [2023-11-01]. (原始内容存档于2023-11-08).
- ^ 6.0 6.1 6.2 6.3 Larabel 2018.
- ^ 7.0 7.1 7.2 Baader 2017.
- ^ Options — bcachefs documentation. [2023-08-18]. (原始内容存档于2023-06-20).
- ^ 9.0 9.1 9.2 Overstreet, Kent. bcachefs: Principles of Operation (PDF). 18 Dec 2021 [10 May 2023]. (原始内容存档 (PDF)于2023-08-26).
- ^ 10.0 10.1 10.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.
- ^ 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) (英语).
- ^ Bcachefs Merged Into Linux-Next. www.phoronix.com. [2023-09-12]. (原始内容存档于2023-10-31) (英语).
外部链接
[编辑]
|