被稱作 CentOS 未來的 CentOS Stream 是個什麼?
InfoQ · 程式 ·

被稱作 CentOS 未來的 CentOS Stream 是個什麼?

布一年多了還在被討論。本期《極客有約》,我們邀請到

2020 年底,紅帽宣布 CentOS 8 將在一年後結束生命周期。自此,開發者圈子裡圍繞這件事情就出現了很多不同的聲音,有主張立刻遷移的;有觀望不決的;有轉而付費版的;也有質疑紅帽是不是準備割韭菜的,這件事情的熱度與 CentOS 的受喜愛度成正比,以至於這個決定公布一年多了還在被討論。


本期《極客有約》,我們邀請到了紅帽首席架構師張家駒和我們聊聊「停更」事件始末以及被稱作 CentOS 未來的 CentOS Stream 到底是什麼。

InfoQ:紅帽當時為什麼決定結束 CentOS 8 的生命周期?

張家駒:CentOS 8 的停更實際相當於是把 CentOS 改了一個名字——CentOS Stream ,這類似於好多開源項目在運作過程中也經常改名字。比如紅帽 OpenShift 的社區版 origin 現在叫做 OKD。事實上,CentOS Stream 繼承了 CentOS 的衣缽,與 CentOS 同源。我們認為這就是一個正常的版本疊代,或者說是社區項目的疊代,沒想到在市場上造成了這麼大的反響。

InfoQ:為什麼紅帽沒有在決定公布之初做出來回應?

張家駒:2000 年之前,大家對紅帽的印象還停留在賣軟體安裝光碟。2000 年左右,紅帽開始做企業級 Linux,至今已經 20 年。在這之中,我們發現企業的訴求主要是穩定,比如需要一個長生命周期的產品。相對閉源,開源之所以有這麼多創新很大程度上是因為包袱小,可以快速將創新的想法加進來,達到更完美的實現,這也是微軟、英特爾 X86 架構中寄存器等設計看起來沒有那麼完美的原因,主要是歷史包袱較重,更新時需要保證兼容性。

在紅帽提出做企業級 Linux 之前,很少有人將 Linux 直接用於企業生產,企業對於安全、穩定等還是有擔憂的。紅帽提出將 Linux 送進企業生產環境,主要做法就是反向移植,基於社區某一版本拉出一個分支,在該分支上不斷優化和工程化改進,如果有一些創新的想法也加進來,類似 SUSE 等做企業級 Linux 的基本都是這樣的思路。這讓我們的開發模式在很長一段時間內類似瀑布式開發,我們在這個過程中不斷地將整個版本做穩定,這是一種傳統的開發方式。

2017 年左右,我們認為這個傳統的開發方式有點不合時宜,因為這種方式的疊代周期比較慢,現在都講究 DevOps、微服務,開發周期越來越短,我們也在思考作業系統內核包含其上軟體的開發速度有沒有可能提升,我們在開發流程中加入了 CI/CD,且每天晚上都對當天的提交用例做自動化測試(Nightly Builds),第二天就發布一個新的版本,我們將這個過程叫做 Stream。


2018 年左右,CentOS Stream 的雛形就已經有了,但並沒有在 CentOS 社區裡面公布這種流式的開發模式。隨著這幾年的孵化並綜合考慮了各方面因素,我們認為 CentOS Stream 可以更快捷穩定的發布 Linux 版本,所以相對於我們把 CentOS 升級到 CentOS Stream。


在我們看來,CentOS Stream 的穩定性不輸於 CentOS,很多人對此有疑問,認為這是給小白鼠用的,其實不然,Fedora 才是 RHEL 的實驗場。從正常的邏輯來說,我們也不需要兩個實驗場。

InfoQ:非瀑布式開發會影響版本的穩定性嗎?CentOS Stream 在企業級 Linux 生態系統中的地位是什麼?

張家駒:內核確實是比較講究穩定性的。早些年,Linux 內核的補丁貢獻人數較少,相對來講企業級的 Linux 系統更新不會太快。如今,越來越多的開發者加入 Linux 內核貢獻的隊伍,為了讓新特性進入主流版本的速度更快,我們需要採取更加快速的方式進行開發,否則很難跟上這個節奏,這對紅帽來說是一件棘手的事情,我們需要優化流程讓其更加快速,從 RHEL 8 開始就逐漸採用這種新的開發模式,至於這種方式是否一定比傳統的瀑布式開發更好是一個更大的話題,我們認為通過更優的流程和更高程度的自動化可以實現穩定性。

不管是否推出 CentOS Stream,如今作業系統內核的開發方式都已經是 CI/CD 的方式,紅帽的 RHEL 8 和 9 都是按照這種方式做的,穩定性不需要太過擔心。

至於 CentOS Stream 在 Linux 生態中的位置,一般來說, Fedora 是中上游,RHEL 是下游,CentOS Stream 是中游。事實上, Fedora 完全從社區里來,紅帽做的更多是打包和簡單測試,對其穩定性及可靠性方面的工作做得是比較少,遵循滾動更新的方式,每半年發布一個新版本,新版本與舊版本之間保有基本的兼容性,也可能會丟棄一些老版本中不好的地方,這恰恰是企業級開發不能接受的。

菜的,這件事情的熱度與CentOS的受喜愛度成正比,以至於這個決定公


RHEL 則是基於 Fedora 某個特定版本拉取分支,逐漸在這個版本上做增強,保證新舊版本之間的兼容性,並保證最終版本的穩定性。CentOS Stream 則與 RHEL 的版本相對應,其 Git 提交記錄完全一致,二者通過同樣的構建流程、同樣的測試用例。簡單來說,只有通過全部的測試用例,CentOS Stream 新版本才會發布,這些測試用例與 RHEL 可能重合,也可能不重合,但我們認為只有全部通過才是穩定的,才可以進入下一步,RHEL 也是如此,二者在穩定性上保持一致。


主張立刻遷移的;有觀望不決的;有轉而付費版的;也有質疑紅帽是不是準備割韭


那麼,既然二者一致,為什麼還區分中游和下游呢?所有在 RHEL 做的改動都會先進到 CentOS Stream 裡面,方便社區生態夥伴一起共建,並讓所有開發者第一時間享受到最新版本。

InfoQ:CentOS Stream 與 RHEL 版本之間的對應關係是什麼?

張家駒:CentOS Stream 8 和 RHEL 8 是對應的,不過 RHEL 可能還有 8.1、8.2、8.3......這其中的分別是 CentOS Stream 永遠只對應 RHEL 最新的穩定版。一般來說,我們的更新節奏是每六個月會更新一個小版本,假設當前 RHEL 的最新穩定版是 8.3,那麼 CentOS Stream 一定是和該版本對應的。


後結束生命周期。自此,開發者圈子裡圍繞這件事情就出現了很多不同的聲音,有


很多傳統企業可能基於閉源軟體的認知,覺得新版並不是最穩定的,但其實 CentOS Stream 是最新、最穩定的版本。這其中還有一個問題是對已經將 CentOS Stream 部署在生產環境的企業而言,半年更新一次太過頻繁,那應該怎麼辦?

大部分企業會一直沿用上線之初選擇的版本,除非出現安全問題才會想到更換,即便是這種模式,使用 CentOS Stream 同樣行得通,企業可以自主選擇在需要的時候更新版本。

至於二者的分別,RHEL 會對單個版本提供長系統更新支持,最長可持續兩年,以保證舊版本的安全可靠。雖然新版本在安全、穩定以及一些新特性方面的支持更到位,但企業不是一個人的企業,一旦因為更新發生問題很可能結果是不可逆的,所以很多企業在這方面會選擇偏保守的方案。

InfoQ:兼容性是有保證的嗎?

張家駒:兼容性肯定是有保證的,但用戶的應用因為是閉源的,所以我們無法確定其到底調用了內核中的哪些模塊,一個大的版本範圍,比如 8 這個大版本內肯定是保證兼容的,紅帽也做了很多工程上的工作,讓社區可以沒有包袱的往前沖,紅帽在背後提供支持,最長可以到 13 年。

InfoQ:據了解,Facebook、英特爾等廠商已經參與到 CentOS Stream 的社區共建中了,他們主要在做哪些事情?

張家駒:英特爾對開源項目一直是非常擁抱的態度,特別是 Linux 內核相關的,總體代碼貢獻量超過紅帽,Linux 主要基於 X86 架構起家,英特爾在其中有很重要的貢獻。Facebook 則主要是做一些滿足自身業務發展的特色化服務,並回饋給社區。

對 Linux 發行版廠商而言,我們做的事情更多是為了滿足大眾的訴求,而網際網路廠商基於各自的業務特點對內核有更高要求,往往會通過更改上層應用的方式達到內核與上層應用的高效協同,或者通過設計一些專有硬體的方式提升效率。在 CentOS Stream 發布之後,Facebook 第一時間就進行了切換,並逐漸把自己的一些能力開放出來。

InfoQ:原 CentOS 用戶如何切換至 CentOS Stream?

張家駒:簡單來說只需要通過兩條命令就可以遷移至 CentOS Stream,但不同企業對生產環境、准生產環境、研發測試環境的定義不盡相同,切換時需要結合實際的業務場景來判斷。


2020年底,紅帽宣布CentOS8將在一年


這是兩條核心命令,但企業要進行遷移肯定不是這麼簡單,數據備份是最基本的,必要時可能需要回退,紅帽也公布了非常詳細的遷移步驟,有需要可以自行查看。而且從理論上他也不應該有分別的,因為這個東西本身都是一樣的,它怎麼可能有分別?即使你說定義參數,這不是一個編譯系統,編譯參數可能會有變化,但是真的會有變化嗎?應該沒有多大,因為你的代碼都是一樣的,應該是沒有什麼分別的,本質上和軟體更新沒有任何分別,並不會引入更多風險。

從客觀角度來看,CentOS Stream 在很多場景均可穩定運行,如果切換過程遇到問題依然可以在紅帽的知識庫檢索答案,只要是 CentOS Stream 中出現的 Patch,RHEL 中肯定也會有。如果是系統 Bug,可以提交一個 Bug report,我們會針對性的解決問題。

InfoQ:CentOS 社區的開發者、項目管理委員會、SIG 組目前主要在做什麼樣的事情?

張家駒:對這個開源項目而言,社區沒有那麼複雜,主要是董事會和 SIG 組兩部分治理機構,董事會基本都是像紅帽這樣的獨立董事。技術方面的決策則通過 SIG 組的方式進行,紅帽的工程師也會參與討論,在社區裡面和大家一起交流。

如果開發者對這些 SIG 組的討論感興趣,可以通過 CentOS.org 了解現有的 SIG 組分布,有針對新技術的、也有針對特定行業的,比如汽車行業,也有如何跟社區溝通的 SIG 組。如果大家有更好的想法也歡迎提交申請。


InfoQ:CentOS Stream 為什麼不直接從紅帽的企業版編譯?

張家駒:無論是紅帽的企業版還是 CentOS Stream,代碼和走過的測試用例都是一樣的,無非最終一個包打了紅帽企業級產品的簽名,我們更想表達的意思是 RHEL 裡面所有的內容都可以在 CentOS Stream 裡面看到,如果反過來,用戶難免覺得紅帽是不是自己留了一部分。

InfoQ:對開發者而言,如何選擇在紅帽的哪個平台開發?哪個平台部署?

張家駒:開發層面,很多發燒友可能習慣採用 Linux Destop;桌面開發可以選擇 Fedora,裡面的所有包都是最新的;大部分情況下,伺服器端開發,CentOS Stream 是很好的選擇,因為它不像 Fedora 那麼激進,包也很全,又具備 RHEL 的穩定性,更新又足夠快,特別是 8 之後的版本,不同語言的庫包括容器化應用開發所需的鏡像都是存在的,是很省心的選擇。當然,這些都是免費的。如果需要紅帽提供一些服務,也可以選擇我們的企業級版本。

InfoQ:CentOS Stream 未來維護和持續更新方面的規劃?

張家駒:CentOS Stream 是一個長期維護更新項目,畢竟 RHEL 也依賴於此,因此 CentOS Stream 會一直存在,大家不用擔心生命周期相關的問題。

聲明:文章觀點僅代表作者本人,PTTZH僅提供信息發布平台存儲空間服務。
喔!快樂的時光竟然這麼快就過⋯
繼續其他精彩內容吧!
more