将 Bcachefs 提升到 Linux 内核

作为 Linux 内核一部分的 BCache SSD 块设备缓存系统的作者 Kent Overstreet 在 LSFMM 2023 会议(Linux Storage, Filesystem, Memory Management)的演讲中总结了推广 Bcachefs 文件系统的工作成果& BPF Summit),深入探讨了Linux内核的主要组成,并谈到了该FS的进一步开发计划。 10 月份,提出了一组实施 Bcachefs FS 的更新补丁,以供审查并包含在 Linux 内核的主要组成中。 FS Bcachefs 已经发展了大约 2020 年。 XNUMX 年底宣布准备在纳入核心之前审查 Bcachefs 的实施情况,当前版本的补丁考虑了之前审查期间发现的意见和缺陷。

Bcachefs 的开发目标是在性能、可靠性和可扩展性方面达到 XFS 水平,同时提供 Btrfs 和 ZFS 固有的附加功能,例如在分区中包含多个设备、多层存储布局、复制(RAID 1/10)、缓存、透明数据压缩(LZ4、gzip 和 ZSTD 模式)、状态切片(快照)、通过校验和进行完整性验证、存储 Reed-Solomon 纠错码的能力 (RAID 5/6)、信息加密存储(ChaCha20 和 Poly1305)被使用)。 在性能方面,Bcachefs 领先于 Btrfs 等基于 Copy-on-Write 机制的文件系统,表现出接近 Ext4 和 XFS 的性能。

在 Bcachefs 开发的最新成就中,值得注意的是可写入快照的实现的稳定性。 与 Btrfs 相比,Bcachefs 中的快照现在具有更好的可扩展性,并且没有 Btrfs 固有的问题。 实践中,在组织MySQL备份时测试了快照的工作情况。 Bcachefs 在提高可扩展性方面也做了很多工作——文件系统在 100 TB 存储的测试中表现良好,预计不久的将来 Bcachefs 将在 1 PB 存储中实现。 添加了新的 nocow 模式以禁用“写时复制”(nocow) 机制。 在夏季,他们计划使纠错码和 RAIDZ 的实现达到稳定状态,并解决使用 fsck 实用程序恢复和检查文件系统时内存消耗高的问题。

在未来的计划中,提到了在 Bcachefs 开发中使用 Rust 语言的愿望。 Bcachefs 的作者表示,他喜欢编码,而不是调试代码,现在当有更好的选择时,用 C 编写代码是疯狂的。 Rust 已经参与了 Bcachefs 的一些用户空间实用程序的实现。 此外,正在酝酿用 Rust 逐步完全重写 Bcachefs 的想法,因为使用这种语言可以显着节省调试时间。

至于将 Bcachefs 纳入 Linux 内核主流,由于变更规模较大(2500 个补丁和约 90 万行代码),采用过程可能会延迟,难以审核。 为了加快审查速度,一些开发人员建议将补丁系列分成更小的、逻辑上独立的部分。 在讨论过程中,一些与会者还提请注意一名开发人员对该项目的开发情况,以及如果其开发人员出了问题,代码可能无法维护的危险(两名红帽员工对该项目感兴趣,但他们的工作仍在进行中)。有限的错误修复)。

Bcachefs 是使用 Bcache 块设备开发中已经测试过的技术开发的,旨在将对慢速硬盘的访问缓存到快速 SSD 驱动器上(自 3.10 版起包含在内核中)。 Bcachefs 使用写时复制(COW)机制,其中更改不会导致数据覆盖 - 新状态被写入新位置,之后当前状态指示器发生变化。

Bcachefs的一个特点是支持驱动器的多层连接,其中存储由多层组成——最快的驱动器(SSD)连接到底层,用于缓存经常使用的数据,顶层形成容量更大且更便宜的磁盘可存储需求较少的数据。 写回缓存可以在层之间使用。 可以动态地将驱动器添加到分区或从分区中分离,而无需中断文件系统的使用(数据自动迁移)。

来源: opennet.ru

添加评论