Linux 更新 Kernel 最麻煩的地方就是需要重新開機,但是 Server 要重新開機是一件很複雜的事情,平常在跑的服務不能停,想重新開機都得要另外安排時間,所以就會需要找備援機器來替代,達到 0 downtime。
Linux 4.0 以後,這個問題應該就可以盡量避免了,之後更新 Kernel 就不需要重新開機囉~ (更換硬體應該還是會需要重開機)
註:不過如果機器沒事的話,偶爾還是可以重開機看看,避免難得重開確開不了機的糗狀。 XD
Linux 4.0 引入 更新 Kernel 不需重開機的功能
新聞可見:
- Never reboot again with Linux and Ksplice | Computerworld
- No reboot patching comes to Linux 4.0 | ZDNet,下述摘錄自此篇:
- This is actually a feature that was available in Linux in 2009 thanks to a program called Ksplice. This program compares the original and patched kernels and then uses a customized kernel module to patch the new code into the running kernel. Each Ksplice-enabled kernel comes with a special set of flags for each function that will be patched. The Ksplice process then watches for a moment when the code for the function being patched isn't in use, and ta-da, the patch is made and your server runs on.
翻譯簡述:
- 能做到 Linux Kernel 更新 Patch 後,不需要重新開機,主要是靠 2009年製作的 Ksplice 達成的。
- Ksplice 的作法如下:
- Ksplice 會比較 "原有的 Kernel" 和 "Patch過的 Kernel",然後產生特製的(Patch new code) kernel module,並於現在執行的 Kernel 載入。
- 每個 Ksplice 啟用的 Kernel 都會設定一個特殊的 Flags,讓每個 Function 都可以被 Patched。