如何在不重新启动的情况下升级服务器的内核?


29

这是一个非常棘手的问题,因为我已经知道了,并且对ksplice非常感兴趣。问题在于,自从它们被Oracle收购以来,他们被迫从产品中撤出许多服务器发行版。答案并不像从前那样简单。

我注意到Unix.SE上的一个问题指出:

您可以构建自己的ksplice补丁程序以动态加载到自己的内核中

大!但是如何?

我已经ksplice在桌面上的仓库中安装了免费软件包(不是ksplice-uptrack免费的),现在想生成并应用更新。什么过程?是否有任何脚本可以自动化该过程?

此外,如果无重启升级所需的所有机器都位于内核(和ksplice程序包)中,那么为什么我们在默认情况下不利用它呢?


最近kGraft宣布了。结果似乎大致相同,因此,如果您有涉及的答案,我也会对此感到满意。目前距离发布还有几个月的时间。


注1:我对ksplice之外的解决方案感到满意,但它必须提供相同的功能:将更新滚动到无需重启服务器即可应用的内核。

注意2:我再说一遍;主ksplice“服务”不支持Ubuntu Server。它曾经但没有。当我谈论要使用ksplice时,我是在谈论ksplice软件包中的开源工具。谈论的任何答案ksplice-uptrack可能都不是我想要的,因为这是直接与上述“服务”集成的部分。

Answers:



6

我对ksplice不太了解,但以为我会提到它-您听说过kexec吗?这可能就是您所需要的。

关于这个问题,我们为什么不采用它作为默认机制?好吧,在当前内核仍在运行时覆盖其内存可能会导致潜在问题。它还期望硬件设备处于状态良好的状态,这并非总是可能的。

您可以查看有关它的IBM开发人员工作文章,以确定它是否适合您的需求。


5
为+1 kexec,但本质上是热重启-IE会从头开始重新加载内核,因此仍会调用初始化脚本等。从技术上讲,这不是重新启动,但是运行的服务将停止。
jackweirdy 2012年

是的,我知道这一点,但是我还没有阅读ksplice上的任何内容来了解​​它的不同之处。
Marcin Kaminski 2012年

1
根据en.wikipedia.org/wiki/Ksplice的说明ksplice在运行中的内核仍在内存中时对其应用二进制diff补丁
jackweirdy 2012年

2
我需要阅读更多有关此的内容,因为它很有趣。那么您要节省多少正常运行时间来避免被重置?:D
Marcin Kaminski

3

ksplice将允许内核交换,而无需重新启动。Uptrack在ksplice中工作,并且在/etc/uptrack/uptrack.conf中具有可编辑的配置文件


2

有两种完全开源的Ksplice替代品,都已提交以包含在主线Linux内核中。现在说哪个将最终出现在内核中还为时过早,但是如果您足够勇敢,仍然可以尝试使用它们:

您可以在此处阅读有关它们的更多信息:SUSE帖子kGraft,Red Hat帖子Kpatch补丁



0

自2015年7月16日起,正式在Fedora和Ubuntu桌面版上免费提供Oracle Ksplice。

只需安装下载的.deb文件,您可以在这里获得

如果尝试sudo dpkg -i ksplice-uptrack.deb,则可能必须使用修复依赖性sudo apt-get install -f

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.