当前位置: 首页>>技术问答>>正文


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

, , ,

问题描述

这是一个加载的问题,因为我已经知道,并且对ksplice非常感兴趣。问题在于,由于他们被Oracle收购,他们被迫从产品中提取大量服务器。答案并不像以前那么简单。

我注意到a question on Unix.SE指出:

You can build your own ksplice patches to dynamically load into your own kernel

大!但是如何?!

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

此外,如果无内核升级所需的所有机器都位于内核(和ksplice软件包)中,那么为什么我们默认不利用它呢?


最近的kGraft was announced。这似乎是大致相同的结果,所以如果你有一个涉及它的答案,我会对此感到高兴。现在距离发布还有几个月了。


注1:我很高兴ksplice旁边的解决方案,但它必须提供相同的东西:滚动更新到内核,可以应用而无需重新启动服务器。

注2:我会再说一遍;主要的ksplice “service”不支持Ubuntu Server。以前它已经没有了。当我谈到想要使用ksplice时,我在谈论ksplice包中的开源工具。任何谈论ksplice-uptrack的答案可能都不是我所追求的,因为这是与上述”service”直接集成的部分。

最佳解决办法

这里的所有其他答案都很棒,但对于Ubuntu而言,Canonical现在在16.04提供此服务。

自4.0发布以来,这在上游Linux内核中使用了实时修补技术。

次佳解决办法

我不太了解ksplice,但我想我会提到它 – 你听说过kexec吗?这可能就是你所需要的。

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

您可以查看the IBM developer works文章,了解它是否符合您的需求。

第三种解决办法

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

第四种办法

Ksplice有几个完全open-source替代品,它们都已提交包含在主线Linux内核中。现在判断哪些会在内核中结束还为时过早,但如果你足够勇敢,你仍然可以尝试一下:

您可以在这里阅读更多关于它们的信息:SUSE Posts kGraft, Red Hat Posts Kpatch Patches

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6416.html,未经允许,请勿转载。