当前位置: 首页 > Linux

Btrfs是Linux的未来吗?它居然为Facebook节省了三分之一的服务器

时间:2023-04-06 06:55:17 Linux

徐玖丨来自思考编辑部Btrfs文件系统已经有十多年的历史了,但因为对其性能和可靠性的一些质疑,一直没有得到普及。然而,随着ext4更新的发布,业界出现了“Btrfs是Linux的未来”的说法。FaceBook是为数不多的大规模采用Btrfs的科技公司之一。他们为什么选择Btrfs?应用后是否达到预期效果?Btrfs背景介绍Btrfs(B-treefilesystem,通常读作ButterFS、BetterFS或B-treeFS),一种支持写时复制(COW)的文件系统,运行在Linux操作系统上,并获得许可由GPL。Btrfs是Oracle于2007年基于GPL协议开源的Linux文件系统,并于2014年8月发布了稳定版,目标是取代目前Linux的ext3文件系统,改善ext3的局限性,尤其是文件大小单个文件、总文件系统大小或文件检查和添加ext3不支持的功能,如可写快照(writablesnapshots)、快照快照(snapshotsofsnapshots)、内置磁盘阵列(RAID)和子卷(subvolumes)).对于大多数文件系统来说,文件系统是在磁盘上创建的,然后挂载到系统上来完成。但是对于Btrfs来说,除了在格式化挂载时指定不同的参数外,还支持很多其他的功能。例如:管理多个硬盘,支持LVM和RAID等。Btrfs还号称主打“容错、修复、易管理”,也被公认为Linux下将取代ext4的下一代文件系统。Btrfs拯救了Facebook三分之一的服务器?ChrisMason是开源文件系统项目Btrfs的主要贡献者,最初在Oracle从事Btrfs的开发,后来加入Facebook的Linux内核技术团队继续致力于Btrfs文件系统的开发。他在几年前的一次采访中提到,在Facebook内部,有针对性地使用Btrfs的一些特性来提高手头工作的性能,更侧重于系统任务管理和快照等事情。Facebook的所有基础设施都使用Linux。Btrfs的很多特性都是围绕分布式操作系统使用的,比如分布式任务管理、快照功能的快速更新、哈希验证功能等等。近日,Btrfs开发者JosefBacik在北美开源峰会上再次深度分享了Facebook为什么选择Btrfs以及取得了哪些成果。Bacik提到Facebook有很多机器,需要很多代码,包括网页、移动应用程序、测试套件和支持所有这些的底层基础设施。因此,他们希望所有的机器尽可能保持一致,任何服务都可以随时迁移到任何机器上。因此,Facebook的每项服务都在一个容器内运行,所有这些容器化服务都使用Btrfs作为它们的根文件系统。其次,Facebook的工作流程规定,任何人都不能直接向代码库提交代码,必须有完整的测试程序,才会先进行测试。Bulid系统首先克隆存储库、应用补丁、构建系统并执行测试。完成后,这些内容会被清理干净,为下一个做好准备。但清洗阶段比较慢,每次验证平均需要2、3分钟,有时需要10分钟,在此期间机器无法进行下一次测试。因此基础架构团队尝试使用Btrfs,而不是克隆存储库,创建快照,并在测试完成后删除快照。删除快照比删除大型代码库要快得多。此操作为FaceBook节省了大量时间和近三分之一的服务器数量(包括编译和测试所需的服务器)。FaceBook改用Btrfs的另一个重要原因是:它支持磁盘压缩。这里的重点不仅仅是节省存储空间,而是延长其使用寿命。Facebook在闪存上花了很多钱,但它是便宜的、平庸的闪存。该公司希望这种存储能够持续尽可能长的时间,这意味着尽量减少执行的写入周期数。源代码往往具有很好的压缩比,所以压缩可以大大减少写入存储块的数量,减缓存储设备的寿命损耗。Bacik还表示,这项工作是由基础设施团队完成的,没有得到Facebook的Btrfs开发人员的任何帮助,事实上,他们甚至不知道这件事。但他也对最终结果感到惊讶。Btrfs官方文档:https://btrfs.wiki.kernel.org...Btrfs离Linux的未来还有多远这些年来,ext似乎已经成为Linux文件系统的代名词。但是,在写这篇稿子和搜集资料的时候,我发现Btrfs会出现在讨论ext的文章或者帖子中。RedHat赞助的独立Linux发行版Fedora在其最新版本Fedora33中也将Btrfs设置为默认文件系统。虽然ext4只是被大家定义为“过渡”产品,但就连ext4的作者也表示Btrfs将成为下一代Linux的标准文件系统。但Btrfs还需要找到很好的解决自身问题的方法,才能真正流行起来。