徐九丨发自 思否编辑部
Btrfs 文件系统已有十多年历史,但因为在性能和可靠性方面存在始终质疑,导致其未能遍及。不过随着 ext 4 的更新公布,业内呈现了“Btrfs 才是 Linux 的将来”的论调。
FaceBook 是多数大规模采纳 Btrfs 的科技公司,为什么会抉择 Btrfs?利用之后有没有获得预期的成果?
Btrfs 的背景
Btrfs(B-tree 文件系统,通常念成 Butter FS,Better FS 或 B-tree FS),一种反对写入时复制(COW)的文件系统,运行在 Linux 操作系统,采纳 GPL 受权。
Btrfs 是 Oracle 2007 年基于 GPL 协定开源的 Linux 文件系统,在 2014 年 8 月公布稳定版。指标是取代 Linux 目前的 ext3 文件系统,改善 ext3 的限度,特地是单个文件的大小,总文件系统大小或文件检查和退出 ext3 未反对的性能,像是可写快照(writable snapshots)、快照的快照(snapshots of snapshots)、内建磁盘阵列(RAID),以及子卷(subvolumes)。
对于大部分文件系统来说,在磁盘上创立好文件系统,而后再挂载到零碎中去就完事了。但对于 Btrfs 来说,除了在格式化和挂载的时候指定不同的参数外,还反对很多其余的性能。比方:治理多块硬盘、反对 LVM 和 RAID 等
Btrfs 也声称专一在“容错、修复及易于治理”,也是 Linux 下大家公认的将会代替 ext4 的下一代文件系统。
Btrfs 让 FaceBook 省了三分之一的服务器?
Chris Mason 是开源文件系统我的项目 Btrfs 的次要贡献者,最后在 Oracle 从事 Btrfs 的开发,起初退出 Facebook 的 Linux 内核技术小组持续从事 Btrfs 文件系统的研发工作。
几年前的采访中,他就曾提到:
在 Facebook 外部,有针对性地应用 Btrfs 的一些个性来进步手头工作的性能,比拟关注在零碎工作治理、快照之类的事件上。Facebook 所有的基础设施都应用了 Linux。围绕分布式操作系统利用了 Btrfs 的很多个性,比方分布式工作治理、利用快照性能疾速更新以及哈希校验性能,等等。
近日,Btrfs 开发者 Josef Bacik 在北美开源峰会上再次深度分享了 Facebook 为什么抉择 Btrfs,又获得了哪些成绩。
Bacik 提到,Facebook 有大量的机器,有大量的代码须要,包含网页、挪动利用、测试套件以及反对所有这些的底层基础设施。因而,他们心愿所有机器都能尽可能的保持一致,能在任何工夫向任何机器迁徙任何服务。所以 Facebook 的每一项服务都在容器内运行,所有这些容器化服务都应用 Btrfs 作为它们的 root 文件系统。
其次,Facebook 的工作流规定任何人不能间接向代码库递交代码,而是必须有一个残缺的测试程序会先进行测试。Bulid 零碎首先会克隆仓库,利用补丁,构建零碎,执行测试。实现之后,这些内容会被清理掉筹备下一个。
但清理阶段是绝对迟缓的,每次的验证均匀须要 2 或 3 分钟,有时候须要 10 分钟,在此期间机器无奈执行下一个测试。因而基础设施团队尝试应用 Btrfs,与其克隆一个库不如创立一个快照,测试实现之后就删除快照。删除快照比删除一个大的代码库要快得多。
这个操作让 FaceBook 节俭了大量的工夫,以及近三分之一的服务器数量(包含编译和测试所需的服务器)。
并且 FaceBook 改用 Btrfs 还有一个强有力的理由:它反对磁盘压缩。
这里的重点不仅仅是节俭存储空间,还包含缩短其使用寿命。Facebook 在闪存上花了很多钱,不过都是便宜、品质个别的闪存。该公司心愿这种存储可能尽可能地缩短寿命,这意味着要尽量减少执行的写入周期数(write cycle)。源代码往往具备良好的压缩比,因而压缩就能够大大减少写入的存储 block 的数量,减缓存储设备的寿命损耗。
Bacik 还示意,这项工作是由基础设施团队实现的,没有借助 Facebook 的 Btrfs 开发人员的任何帮忙,事实上,他们甚至都不晓得有这件事。但他对最初获得的成果也甚感诧异。
Btrfs 官网文档:https://btrfs.wiki.kernel.org…
Btrfs 离 Linux 的将来有多远
多年来,仿佛 ext 曾经成为 Linux 文件系统的代名词。然而在撰写这篇稿件收集材料时发现,探讨 ext 的文章或者帖子里都会有 Btrfs 的身影呈现。由 RedHat 资助的独立 Linux 发行版 Fedora,在最新公布的版本 Fedora 33 中也将 Btrfs 设为了默认的文件系统。
尽管 ext4 只被大家定义为「过渡期」的产品,就连 ext4 的作者也曾示意过 Btrfs 将成为下一代 Linux 的规范文件系统。
但 Btrfs 在真正遍及之前,依然须要找到解决本身问题的好方法。