核心更新:為什麼最危險的更新也是最安靜的

核心安裝完成,什麼事都沒發生,一切看起來都正常。危險在下一次開機時才會出現,而那次開機可能是好幾週之後。原因與結果之間隔了好幾週。

AtlasPVE ·

本條目涵蓋以下問題

  • proxmox 核心更新
  • proxmox 新核心無法開機
  • proxmox kernel pin 固定核心
  • proxmox 重新啟動後連不上
  • proxmox 用舊核心開機

核心更新安裝完成,安裝過程順利結束,一切看起來都沒有改變。系統仍在執行舊核心,因為新核心只有在重新啟動後才會生效。

而危險正是藏在這裡。

原因與結果之間隔了好幾週

大多數套件失敗都會在操作當下顯現。服務停擺、出現錯誤,當天就會察覺。

核心不是這樣。問題會在下一次開機時出現,而那次開機未必是排定好的維護夜晚。停電了,機器自行重新啟動,然後就再也沒有回來。

在那一刻,沒有人會把它和上個月做的那次更新聯想在一起。眼前只有一個無法解釋的故障,看起來完全不像更新造成的問題。

通用原則:新的東西在經過驗證之前,不應成為預設

這是本文可以帶到其他地方的教訓,而且不只適用於核心。

新核心可以安裝,但永久的預設值應該維持舊核心。新核心只應該以下次開機時試用一次的選項來嘗試。

這樣設定之後,故障的樣貌就會改變:如果機器卡住,下一次開機時會自行回到舊核心。因為一次性的選擇,依定義就只生效一次。

得到的好處是:故障的名稱變成什麼事都沒發生,而不是機器不見了。

第二層:已安裝的東西不應悄悄成為預設

核心一安裝完成,大多數系統就會決定從此以最新的核心開機。如果不希望這樣,就必須在更新之前固定目前執行中的核心。

固定並不會阻擋新核心,只是讓它不會自行成為預設。想試用時,再自行選擇。

第三層:誰會發現機器卡住了

回退機制要能運作,必須有某個東西指出這台機器沒有起來。如果有硬體層級的看門狗,就由它負責,並重新啟動機器。

如果沒有,回退就需要手動重設。這不代表機制沒有用,但必須事先知道:在沒有看門狗的情況下,會自動回退這句話只對了一半。

即使沒有任何產品也成立的規則

核心更新之後,要刻意且盡快重新啟動。趁有人看著的時候。

自己排定的重新啟動是一次測試。三週後因停電而被迫的重新啟動則是一次事故。兩者唯一的差別,在於當時是否有人在場。

Atlas 的做法

Atlas 執行更新時,預設會固定目前執行中的核心,因此新安裝的核心不會自行成為開機預設。這個行為並非強制:它是一個可以在介面中關閉的選項。產品在這裡不替人做決定,而是把安全的一方設為預設。

經驗證的切換機制同樣建立在上述原則之上:永久的預設值一律是舊核心,新核心只透過一次性的下次開機來試用,若卡住,系統會自行回退。開機管理程式的類型會在執行時偵測,因為每台機器都不一樣。

另外還有兩個誠實的限制:

這個機制預設以僅觀察模式運作。也就是說,它會說明自己會做什麼,但不會更動開機設定。實際介入是另一個獨立的選擇。

如果沒有硬體看門狗,這個機制不會悄悄忽略這件事:它會妥善地停用自己,並說明可能需要手動重設。提出一個不存在的保證,比完全不提供保證更糟。

資料來源

Proxmox 官方文件。內容為英文,且在此主題上以官方文件為準。

相關條目

這項工作在 Atlas 中是什麼樣子?

前往產品頁面