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的开发者希望实现与ZFS和Btrfs类似的现代特性以及ext4和XFS的速度和性能。

特征

Bcachefs具有缓存支持,[6] 支持使用ChaCha20和Poly1305算法进行全文件系统加密[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. sfn error: no target: CITEREFEdge2018 (help)
  3. ^ 3.0 3.1 LKML 2021. sfn error: no target: CITEREFLKML2021 (help)
  4. ^ 4.0 4.1 LKML 2022. sfn error: no target: CITEREFLKML2022 (help)
  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. sfn error: no target: CITEREFLarabel2018 (help)
  7. ^ 7.0 7.1 7.2 Baader 2017. sfn error: no target: CITEREFBaader2017 (help)
  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. sfn error: no target: CITEREFLarabel2015 (help)
  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. sfn error: no target: CITEREFJackson2015 (help)
  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) (英语). 

外部链接

  • 官方网站

磁盘
  • ADFS英语Advanced Disc Filing System
  • AdvFS
  • Amiga FFS英语Amiga Fast File System
  • Amiga OFS英语Amiga Old File System
  • APFS
  • AthFS英语AtheOS File System
  • Bcachefs
  • BFS
    • Be文件系统英语Be File System
    • 启动文件系统英语Boot File System
  • Btrfs
  • DFS英语Disc Filing System
  • EFS
  • Episode英语Episode filesystem
  • ext
  • FAT
  • Files-11英语Files-11
  • Fossil
  • HAMMER英语HAMMER
  • HFS
  • HFS+
  • HPFS
  • HTFS英语High Throughput File System
  • IBM通用并行文件系统英语IBM General Parallel File System
  • JFS
  • LFS英语Log-structured File System (BSD)
  • MFS
    • Macintosh文件系统英语Macintosh File System
    • Tivo媒体文件系统英语Tivo Media File System
  • MINIX
  • NetWare文件系统英语NetWare File System
  • Next3英语Next3
  • NILFS英语NILFS
    • NILFS2英语NILFS2
  • NSS英语Novell Storage Services
  • NTFS
  • OneFS英语OneFS distributed file system
  • PFS英语Professional File System
  • QFS英语QFS
  • QNX4FS英语QNX4FS
  • ReFS
  • ReiserFS
    • Reiser4英语Reiser4
  • Reliance英语Reliance (file system)
  • Reliance Nitro英语Reliance Nitro
  • RFS
  • SFS英语Smart File System
  • Soup英语Soup (Apple)
  • Tux3英语Tux3
  • UBIFS
  • UFS
  • VxFS英语Veritas File System
  • WAFL英语Write Anywhere File Layout
  • Xiafs英语Xiafs
  • XFS
  • Xsan英语Xsan
  • zFS英语zFS (z/OS file system)
  • ZFS
  • HSF英语High Sierra Format
  • ISO 9660
  • ISO 13490英语ISO 13490
  • UDF
  • CXFS英语CXFS
  • GFS2英语GFS2
  • Google檔案系統
  • OCFS2英语OCFS2
  • OrangeFS英语OrangeFS
  • PVFS英语Parallel Virtual File System
  • QFS英语Quantcast File System
  • Xsan英语Xsan
  • 更多...
NAS
特殊
  • Aufs
  • AXFS英语AXFS
  • 启动文件系统英语Boot File System
  • CDfs英语CDfs
  • 光盘文件系统英语Compact Disc File System
  • Cramfs
  • Davfs2英语Davfs2
  • EROFS
  • FTPFS
  • FUSE
  • GmailFS
  • Lnfs
  • LTFS英语Linear Tape File System
  • MVFS英语Rational MultiVersion File System
  • SquashFS
  • UMSDOS英语FAT filesystem and Linux
  • OverlayFS
  • UnionFS英语UnionFS
  • WBFS英语WBFS
  • configfs英语configfs
  • devfs英语Device file
  • debugfs英语debugfs
  • kernfs英语kernfs (BSD)
  • procfs
  • specfs
  • sysfs
  • tmpfs
  • WinFS
加密英语Filesystem-level encryption
类型
  • 集群
    • 全局英语Global file system
    • 网格英语Grid File System
    • 自我认证英语Self-certifying File System
  • 闪存
  • 日志
  • 日志结构英语Log-structured file system
  • 对象
  • 面向记录英语Record-oriented filesystem
  • 语义英语Semantic file system
  • 隐写英语Steganographic file system
  • 合成英语Synthetic file system
  • 版本英语Versioning file system
特性
访问控制英语Computer access control
接口