Btrfs文件系统试验性部署录
2014-04-02 13:59:14 阿炯

本站赞助商链接,请多关照。 在雇用了Btrfs文件系统主要开发者Chris Mason等人,以及Linux内核块设备层维护者之后,Facebook开始试验性的部署Btrfs。 Btrfs文件系统还没有发布正式版本,相比EXT4或其它更成熟的文件系统,它在技术方面的优势包括支持子卷、快照、文件系统内置压缩和内置RAID支 持等。目前还没有多少人在生产环境中部署Btrfs,但发行版openSUSE 13.2已决定默认使用Btrfs。Btrfs预计将会在未来几年取代EXT4成为大多数发行版默认使用的文件系统, 主流发行版Ubuntu、Debian和Fedora还没有默认部署Btrfs的计划。

Btrfs 是一种支持写入时复制(COW)的文件系统,被广泛运用于各种 Linux 操作系统之中,目标是取代 ext3 文件系统,改善 ext3 的限制。

Fedora 33 桌面版本默认使用 Btrfs 文件系统

2020年07月17日,Fedora 工程和指导委员会(FESCo)正式批准了允许 Fedora 33 桌面版本默认使用 Btrfs 文件系统,而不是现有的默认 EXT4 或其他替代方案。

要注意的是,此项变更只适用于 Fedora 33 桌面版本,比如 Fedora Workstation。事实上,建议 Fedora 默认使用 Btrfs 文件系统的提案十年前就已提出,不过直到将于今年秋季发布的 Fedora 33 才得以实现。

这项变更要求 Fedora 桌面版本使用 Btrfs 并以“透明的方式”体验现代文件系统的功能。官方则表示希望增加新的功能,同时减少处理磁盘空间耗尽等情况所需的专业知识。Btrfs 通过设计理念很好地适应了这个角色,这也是促使他们选择 Btrfs 作为默认方案的原因之一。

Btrfs 提供了 CoW 快照、透明文件系统压缩( transparent file-system compression)、SSD 存储优化、原生 RAID 功能以及其他各种 EXT4 没有提供的现代功能。其他一些已经表现出来的对 Fedora 的 “好处”包括更好的低磁盘空间处理、Btrfs 的广泛校验、通过 cgroups2 进行适当的 I/O 隔离、在线伸缩功能,以及更简单的复杂存储阵列设置。

Fedora 此举让它与 openSUSE/SUSE 一起成为少数几个默认使用 Btrfs 的 Linux 发行版之一。推动这一变化的是部分 Fedora 开发者以及来自 Facebook 和其他 Btrfs 利益相关的工程师。

Fedora 开发者仍在评估可能的透明文件系统压缩和其他功能,这些功能或将在 Fedora 33 中启用。现在 FESCo 已经正式批准,但在发布之前仍需观察是否会出现任何问题,否则有可能会恢复使用 EXT4。

Btrfs 性能再优化,最高提升 10 倍

2022年,SUSE 的开发者 David Sterba 为 Linux 6.0 内核更新了 Btrfs 文件系统,当时将直接 I/O 读取限制增加到 256 个扇区的更改使工作负载的吞吐量提高了 3 倍。

2023年2月,David Sterba 再向 Linux 6.3 内核提交了一大批 Btrfs 文件系统的更新,这批有关 Btrfs 的 PR 除了带来新的功能,还包含了大幅的性能优化 —— 最高可以提升 10 倍。此次更新中的核心变化是重新设计了处理校验和(checksums)的方式,改变了在 I/O 路径中进行校验和的位置,校验和与读取修复在较低层进行验证,Btrfs 还继续清理代码,并围绕其原生 RAID5 和 RAID6 处理进行重构。

Linux 6.3 的 Btrfs 引入了块组分配类的启发式算法(heuristics),可以按大小来打包文件,从而避免块组的碎片化。至于性能方面,则是带来了以下这些变化:
send:缓存目录 utimes 并且仅在必要时发出命令
    速度提高 10 倍
    生成的最终流较小(没有发出多余的 utimes 命令)
    兼容性不受影响
fiemap:跳过共享 leaves 的 backref 检查
    在带有所有 leaves 共享的示例文件系统上加速 3 倍
微优化的 b-tree 键查找,加速元数据操作(示例基准:fs_mark +10% 的文件 / 秒)

此链接可以查看此次 PR 的完整内容。