当前位置: 首页 > Linux

Google如何为数十万台设备更新其内部Linux发行版?

时间:2023-04-06 23:02:51 Linux

Google在内部使用许多不同的操作系统平台,包括Linux。15多年前,谷歌选择基于UbuntuLTS构建其内部Linux发行版Goobuntu,主要是因为Ubuntu的用户友好、易于使用的特性,以及许多优秀的特性。Google在内部使用许多不同的操作系统平台,包括Linux。15多年前,谷歌选择基于UbuntuLTS构建其内部Linux发行版Goobuntu,主要是因为Ubuntu的用户友好、易于使用的特性,以及许多优秀的特性。此外,LTS从Canonical获得2年以上的安全更新。根据官方介绍,Goobuntu是谷歌长期使用的Linux发行版。但UbuntuLTS的两年更新周期意味着谷歌必须在操作系统进入EOL之前更新其超过100,000台设备中的每一台。这是一项非常困难且耗时的工作,毕竟,让所有工程师每两年从头开始配置他们的工作空间是对生产力的严重打击,也是一种在经济上不负责任的选择。谷歌还面临着每个操作系统生命周期内软件包大版本升级的挑战,因为这可能需要对软件配置进行重大更改。为了自动化这个过程,谷歌工程师编写了一个无人值守的升级工具来处理许多常见问题。这种“自动升级”意味着大多数谷歌员工不需要通过重新安装机器和重新创建所有配置来手动升级。不过,要做到这一点,谷歌需要彻底测试升级过程并检查所有已更改的主要软件包是否继续工作(在Ubuntu中,主要版本之间的升级可能多达数千个软件包)。有时,当包被弃用并且工程师必须决定如何前进时,很难提供自动化。据说谷歌通常需要一年时间才能完成所有Goobuntu升级,整个过程对团队来说是一个巨大的压力。很多时候他们遇到的一些错误已经在上游得到修复,但这些改进从未合并到所使用的LTS版本中。于是谷歌转向了滚动更新发行版,但没有采用众所周知的滚动更新发行版ArchLinux,而是基于Debian测试分支构建了gLinuxRodete(RollingDebianTesting)。选择Debian是因为其庞大的社区和软件存储库,以及Debian格式的现有内部包和工具的可用性。而且Ubuntu也是基于Debian的,迁移到过去更容易,更顺畅。Debian稳定分支也每两年发布一次重大更新,但其测试分支是滚动更新的。滚动更新意味着需要尽可能避免新版本破坏现有工作流程。为了管理从源代码构建所有上游包的所有这些复杂任务,Google构建了一个名为Sieve的工作流系统。通过运行虚拟化测试套件,确保核心组件和开发人员工作流都不会被新版本的包破坏。据谷歌称,Goobuntu的最新版本基于Ubuntu14.04LTS(代号Trusty)。Rodete的开发始于2015年,2017年,谷歌开始将机器迁移到Rodete,并于2018年底完成所有迁移。最后运行Goobuntu的机器于2019年初关闭。2020年年中,Rodete全面步入正轨与DebianBullseye发布时间表。未来,谷歌计划与上游Debian更紧密地合作,并贡献更多内部补丁来维护Debian软件包生态系统。