快手、孩子王、华为等专家分享大模型在电商运营、母婴消费、翻译等行业场景的实际应用 了解详情
写点什么

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

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

关注

评论

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

MASA MAUI Plugin (七)应用通知角标(小红点)Android+iOS

MASA技术团队

blazor MASA MAUI MASA Blazor

java编程培训怎么学习?

小谷哥

和鲸科技入选 2022 中国数据智能领域最具商业潜力的科技 Cool Vender丨甲子20 榜单

ModelWhale

数字化转型 数据智能 科技企业 榜单

信息安全等级测评师证书有效期是多久?谁能告诉一下?

行云管家

等保

uniapp 在微信小程序中图片宽度显示问题

ModStart

活动预约报名系统怎么做?快来借鉴「苍山徒步之家」的经验做法

天天预约

微信小程序 SaaS 数据统计 预约工具 活动报名

前端程序员培训学习后的就业前景怎么样

小谷哥

阿里妈妈内容风控模型预估引擎的探索和建设

阿里技术

风控模型

Python图像处理丨详解图像去雾处理方法

华为云开发者联盟

Python 人工智能 华为云 12 月 PK 榜

百家号奇妙未来季创作大赛落幕!AIGC开启内容创作新征程

科技热闻

BitSail“拍了拍”你,并给你一份快速入门指南

字节跳动数据平台

开源 数据引擎 12 月 PK 榜

非正式全面解析 NebulaGraph 中 Session 管理

NebulaGraph

图数据库 会话管理 session管理

龙蜥开发者说:众人拾柴火焰高!聊一聊我在社区的所思所想 | 第 14期

OpenAnolis小助手

开发者 开源社区 龙蜥开发者说 LoongArch 架构 红旗软件

大数据程序员培训机构怎么选

小谷哥

火山引擎DataTester:如何做A/B实验的假设检验

字节跳动数据平台

大数据 AB testing实战 12 月 PK 榜

前端程序员培训学习有哪些攻略

小谷哥

上云节省 35%计算资源,420 个运维人天:运满满实时计算实践和思考

Apache Flink

大数据 flink 实时计算

2022年京东读书年度之书,获评读者最喜爱互联网+的就是……

博文视点Broadview

掌握这5大功能,解锁鲲鹏开发新发现

华为云开发者联盟

开发 华为云 12 月 PK 榜

诚迈科技董事长王继平赴国创中心交流车用操作系统合作事宜

科技热闻

零基础3Dmax入门教程

Finovy Cloud

软件 3DMAX

使用 ClusterResourceSet 为 Cluster API 集群自动安装 CNI 插件

Se7en

数字化时代,校园生活还可以这样过

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

哪些java培训中心比较靠谱?

小谷哥

深度学习入门篇 | 常用的经典神经网络模型

九章云极DataCanvas

神经网络 深度学习

转转支付网关之注解式HTTP客户端

转转技术团队

后端 Java、 注解 http client

PHP 中类自动加载相关文件分析

ModStart

如何通过Java应用程序将Word转为Excel

在下毛毛雨

Java Excel word 文档 转换

智能低代码平台,驱动企业数字化转型

元年技术洞察

低代码 数字化转型

华为云助推武水集团项目成功入选住建部“智慧水务”典型案例!

华为云开发者联盟

云计算 后端 华为云 12 月 PK 榜

一家可靠的HDI板厂,需要具备哪些基本条件?

华秋PCB

生产 工艺 PCB PCB电路板

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