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

容器化评论1,541字数 2037阅读模式

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

文章末尾固定信息

继续阅读
 
admin
  • 本文由 admin 发表于 2017年2月21日
  • 除非特殊声明,本站文章许可协议为"署名-非商用-相同方式共享 4.0",转载请保留原链、作者等信息。
广告也精彩
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证