為數十萬臺裝置更新內部Linux發行版,Google如何做到?
谷歌內部使用了許多不同的作業系統平臺,其中包括 。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)。
選擇 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Google:Android TV月活裝置數已超8000萬臺GoAndroid
- 如何在 Ubuntu 和其它 Linux 發行版上更新 grubUbuntuLinux
- 從 流行linux發行版 看 發行版引數Linux
- 如何使用 Distrobox 在終端內執行多個 Linux 發行版Linux
- 如何選擇 Linux 發行版Linux
- 企業如何構建內部開發者平臺?
- Google:全球使用Android驅動的裝置達30億臺GoAndroid
- 如何在一個 U 盤上安裝多個 Linux 發行版?Linux
- Linux發行版Linux
- 為數十億臺裝置提供許可權自動重置功能
- 什麼是Linux發行版?Linux發行版推薦Linux
- 內部抗議太強烈,Google中國版搜尋黃了Go
- appium如何連線多臺裝置APP
- Linux下如何實現區域網內網路裝置相互通訊Linux內網
- 物聯網平臺和裝置如何進行效能測試
- Ubuntu 發行版更新 Linux 核心,修復 17 個安全漏洞UbuntuLinux
- Linux發行版 vs Linux核心Linux
- Ian Cutress:臺積電EUV裝置安裝數量佔行業一半行業
- 不同裝置如何統一語言程式設計平臺高效開發?本文為你揭秘程式設計
- 【linux】驅動-7-平臺裝置驅動Linux
- 打破平臺限制,小程式如何在硬體裝置上執行?
- win10正式版系統怎麼禁用裝置安裝更新Win10
- python開發華為雲應用側進行裝置接入Python
- 主流發行版之前的那些最早的 Linux 發行版Linux
- 如何選擇更適合你的 Linux 發行版?Linux
- 手機termux安裝Linux發行版再安裝青龍皮膚Linux
- Linux裝置節點Linux
- Linux裝置模型(3)Linux模型
- 複習Linux如何顯示檔案指定行數的內容Linux
- 在Linux中,Linux發行版有哪些?Linux
- 物聯網平臺存量裝置如何一鍵遷移企業版例項
- TensorFlow Lite:TensorFlow在移動裝置與嵌入式裝置上的輕量級跨平臺解決方案 | Google 開發者大會 2018Go
- Oracle Autonomous Linux:用於雲端計算的自我更新、自我修補的 Linux 發行版OracleLinux
- java內部類,為什麼需要內部類?Java
- 設計多裝置或者跨平臺的 app 如何進行自動化?APP
- Linux裝置淪為礦機,黑客暴力破解SSHLinux黑客
- 來自 Amazon 的容器專用 Linux 發行版“瓶裝火箭”Linux
- 關於小程式如何做到強制更新