徐九丨发自 思否编辑部php
Btrfs 文件系统已有十多年历史,但由于在性能和可靠性方面存在一直质疑,致使其未能普及。不过随着 ext 4 的更新发布,业内出现了“Btrfs 才是 Linux 的将来”的论调。缓存
FaceBook 是少数大规模采用 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 的下一代文件系统。spa
Chris Mason 是开源文件系统项目 Btrfs 的主要贡献者,最初在 Oracle 从事 Btrfs 的开发,后来加入 Facebook 的 Linux 内核技术小组继续从事 Btrfs 文件系统的研发工做。操作系统
几年前的采访中,他就曾提到:blog
在 Facebook 内部,有针对性地使用 Btrfs 的一些特性来提升手头工做的性能,比较关注在系统任务管理、快照之类的事情上。Facebook 全部的基础设施都使用了 Linux。围绕分布式操做系统利用了 Btrfs 的不少特性,好比分布式任务管理、利用快照功能快速更新以及哈希校验功能,等等。
近日,Btrfs 开发者 Josef Bacik 在北美开源峰会上再次深度分享了 Facebook 为何选择 Btrfs,又取得了哪些成果。ip
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...
多年来,彷佛 ext 已经成为 Linux 文件系统的代名词。可是在撰写这篇稿件搜集资料时发现,讨论 ext 的文章或者帖子里都会有 Btrfs 的身影出现。由 RedHat 赞助的独立 Linux 发行版 Fedora,在最新发布的版本 Fedora 33 中也将 Btrfs 设为了默认的文件系统。
虽然 ext4 只被你们定义为「过渡期」的产品,就连 ext4 的做者也曾表示过 Btrfs 将成为下一代 Linux 的标准文件系统。
但 Btrfs 在真正普及以前,仍然须要找到解决自身问题的好办法。