什么是 KernelCare?

“内核热补丁”的概念,有时称为 实时修补,在 2008 年左右被引入 Linux 社区。不久之后,各小组开始开发该概念的不同实现。 KernelCare 是最流行的实现之一,最初于 2014 年 3 月由 Cloud Linux, Inc.

那么,热补丁有什么作用呢? (或者:我为什么要 KernelCare?)

不管叫什么,Linux 内核热补丁的基本概念都差不多。 目标是只更新更改而不是整个内核——这通常需要重新启动。 这比听起来要困难得多,因为内核更新作为完整的软件包提供并且系统正在运行。

想象一下在开车时试图在你的车上换油 高速公路速度; 简而言之,这就是内核热补丁。

启用 KernelCare 后,可以处理内核更新,然后有选择地应用于正在运行的服务器。 这可能意味着不需要重新启动比您通常需要保持安全的时间更长。

如何检查我是否有 KernelCare 并且它是否有效? (或:检查 KernelCare 版本)

检查您的服务器是否使用 KernelCare 运行的最佳方法是查找它的主要 CLI 工具。 您可以使用以下 linux 命令执行此操作:

which kcarectl

如果在服务器上找到 CLI 工具,您将看到如下输出或非常类似的输出。

# 哪个 kcarectl
/usr/bin/kcarectl

如果未安装 CLI 工具,您将看到以下内容:

# 哪个 kcarectl
# 使用 Linux `which` 命令时,如果找不到可执行文件,将不会得到任何结果。 在这种情况下,这意味着 KernelCare 可能未激活或未安装在服务器上。

假设上述测试成功,您现在需要检查 KernelCare 的状态。 这将帮助您确定 KernelCare 是否处于活动状态以及有效版本是什么。 您可以使用以下命令执行此操作:

/usr/bin/kcarectl --info

结果将类似于以下内容:

[root@host ~]# /usr/bin/kcarectl –info
kpatch-state:已应用补丁
kpatch-for: Linux 版本 3.10.0-327.36.3.el7.x86_64 ([email protected]) (gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)) #1 SMP 2016 年 10 月 24 日星期一 16:09:20 UTC
kpatch-build-time:2016 年 11 月 7 日星期一 08:20:19
kpatch 描述:2;3.10.0-327.36.3.el7.x86_64

如您所见,输出提供了有关 KernelCare 状态的各种详细信息。 查看 kpatch 状态,我们可以看到热补丁正在工作并已启用。