如何避免 Linux 宕機?
Ubuntu 的軟體更新經常需要重新啟動(這可能會產生副作用,例如停機時間)。
我看到 Ubuntu 有https://www.ubuntu.com/livepatch允許在不重新啟動的情況下更新核心,但是,這是一項付費服務。還有ksplice。
是否存在升級/更新檔從不需要重新啟動的 Linux 發行版/程序?
(我知道設置高可用性 (HA) 伺服器和使用一次性伺服器是最佳實踐 - 所以我不是在詢問是否保持服務正常執行,而是在實際伺服器上。)
對於您的問題,“是否有 Linux 發行版/程序的升級/更新檔永遠不需要重新啟動?”,我不知道有任何問題,而且我非常懷疑是否會有任何真正無需重新啟動的版本。除了 Michael Hampton 關於為什麼實時修補在任何地方都不是開箱即用的體驗的評論之外,實時修補也無法達到與重新啟動相同的結果。
一個軼事可以說明這一點:我最近調查了一個問題,其中一個特定的實用程序開始在大量機器上進行段錯誤。我嘗試查看它用來查看最近升級的任何東西是否破壞了它的共享庫;ldd 說它不是執行檔(即使當我將相同的二進製文件下載到我的筆記型電腦時,ldd 也可以很好地看到共享庫依賴項)。我嘗試在 gdb 中單步執行它;它甚至在到達第一條指令之前就出現了段錯誤。
查看故障的時間,我發現最近應用了一個 Ksplice 更新檔。我退出了更新檔並且二進製文件沒有段錯誤,然後將其重新添加,它再次開始段錯誤。重新啟動到等效修補的核心工作正常。事實證明這是一個 32 位支持的更新檔,Ksplice 的人並沒有完全正確地應用它。值得稱讚的是,他們在幾個小時內發布了一個固定更新檔,並且它在我們的機隊上恢復正常工作而無需干預。
另一個例子:Meltdown/Spectre 更新檔非常具有侵入性,以至於 Ubuntu 核心團隊認為實時更新檔是不切實際的,並要求人們在再次接收實時更新檔之前將他們的系統重新啟動到固定核心。
我們在工作中執行大量物理和虛擬伺服器,其中包含大量 Ksplice 和 Canonical Livepatch 系統。它們都比許多其他軟體可靠得多,但我仍然寧願看到我們的服務設計為具有重新啟動友好的架構,而不是依賴核心實時修補。