Btrfs 会是 Linux 的未来么?竟让 Facebook 省了三分之一的服务器

Facebook
徐九丨发自 思否编辑部

Btrfs 文件系统已有十多年历史,但因为在性能和可靠性方面存在一些质疑,导致其未能普及。不过随着 ext4 的更新发布,业内出现了“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 在真正普及之前,仍然需要找到解决自身问题的好办法。

clipboard.png

你可能感兴趣的:(linux,extjs,btrfs,facebook)