"无需重启"内核补丁 - 以及为何您应该关注
随着 Linux 4.0 版本于 4 月 15 日发布,最受关注的新功能之一就是“无需重启”内核补丁。由于主要的发行版承诺在今年某个时候支持 4.0 内核及其功能(包括“无需重启”补丁),现在是时候了解一下这个功能实际上是做什么的,以及它将为您带来什么不同。
首先,它实际上意味着什么?嗯,这一次,这个功能的名称很好地描述了它的作用。在 Linux 4.0 之前的版本中,当内核通过补丁更新时,系统需要重启。
内核补丁发布的理由有很多,但修复安全漏洞是最常见的原因。这就是为什么尽快安装补丁非常重要。
与其他操作系统不同,Linux 能够更新系统的许多不同部分而无需重启,但内核是不同的。每个运行的进程都与内核紧密集成,因此在内核运行时更换内核部分是非常冒险的。
另一方面,重启计算机是令人厌烦的,在某些情况下,当正常运行时间很重要时,这可能是一个真正的问题。这就是为什么“无需重启”内核补丁一直是许多管理员的首要任务。
认识到这种需求,两家公司一直在努力开发两种不同的解决方案。Red Hat 一直在开发 kpatch,而 SUSE 一直在开发 kGraft。这两个程序都旨在完成相同的任务,但它们采用了不同的方法,并具有不同的优势。
Kpatch 冻结每个进程,然后将系统调用从旧的内核函数重新路由到新的、已打补丁的函数,然后再删除旧代码。因为它在一个扫荡式的移动中处理每个运行的进程,所以它运行得非常快——一到四十毫秒就完成了。但是,在此期间,进程被冻结,这意味着存在一些停机时间——仅仅是一秒钟的一小部分,但在某些情况下,这可能是不可接受的。
另一方面,kGraft 逐个处理每个线程,当它们发出系统调用时(无需先强制它们冻结),直到所有线程都运行已打补丁的代码。此时,补丁已完全安装,旧代码被替换。这个过程需要更长的时间才能完成补丁,但它在没有任何停机时间的情况下完成。
在分别从两个不同的角度解决了相同的问题之后,这两家公司于去年十月走到了一起。他们研究了如何将他们不同的方法融合在一起,而这种合并的结果已被推送到 4.0 版本的内核中。
因此,在描述了“无需重启”内核补丁是什么以及它是如何工作之后,大多数用户接下来会问的问题是“它有什么不同?”
对于桌面用户来说,这种差异相对微不足道。对于没有 4.0 的用户来说,安装内核补丁意味着重启系统,这意味着您必须保存您的工作并中断您的工作流程。这很烦人,并且可能会对您的生产力造成一个小小的影响。如果中型或大型办公室中的每个人都必须在同一天安装补丁,那么它对生产力的打击会更大。但是,这是一个相对较小的成本,并且值得确保安全。
另一方面,一些服务器和关键的实时应用程序绝不能在没有提前计划的情况下停机,即使是几分钟。当管理员需要保持系统安全并且发布补丁来修复新发现的安全漏洞时,这可能会很麻烦。在这种情况下,无需重启补丁就成了一个真正的福音。
但这并不意味着系统重启将永远消失。即使在安装了 Linux 4.0 内核的系统上,仍然会有安全更新需要重启,因为还有其他非内核组件可能需要打补丁,而其中一些组件需要重启作为过程的一部分。
因此,一些批评者声称,将如此多的精力和时间集中在无需重启补丁上,是错过了需要修复的真正目标——开发此功能的原因是为了避免重启系统的成本。也许开发人员应该尝试降低重启 Linux 系统的成本?