NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

社交巨人 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:332907
用户头像

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

关注

评论

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

(28DW-S8-Day25) 用流程重新定义职位

mtfelix

28天写作

重来:更为简单有效的商业逻辑

张老蔫

28天写作

《MySQL》系列 - 小胖要的 MySQL 索引详解(附 20 张图解)

一个优秀的废人

Java MySQL 数据库 索引 B+树

产品经理训练营——大作业

产品经理训练营

第八周学习总结

月亮 😝

InfoQ 写作平台 2021年度100位优质创作者签约计划

InfoQ写作社区官方

签约计划 热门活动

大作业用例

产品经理训练营

OLAP技术选型思路总结,你绕不开的“不可能三角”

关二爷大数据笔记

大作业-测绘数据采集核验平台

Geek_971380

最高法两会报告聚焦区块链惩治抄袭,区块链在保护网络著作权方面如何作为?

CECBC

法律

图片社区类APP增加评论表情包功能

🙈🙈🙈

极客大学产品经理训练营

有感于最近的一些事件

ES_her0

28天写作 3月日更

领域驱动设计101 -领域、知识、组织结构及模型

luojiahu

领域驱动设计

第八周笔记

Ashley.

OSPF邻居状态详解

融云 IM 那些事儿

融云 RongCloud

越过山丘,遇见更美的风景

boshi

创业 七日更

融云 Web SDK 如何实现只有一个设备登入

融云 RongCloud

作业5-待完成

YING꯭YING

第八周作业

Ashley.

金融科技面试这些事儿

我是程序员小贱

3月日更

图片相似度计算及检索调研

程序员架构进阶

算法 设计实践 图片识别 28天写作 3月日更

校友图书共享PRD

思亭

中关村软件园与百度飞桨启动AI人才培养计划:AI发展,人才先行

百度大脑

人工智能 百度 人才培养

什么是 Git? - 探索分布式版本控制工具

码语者

git DevOps

第九周作业

MR.X

产品经理训练营--大作业

月亮 😝

集成融云 IM 问题总结

融云 RongCloud

Apache Pulsar在能源互联网领域的落地实践

Apache Pulsar

大数据 开源 Apache Pulsar 消息系统 工业物联网

大作业

Geek_72d5ab

第八周总结

产品训练营

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