為數十萬臺裝置更新內部Linux發行版,Google如何做到?

夢共裡醉發表於2023-02-28
谷歌內部使用了許多不同的作業系統平臺,其中包括  。15 多年前,谷歌選擇基於 Ubuntu LTS 構建內部 Linux 發行版 Goobuntu,主要是看中了 Ubuntu 具備使用者友好、易於使用的特性,以及提供了許多優秀功能。

谷歌內部使用了許多不同的作業系統平臺,其中包括 Linux。15 多年前,谷歌選擇基於 Ubuntu LTS 構建內部 Linux 發行版 Goobuntu,主要是看中了 Ubuntu 具備使用者友好、易於使用的特性,以及提供了許多優秀功能。此外,LTS 會獲得 Canonical 提供 2 年以上的安全更新。

根據官方介紹,Goobuntu 是谷歌長期以來一直使用的 Linux 發行版。不過 Ubuntu LTS 的兩年更新週期意味著谷歌必須在作業系統 EOL 之前,對超過 10 萬臺裝置中的每臺機器進行升級。這是一項非常困難且耗時的工作,畢竟每兩年讓所有工程師從頭開始配置他們的工作空間,這對生產力是嚴重的打擊,並且從經濟角度來看也是一個不負責任的選項。

在每個作業系統使用週期內,谷歌還面臨軟體包重大版本升級的挑戰,因為這可能需要對軟體配置進行重大改變。為了讓這個過程自動化,谷歌工程師編寫了一個無人值守的升級工具來處理很多常見的問題。這種 “自動化升級” 意味著大多數谷歌員工無需透過重新安裝機器,並重新建立所有配置來手動升級。不過為了實現這一點,谷歌需要對升級過程進行全面測試,並檢查所有已更改的主要軟體包是否繼續執行(在 Ubuntu 中,主要版本之間的升級可能多達數千個軟體包)。有時,在發生軟體包棄用且工程師必須決定如何推進的情況下,很難提供自動化。

據稱,谷歌完成所有 Goobuntu 的升級通常要花費一年的時間,整個過程對於團隊來說是一個巨大的壓力。而且很多時候他們遇到的一些 bug 已經在上游被修復了,但這些改進卻從未被合併到所使用的 LTS 版本。

因此谷歌轉向了滾動更新發行版,不過它沒有選擇知名的滾動更新發行版 Arch Linux,而是基於 Debian 測試分支構建了 gLinux Rodete (Rolling Debian Testing)。

為數十萬臺裝置更新內部Linux發行版,Google如何做到?為數十萬臺裝置更新內部Linux發行版,Google如何做到?

選擇 Debian 是因為它有著龐大的社群和軟體庫,還可以使用 Debian 格式的現有內部軟體包和工具。而且 Ubuntu 也是基於 Debian,遷移過去更容易順暢。

Debian 穩定分支也是差不多兩年釋出一次大更新,但其測試分支是滾動更新的。滾動更新意味著需要儘可能防止新版本對現有工作流程造成破壞,為了管理從原始碼構建所有上游軟體包的所有這些複雜任務,谷歌構建了一個名為 Sieve 的工作流系統。透過執行一個虛擬化測試套件,確保核心元件和開發者工作流程都不會被新版本軟體包破壞。

谷歌表示,Goobuntu 最後一個版本基於 Ubuntu 14.04 LTS(代號 Trusty)。Rodete 的開發始於 2015 年,2017 年,谷歌開始將機器遷移到 Rodete,並在 2018 年底完成所有遷移。2019 年初關閉了最後一批執行 Goobuntu 的機器。2020 年中,Rodete 完全跟上了 Debian Bullseye 的釋出時間。未來谷歌計劃與上游 Debian 更緊密地合作,並貢獻更多的內部補丁來維護 Debian 軟體包生態。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2937501/,如需轉載,請註明出處,否則將追究法律責任。

相關文章