擁有多個版本的 Linux 核心好嗎?

擁有多個版本的 Linux 核心好嗎?

有一次,我正在安裝一些核心補丁,在我們擁有數百個客戶端的即時伺服器上出現了問題。系統中只有一個核心。因此,伺服器停機了一段時間,我們使用 Live CD 使系統啟動並運行並進行了進一步的修復工作。

現在我的問題是:擁有 2 個版本的核心是個好主意嗎?請告訴我。

另外,同一個核心是否可以有兩個版本?這樣當核心損壞時我可以選擇另一個核心嗎?

Edited:
My Server Details:
2.6.32-431.el6.x86_64
CentOS release 6.5 (Final)

我怎麼能擁有該核心的相同副本,以便當我的核心損壞時,我可以啟動備份核心?

答案1

yum當您使用或apt-get預設安裝新版本時,RedHat 和基於 Debian 的發行版都會保留多個版本的核心。這被認為是一種很好的做法,並且完全針對您所描述的情況進行:如果最新內核出現問題,您可以隨時重新啟動,並在 GRUB 中選擇使用以前的內核之一進行引導。

在 RedHat 發行版中,您可以控制核心數量以保持/etc/yum.conf設定installonly_limit。在我新安裝的 CentOS 7 上,它預設為 5。

另外,如果在 RedHat 上您要從 RPM 套件安裝新內核,則應該使用rpm -ivh,而不是rpm -Uvh:前者將保留舊內核,而後者將替換它。

Debian 保留舊內核,但不會自動刪除它們。如果您需要釋放啟動分割區,則必須手動刪除舊核心(請記得至少保留一個先前的核心)。要列出所有核心安裝和核心頭包,請使用dpkg -l | egrep "linux-(im|he)".

回答你的問題——另外,是否可以有同一核心的兩個版本?- 對的,這是可能的。我現在無法在 CentOS 6.5 上檢查它,但在 CentOS 7 上,我只需複製/boot目錄中與核心相關的檔案並重建 grub 選單即可獲得所需的結果:

cd /boot

# Duplicate kernel files; 
# "3.10.0-123.el7" is a substring in the name of the current kernel
ls -1 | grep "3.10.0-123.el7" | { while read i; \
    do cp $i $(echo $i | sed 's/el7/el7.backup/'); done; }

# Backup the grub configuration, just in case
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup

# Rebuild grub configuration
grub2-mkconfig -o /boot/grub2/grub.cfg

# At this point you can reboot and see that a new kernel is available 
# for you to choose in GRUB menu

答案2

是的,這是可能的,我甚至會說這是可取的。您只需設定啟動過程即可為您提供替代方案。通常,這是在引導程式配置中完成的 - 通常您只需複製那裡的條目並更改核心映像檔案名稱和引導選單條目標籤。

在生產伺服器上,這通常不是問題,但每當您升級核心時,最好有一個備份。一些 Linux 發行版在軟體包更新時提供回滾(通常由檔案系統快照功能支援),以使該過程盡可能輕鬆,但即使在這些情況下,我也傾向於準備好備份。

至於擁有相同核心的多個副本 - 即使這也是有意義的,但正如 @goldilocks 在下面的評論中指出的那樣,如果您的核心損壞,您應該考慮更換硬體。另一方面,將副本放在不同的實體硬碟上可能會省去一些麻煩。但請記住,內核映像檔只是曾經啟動期間使用。

相關內容