close
谷歌內部使用了許多不同的操作系統平台,其中包括 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)。
選擇 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 軟件包生態。
相關鏈接:https://cloud.google.com/blog/topics/developers-practitioners/how-google-got-to-rolling-linux-releases-for-desktops
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()