為數十萬臺裝置更新內部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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在 Ubuntu 和其它 Linux 發行版上更新 grubUbuntuLinux
- 從 流行linux發行版 看 發行版引數Linux
- Google:Android TV月活裝置數已超8000萬臺GoAndroid
- 如何使用 Distrobox 在終端內執行多個 Linux 發行版Linux
- 如何選擇 Linux 發行版Linux
- Google:全球已啟用5億臺Android裝置,日啟用量在130萬部GoAndroid
- In The Plex:Google內部趣聞挖掘Go
- 內部抗議太強烈,Google中國版搜尋黃了Go
- Linux平臺使用裸裝置作為檔案儲存方式Linux
- 基於Android裝置的 Kali Linux滲透測試教程(內部資料)AndroidLinux
- 物聯網平臺和裝置如何進行效能測試
- 為蘋果想一個新裝置 Apple TV進化版如何蘋果APP
- 如何在一個 U 盤上安裝多個 Linux 發行版?Linux
- 如何在一個 U 盤上安裝多個 Linux 發行版Linux
- 企業如何構建內部開發者平臺?
- 不同裝置如何統一語言程式設計平臺高效開發?本文為你揭秘程式設計
- In The Plex:Google內部趣聞挖掘(六)Go
- Linux發行版Linux
- Ian Cutress:臺積電EUV裝置安裝數量佔行業一半行業
- 《Linux裝置驅動開發詳解(第2版)》——第1章Linux裝置驅動概述及開發環境構建1.1裝置驅動的作用Linux開發環境
- appium如何連線多臺裝置APP
- Google:全球使用Android驅動的裝置達30億臺GoAndroid
- 什麼是Linux發行版?Linux發行版推薦Linux
- 打破平臺限制,小程式如何在硬體裝置上執行?
- 如何選擇合適的Linux發行版Linux
- Linux Shell程式設計(14)——內部變數Linux程式設計變數
- Linux 大爆炸:一個核心,無數發行版Linux
- win10正式版系統怎麼禁用裝置安裝更新Win10
- Linux下如何實現區域網內網路裝置相互通訊Linux內網
- 微軟Mobile/PC最新推送候選版更新已在內部測試中微軟
- java內部類,為什麼需要內部類?Java
- Ubuntu 發行版更新 Linux 核心,修復 17 個安全漏洞UbuntuLinux
- iOS10.3.1正式版更新發布:支援iPhone5等32位裝置iOSiPhone
- Linux讓486成為內部網防火牆(轉)Linux防火牆
- 關於小程式如何做到強制更新
- 物聯網平臺存量裝置如何一鍵遷移企業版例項
- 2016:如何選擇 Linux 發行版Linux
- iPhone裝置適配(更新中·····)iPhone