写点什么

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

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

关注

评论

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

【换模型更简单】如何用 Serverless 一键部署 Stable Diffusion?

Serverless Devs

云计算 Serverless AIGC

软件测试/测试开发丨Python学习笔记之基本数据类型与操作

测试人

Python 软件测试 测试开发 数据类型

软件测试丨Python学习笔记之内置库科学计算、日期与时间处理

测试人

Python 软件测试 测试开发

大家都在用的6大类18款企业协同办公软件盘点

爱吃小舅的鱼

项目管理软件 研发管理软件 文档协同软件

腾讯云首发多款领先新品,TDSQL全新特性助力国产化替代提速

科技热闻

低代码开发——进最热的赛道,啃最硬的骨头

引迈信息

前端 低代码 快速开发 JNPF

Makefile常用命令详解

小万哥

c++ 程序员 面试 后端 makefile

融云跨平台 SDK 自动生成技术的探索和实践

融云 RongCloud

sdk 融云 办公效率 通讯 图片资源

如何用一行代码实现监测 OpenAI,大幅提升使用体验

Yestodorrow

可观测性 用户体验 应用性能 ChatGPT

腾讯安全携手行业伙伴,详解攻击面管理(ASM)技术的“拓客”潜力

Geek_2d6073

在研制带处理器的电子产品时,如何提高抗干扰能力和电磁兼容性?

华秋PCB

电磁 电路 处理器 控制器 抗干扰

火山引擎DataTester分享:A/B实验中常见的8个错误

字节跳动数据平台

iTubeGo YouTube Downloader 快速下载视频~

真大的脸盆

Mac 视频下载 网页视频下载 Mac 软件 下载视频

城市开发者平台:程序员成长和创新的“家园”

华为云开发者联盟

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

DevOps 的道术法器,探寻 DevOps “立体化”实践之旅

CODING DevOps

DevOps 软件工程 CODING DevOps

SRE方法论之拥抱风险

不思jo

#运维

Vue3迎来升级,全面助力企业数字化转型

引迈信息

车载手势识别技术:未来交通的革命性解决方案

来自四九城儿

一文看懂数据云平台的“可观测性”技术实践

科技热闻

Web3和低代码开发:下一代Web应用开发的合作与创新

加入高科技仿生人

前端 Web 低代码

ChatGPT:DevSecOps 落地实践的最后一公里

极狐GitLab

DevOps 云原生 Code Review DevSecOps ChatGPT

架构实战-毕业设计

程序员小张

「架构实战营」

AE插件 真实地图路径绘制GEOlayers 3 Mac v1.5.7

真大的脸盆

Mac Mac 软件 AE插件 地图路径插件

教你使用Feign替换RestTemplate

做梦都在改BUG

火山引擎DataLeap:3步打造“指标管理”体系,幸福里数据中心是这么做的

字节跳动数据平台

大数据 字节跳动 数据管理 指标管理 数据研发

行业分析| 快对讲-融合会议的应用

anyRTC开发者

音视频 视频会议 快对讲 融合会议 电话会议

量化交易系统开发——现货策略

薇電13242772558

量化策略

实践「容器镜像扫描」,Get 云原生应用的正确打开方式

极狐GitLab

Docker DevOps 云原生 DevSecOps 容器镜像

SaaS 产品如何选择设计协作工具?

CODING DevOps

敏捷 设计 SaaS CoDesign 团队协作工具

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