CentOS Stream 8 一年後使用心得
由於 Red Hat 提早結束了 CentOS 8 的生命週期,並且讓 CentOS 這個品牌從 RHEL 的免費版本,轉型成為 RHEL 的上游開發版本,也就是 CentOS Stream。使得原本許多 CentOS 的使用者,必然會需要思考合適的替代方案。雖然人們似乎會自然地關注諸如 AlmaLinux 及 Rocky Linux 這些比照原本 CentOS 模式,從 RHEL 原始碼重新編譯而成的發行版本。然而說實在話,DR 並不認為需要就此將 CentOS Stream 從可行的選擇清單中剔除。因此在過去一年多的時間裡,DR 在工作環境裡建置了幾部 CentOS Stream 8 主機,而本文即是維運至今的一些感想。
從一般的使用情形來看,CentOS Stream 和 CentOS 並沒有任何可見的差異。與 CentOS 相同,CentOS Stream 在安裝及部署上依然是相當的直接了當。即便是歸屬為企業級的 Linux 發行版,也仍然不需要任何的註冊程序,就能夠下載安裝媒體、完成安裝以及後續的軟體更新動作。甚至某種層面還比過去的 CentOS 更加方便,因為 CentOS Stream 的滾動式發佈並不會有子版本(如 8.5、8.6 等等)的區隔,而是自動週期性組建出最新的安裝映像;連同線上安裝的方式,也是自動下載最新的套件。所以不會像以往 CentOS 那樣,即使是下載及安裝最近的發佈版本,都往往還要再執行系統更新,才能讓系統環境更新到最新狀態。
許多常用的額外套件庫,如 EPEL、Remi's RPM 及 RPM Fusion 等,也依然可在 CentOS Stream 上使用。
最主要的差異,是 CentOS Stream 的軟體環境是與 RHEL 的下一個子版本同步,而非與 RHEL 的當前子版本同步。也就是說,倘若 RHEL 8 的當前子版本為 8.6,那麼此時的 CentOS Stream 8 就是未來 RHEL 8.7 會有的模樣。由於熟悉 RHEL/CentOS 生態的使用者,應該都知悉子版本的演變,通常不會有什麼破壞服務運作的風險。所以在多數情況下,這表示使用 CentOS Stream 的風險並不會比 RHEL/CentOS 來得高。
而這也顯示出,何以 CentOS Stream 的生命週期會從 CentOS 的 10 年縮減為 5 年。這是因為 CentOS Stream 的生命週期即等同於 RHEL 的 5 年完整支援期間(Full Support Phase),也就是會持續開發及發佈 RHEL 子版本的期間。而在 RHEL 完整支援期間結束後,進入到另一個以安全性更新及錯誤修正為主的 5 年維護支援期間(Maintenance Support Phase)時,CentOS Stream 的供給能量也就會隨之撤除。
另一方面,既然 CentOS Stream 是作為 RHEL 的上游開發版本,那麼是否可以預期 CentOS Stream 的套件更新速度都會比 RHEL 來得早呢?事實上不必然是如此,就 DR 觀察至今的情形,確實通常軟體套件的新版本,會先出現在 CentOS Stream 上,然後才是 RHEL。不過若是重大的安全性修正,則 RHEL 會早於 CentOS Stream 發佈更新套件。顯示出 Red Hat 內部團隊在處理一般軟體更新及安全性修正時,背後是有著不同的次序及流程。
就 DR 自己的使用體驗,使用 CentOS Stream 的可見風險,是一旦作業環境得依賴額外編譯、或者是由第三方所提供的內核模組時,那麼 CentOS Stream 所發佈的新內核版本,有可能會先破壞與模組之間的相容性,早於模組的維護者為 RHEL 提供相應的更新。
這某種程度突顯出 RHEL/CentOS 一項存在已久、但使用者多半沒有重視的議題,就是 RHEL 的 Linux 內核是個近乎異形般的存在。它的主版本號(例如 4.18)並沒有反映出它的真實狀態,因為 Red Hat 會自行加入大量的修補,使得它與原始 Linux 內核的相應版本有著不小的差異。 儘管 Red Hat 在內核的改動之間,基本上都會設法保持相容性,但對於第三方模組來說,就不必然是這樣了。有可能引入的一項內核變動,與某個第三方模組是衝突的,使得模組不再能順利載入到內核中。
第三方模組的維護者,若想要追蹤 RHEL 的內核變化,並預先或者及時做出調整,並不是件容易的事。因為它基本上是個黑箱作業,完全由 Red Hat 的開發者在內部進行決策與控制。而外部人員得等到更新的內核套件連同原始碼一併發佈後,才能著手進行分析。儘管事實上 CentOS Stream 就是一個設法將 RHEL 開發過程透明化的嘗試,不過從網路上一些可查看到的討論來看(例如 1905962 – RHEL8 kernel has acpi_lapic breakage with 4.18.0-257),這項措舉在 RHEL 9 實行得較為完善,反之在 RHEL 8 上仍是比較偏黑箱的情形。
總結來說,CentOS Stream 是可以用的,它並沒有存在任何技術障礙,讓使用者無法完成以往在 CentOS 上期待能夠做到的事情──不過你應該認真考慮使用 RHEL,畢竟這是 Red Hat 在做出產品區隔後所期望的結果。尤其考量到 Red Hat 為因應 CentOS 的後續爭議,其實放寬了每個開發者帳戶可訂閱的免費授權數(16 部主機),只要每年進行續訂即可。
DR 目前的工作環境,除了 CentOS Stream 8 外,其實也已經有部份主機是安裝 RHEL 8 及 9,而授權來源即是使用開發者訂閱。至於目前的配搭方式,倘若是純內部使用、或者是容易替補的服務,多半都是裝 CentOS Stream。反之,若是供外部客戶、或者是比較不適合出現變動的服務,則是裝 RHEL。