Bcachefs发布用于磁盘记账重写的修补程序

2024年 2月 25日 77.7k 0


肯特·奥弗斯特里特周六晚上发布了一组21个补丁,以彻底修改Bcachefs文件系统的磁盘记账代码。这一更改确实破坏了与现有磁盘记账磁盘格式的兼容性,因此在迁移到新版本时需要升级,新版本可能会在Linux v6.9上登陆。

OverStreet致力于Bcachefs磁盘记账重写已经有一段时间了,本周末发布了最初的补丁系列。他解释了这次重写的情况:

旧的磁盘记账方案速度很快,但有一些限制:

-缺乏可伸缩性:它基于由未完成日志缓冲区额外分片的PercPU计数器,然后在日志写入之前,我们会将计数器汇总并将其添加到日志条目中。但这意味着所有计数器都会添加到每次日志写入中,这意味着它永远不能支持每个快照的计数器。

- 这是一个痛苦的扩展,这就是为什么,直到现在,我们没有适当的压缩会计,并获得压缩比需要一个完整的btree扫描

在新方案中:

- 每一组计数器都是bkey,即btree(BTREE_ID_accounting)中的键。这意味着它们不会被钉在日志中

-Key有结构,可扩展DISK_ACCOUNTING_KEY是一个带标签的联合,它只是在BPO上联合

-计数器是增量,直到刷新到底层的btree,这意味着计数器更新是正常的btree更新;btree写缓冲区使计数器更新更高效。

由于从btree读取计数器的开销很大--它需要一个写缓冲区刷新来获得最新的计数器--我们还在内存中维护了一组并行的记账,有点像旧的方案,但没有每个日志缓冲区的分片。内存中的会计在eytzinger树中由disk_accounting_key/bpos索引,计数器本身是u64。

这打破了文件系统的磁盘格式,因此在升级(或降级)此新版本时需要重新生成记帐。这应该通过内核fsck透明地实现,但目前Linux 6.7用户有一些已知的限制。我们希望有可能在Linuxv6.9中为Bcachefs准备好这个磁盘记账重写。

有关此新代码的更多详细信息,请访问补丁系列.

相关文章

塑造我成为 CTO 之路的“秘诀”
“人工智能教母”的公司估值达 10 亿美金
教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
上海新增 11 款已完成登记生成式 AI 服务

发布评论