拥有多个版本的Linux内核好吗?


14

一次,我正在安装一些内核补丁,而在拥有数百个客户端的实时服务器上出了点问题。系统中只有一个内核。因此,服务器停机了一段时间,并使用现场CD,我们使系统启动并运行并进行了进一步的修复工作。

现在我的问题是:拥有2个版本的内核是一个好主意,这样,如果内核损坏了,我们总是可以使用另一个可用的内核重新启动?请告诉我。

另外,同一内核可以有2个版本吗?这样在发生内核损坏时可以选择另一个内核?

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

我如何拥有该内核的相同副本,以便在内核损坏时可以启动备份内核?


4
在我看来,您已经回答了自己的问题。只要拥有多个内核,只要您知道它们可以与您的系统一起使用,就没有任何弊端,如果由于某种原因遇到特定内核的问题,这有时会很有用。
Faheem Mitha 2015年

谢谢,可能是我没有正确询问qns。如何获得该内核的相同副本,以便在内核损坏时可以启动备份内核?
玛尼2015年

2
当然,您可以拥有相同的内核。内核只是磁盘上的一个文件。您可以使用稍微不同的名称来复制现有内核。
Faheem Mitha 2015年

在我继承的其中一台服务器上,它具有针对8个不同内核的16个启动项...您知道,直到我清理了它
Canadian Luke

我通常保留以前的内核,以防出现问题。
2015年

Answers:


18

当您使用yumapt-get默认情况下安装新的RedHat发行版和基于Debian的发行版时,它们都会保留多个版本的内核。这被认为是一个好习惯,并且完全按照您描述的情况进行:如果最新内核出了问题,您可以始终重新引导,而在GRUB中,选择使用以前的内核之一进行引导。

在RedHat发行版,你控制内核的数量保持在/etc/yum.confinstallonly_limit设置。在我的新CentOS 7上,默认安装为5。

另外,如果在RedHat上从RPM软件包安装新内核,则应使用rpm -ivh,而不是rpm -Uvh:前者将旧内核保留在原位,而后者将替换旧内核。

Debian保留旧内核,但不会自动删除它们。如果需要释放引导分区,则必须手动删除旧内核(请记住至少保留以前的内核之一)。要列出所有内核安装和内核头文件包,请使用dpkg -l | egrep "linux-(im|he)"

回答您的问题- 同样,是否可能具有相同内核的2版本? - 对的,这是可能的。我现在无法在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

谢谢,我正在努力。但是在CentOS 6.5中,没有“ grub2-mkconfig”。您知道吗,如何在centos 6.5中执行此操作,我认为grub2仅在Centos 7中可用。如果我找到了soln,我现在正在Google上搜索,它将在此处更新。
玛尼2015年

我修改了这些行以适合Centos 6.5,如下所示,并陷入了如何更新grub.conf的困境。ls -1 | grep“ 2.6.32-431.el6” | {在阅读时;\ do cp $ i $(echo $ i | sed's / el6 / el6.backup /'); 完成 } cp /boot/grub/grub.conf cp cp /boot/grub/grub.conf.backup
Mani

非常感谢!!!它奏效了,我像这样修改了ls -1 | grep“ 2.6.32-431.el6” | {在阅读时;\ do cp $ i $(echo $ i | sed's / el6 / el6.backup /'); 完成 } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup,我手动编辑了grup.conf。如果要在同一磁盘和分区中进行复制,则可以保持UUID不变。
玛尼2015年

7

是的,这是可能的,我会说是明智的。您只需要设置启动过程即可为您提供替代方法。通常,这是在引导加载程序配置中完成的-通常,您只需复制其中的条目并更改内核映像文件名和引导菜单条目标签。

在生产服务器上,这通常不是问题,但是每当升级内核时,最好有一个备份。一些Linux发行版提供了对软件包更新的回滚(通常由文件系统快照功能支持),以使过程尽可能轻松,但是即使在那种情况下,我也倾向于准备好备份。

至于拥有同一个内核的多个副本,即使这样也很有意义,但是正如@goldilocks在下面的注释中指出的那样,如果内核损坏,则应考虑更换硬件。另一方面,将副本放置在其他物理HDD上可能会为您节省一些麻烦。但请记住,内核映像文件只曾经启动时使用。


我已经修改了qns,请让我知道,如何拥有备份内核?(最好是同一版本)
Mani 2015年

3
您无需执行任何操作,它们已经存在-但版本不同。除非您自己编译了其中一个,否则没有两个相同的版本是没有意义的,否则它们只是相同的副本。“腐败”的问题是虚假的-通过这种逻辑,如果bash二进制文件被破坏,libc被破坏等,您将需要整个系统的两个完全相同的副本。所有这些都会使系统无用。这些文件不应“损坏”。 如果是,请更换硬件。
金发姑娘

1
@goldilocks或更换系统管理员,具体取决于故障所在。
菲利普·肯德尔2015年

@goldilocks查看最新答案-在特定情况下可能有道理。显然,应该尽可能更换有故障的硬件。
彼得
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.