2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

社交巨人 Facebook 使用 Linux 和 Btrfs 的姿势

  • 2017-02-20
  • 本文字数:2564 字

    阅读完需:约 8 分钟

Reddit 上有人表示把 42TB 的普通存储(没有组 RAID 或者其他)全部采用 Btrfs 技术,通过把 ext4 文件系统迁移到 Btrfs 至少节省了 5TB 的存储空间。尽管已经开发了相当长时间,但是鲜有发行版把 Btrfs 当作默认的文件系统,目前 SUSE 企业版把 Btrfs 作为系统默认的文件系统。 Linux.com 日前采访了 Btrfs 的主要贡献者 Chris Mason,通过他的讲述透露了社交巨头 Facebook 使用 Linux 内核与 Btrfs 文件系统的大量细节。

Chris Mason 是开源文件系统项目 Btrfs 的主要贡献者,Mason 最初在 Oracle 从事 Btrfs 的开发,后来他加入社交巨人 Facebook 的 Linux 内核技术小组继续从事 Btrfs 文件系统的研发工作。当 Facebook 需要升级新内核的时候,Mason 会做兼容性测试与性能优化的工作。

本文主要介绍了 Facebook 是怎么使用 Linux 和 Btrfs 的。

Linux.com:Btrfs 已经开发了很长时间,现在是时候推出了吗?我知道有些 Linux 发行版已经把它作为默认的文件系统,有的没有。

Chris Mason:众多发行版中 SUSE 确实在企业服务器版使用 Btrfs 作为默认文件系统,因为 SUSE 花了大量的人力和物力在做 Btrfs 的技术支持,我也很感激;Red Hat 并没有这么做。一个发行版是否采用 Btrfs 是人们特别关心的特性,而且大家希望能在这个特性上构建新的东西。

Linux.com:Btrfs 最有价值的地方是什么?如果我没记错的话,Facebook 也在使用 Btrfs。

Chris Mason:在 Facebook 内部,我们有针对性地使用 Btrfs 的一些特性来提高我们手头工作的性能。我们比较关注在系统任务管理、快照之类的事情上。

Linux.com:我们都知道 Facebook 是 Linux 的重度用户。在 Facebook 庞大的基础设施里,哪些地方用到了 Linux?

Chris Mason:简单地说,Facebook 所有的基础设施都使用了 Linux。围绕分布式操作系统我们利用了 Btrfs 的很多特性,比如分布式任务管理、利用快照功能快速更新以及哈希校验功能,等等。

我们在相当数量的机器上运行着 Gluster——既支持 XFS 也支持 Btrfs,我们的目标就是做好存储这件事。在 Gluster 上喜欢用 Btrfs 的其中一个原因是,数据循环冗余校验(cyclic redundancy checks)和元数据循环冗余校验使我们能够检测硬件本身存在的问题,例如静默数据损坏。事实上,通过使用 Btrfs 我们发现了一些较为严重的硬件 bug,这对 Btrfs 来说也是一个利好。

Linux.com:刚才我们聊了 Facebook 使用 Linux 的情况,我比较好奇您怎么看待和使用原生内核,毕竟大家都是根据实际生产环境的需求来 fork 一个内核的分支,鲜有人使用原生版本?

Chris Mason:从 Linux 的角度来看,我们的主要目标是尽可能和原生内核保持一致——我们的目标是至少每年升级一次内核,我们还试图进一步缩短这个更新周期。我们有一个上游优先策略,在使用一个主线更新之前我们要先了解它。如果我们想添加一个特性到 Linux 内核中,我们首先会把它合并到内核的主线更新中。

Linux.com:那为什么还需要 fork 一个自己的版本?

Chris Mason:因为在主线内核上我们无法做自己想做的事——我们不得不 fork 一个自己的版本,以便微调、修改和允许在我们特有使用情况下打补丁到这个内核里。我们的目标是,在人力可控的范围内将 fork 版做到最小。在我们把内核从 4.0 升级到 4.6 的过程中(我们现在还没完成),当我们只用一个补丁就能够获得一个相当可观的生产工作负载性能提升时,我打心里为此感到高兴。我们打过补丁的 4.0 版本的内核拥有和未修改的普通 4.6 版本的内核相同的性能。这也是我们团队的长期目标:紧随主线内核的步伐,以便我们能从一个内核版本快速过渡到另一个版本。

Linux.com:我见过太多跑在旧内核上的 Linux 机器,然而您的目标却是尽可能使用新版本的内核。这样做有什么好处?

Chris Mason:对一个工程师团队来说,最大的好处就是利于我们招聘从事上游内核开发的人才。开发者想要从事革命性的新技术的研发工作,他们想做上游内核的开发工作、参加相关的技术会议、成为上游技术社区的一员。我们也希望能够为上游内核的开发贡献力量,并把这些成果应用到 Facebook 中去。这样我们能比较容易找到并聘用上游内核的开发者,同时也是我们降低工作负载的最佳途径。

Linux.com:在服务器领域,我常听系统管理员说“一旦安装好并运行起来,就不要再碰它了”,这与我们在现代 IT 基础设施中看到的刚好相反——现代 IT 基础设施的宝典是为了安全要变动的更快。

Chris Mason:我认为,Facebook 横向扩展的能力使我们进行测试变得更为容易。这并不是说测试工作本身变得容易了,而是我们把测试单元部署在大量机器上的过程变得更容易了。我们有能力把测试工作放在一个被我们称之为“影子层”的地方进行——我们可以在一个非生产环境重放生产网络的流量,这样我们能够在一个非常安全的地方检测系统的稳定性和性能。我们可以像做实验那样一边加大流量一边说:“好了,我先给它(测试环境)5%的生产网络流量,然后一路增加到 100%,看看会有什么发现吧。”像做 A/B 测试那样,我就能得到两个内核在整个实验过程中对比鲜明的数据。

我们有工具能验证内核并帮助测试上游内核。这样比较容易发现上游内核新的有意思的 bug,而非只是找到已经被上游内核修复过的 bug。

Linux.com:您比较担心什么问题?

Chris Mason:就运行 Linux 内核或者文件系统而言,我们还没遇到什么问题;况且有这么多的社区在支持 Linux,我也没有必要担心什么。

Linux.com:您参与 Linux 开发也有很长时间了,Linux 也刚刚过完 25 岁的生日。您认为在过去的 25 年里,Linux 实现了什么目标?

Chris Mason:除了显而易见的技术贡献,我最感激 Linus 本人的地方是他一手创建了内核开发者社区,人们在这里非常积极地投入一个又一个新版本的内核开发中。Linux 项目因此没有像别的开源项目那样变得碎片化虽然不全是 Linus 本人的功劳,但我最感激 Linus 的地方是他创立了一种机制,使得 fork 一个内核版本或者做一些不同的事情远不如老老实实跟着主线内核走。

我认为这是一个非常重要的贡献——对很多人来说这是最容易忽视的地方,Linux 内核社区让大家紧密团结在一起——就像星星和星星之间,不是互相排挤,而是互相照耀。


感谢刘志勇对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-02-20 16:333548
用户头像

发布了 64 篇内容, 共 27.4 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

从 await-to-js 到 try-run-js

jump-jump

JavaScript 异步 优化 Async 重试

智商狂飙,问了ChatGPT几个数据库问题后,我的眼镜掉了

NineData

人工智能 MySQL 数据库 ChatGPT NineData

软件测试 | 流程管理平台

测吧(北京)科技有限公司

测试

五大要点,让你掌握代码整洁之道!

飞算JavaAI开发助手

大规模敏捷测试怎么做?--基础篇

QE_LAB

敏捷测试

全景剖析阿里云容器网络数据链路(四):Terway IPVLAN+EBPF

阿里巴巴云原生

阿里云 容器 云原生

软件测试 | 软件测试体系

测吧(北京)科技有限公司

测试

代码质量管理平台 SonarLint 在监控宝中的实践总结

云智慧AIOps社区

监控 监控宝 监控告警 云智慧 监控体系

分布式缓存服务DCS:企业版性能更强,稳定性更高

华为云开发者联盟

云计算 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

软件测试 | 项目管理与跨部门沟通协作

测吧(北京)科技有限公司

测试

如何通过Java应用程序将OpenDocument 演示文稿(.odp)转换为PDF

在下毛毛雨

Java PDF 转换格式 ODP文档

软件测试 | 什么是测试用例

测吧(北京)科技有限公司

测试

ZooKeeper 避坑实践: Zxid溢出导致选主

阿里巴巴云原生

zookeeper 阿里云 云原生

陕西旅游集团旗下景区春节期间累计接待超200万人次,这背后也有火山引擎VeDI的身影

字节跳动数据平台

大数据 数据中台 字节跳动 数据产品

直播预告 | 数据库自治平台 KAP 监控告警架构及实例演示

KaiwuDB

监控告警 KaiwuDB 数据库自治

明道云致几位重度抄袭者的公开信

明道云

大数据开发机构如何选择比较好

小谷哥

高级java体系课第1期第二周作业

刘博

关于小游戏引擎你还了解哪些?

没有用户名丶

小程序游戏

4道数学题,求出极狐GitLab CI 流水线之最优解|第1题:有向无环图流水线

极狐GitLab

ci DevOps cicd pipeline 极狐GitLab

案例 | 在肯尼亚,青年们正在说着“Sheng”语...

澳鹏Appen

人工智能 nlp 数据标注 训练数据 小语种

软件测试 | 常用测试管理平台

测吧(北京)科技有限公司

测试

区块链项目开发技术团队源码交付

开发微hkkf5566

java培训学习怎么选择

小谷哥

“采访”ChatGPT看看它对我们GreatSQL社区有什么看法

GreatSQL

MySQL greatsql greatsql社区

Flink SQL 在米哈游的平台建设和应用实践

Apache Flink

大数据 flink 实时计算

设计模式-策略模式详解

C++后台开发

设计模式 策略模式 后端开发 Linux服务器开发 C++开发

渲染行业需要什么,云渲染的优势是什么?

Renderbus瑞云渲染农场

云渲染 云渲染农场 云渲染平台

软件测试 | 测试流程体系

测吧(北京)科技有限公司

测试

2022Q4手机银行新版本聚焦提升客群专属、财富开放平台、智能化能力,活跃用户规模6.91亿人

易观分析

金融 银行 经济

社交巨人Facebook使用Linux和Btrfs的姿势_Linux_魏星_InfoQ精选文章