内核补丁 “无需重启系统”—你不得不看!
4月15日,随着 Linux4.0 版本的发布,版本中的新功能“ ‘无需重启’内核补丁机制”成为了一个热门话题。加上主流发行版本承诺将在今年的某个时间支持4.0内核以及它的新功能(包括“无需重启”补丁机制)。现在正是一个好时机来看看这些新功能做了什么以及它将给你带来什么样不同的体验?
首先,这到底意味着什么?好吧,这是第一次,也是第一个,通过它的命名就能知道它做的十分出色的新功能。在 Linux4.0 之前的版本,当内核通过补丁来升级时,系统都必须要重启。
发布内核补丁有着各种各样的原因,但是最常见的原因还是修补系统漏洞。这也是为什么及时安装补丁是如此的重要。
和其他操作系统不同的是, Linux 能够更新系统中许多不同的部分而无需重启,但内核更新却是不同的,每一个进程的运行都与内核紧密相连,所以在运行之中切断部分内核是一个非常冒险的举动。
另一方面,重启电脑是一件令人抓狂的事情。在某些特殊的时刻,虽然计算机需要重启,但是你必须得让它保持运行。这就是为什么“ ‘无需重启’内核补丁机制”成为很多用户的当务之急。考虑到这个需求,两家公司都在努力寻找各自不同的解决方案。红帽一直致力于 kpatch 项目,而 SUSE 则一直在为 kGraft 项目而努力。这些程序都是为同一个使命而生,但他们却选择了不同的方法并有着各自的长处。
Kpatch 会暂停任何的进程,而后在移除旧代码之前将系统调用从旧的核函数变更到新的补丁函数。因为所有进程运行将以一个非常快的速度完成——1到40毫秒。然而,在这期间程序是被冻结住的,这意味着会出现极短的只有几分之一秒的 down机时间,但是在有些特定的情况下,这依然是不可接受的。
KGraft, 在另一方面,依次地处理每一个线程,因为他们使得系统调用直到所有的线程都运行补丁代码。在这个时候,补丁得以完整的安装而旧的代码被移除。这需要更多的时间来完成补丁的过程,但是它没有 down 机时间。
从两个不同的角度分别的解决了同一个问题之后,这两家公司在去年的十月份走到了一起,他们一直致力于把两种不同的方法融合在一起。而融合的结果则被应用到了内核4.0版本之中。所以,在知道了什么是“ ‘无需重启’内核补丁机制”和它的工作原理之后,下一个大多数用户都会问的问题就是“它将带来了什么样的改变”
对于桌面用户来说,这些改变相对来说微不足道。对于那些没有4.0版本的用户来说,安装一个内核补丁意味着必须重启系统,在这之前你必须保存你的工作,但这会打乱你的工作流程,让你神烦,并有可能成为你工作中的一个小插曲。如果一个中等大小或者大的办公室的所有员工都得在同一天安装补丁的话,这会对生产效率的提高产生很大的打击。所以,相比之下,新功能成本非常低并能够确保安全,这是非常值得的。
另一方面,一些服务器和关键实时应用在没有事先安排的情况下是不允许被占用的,哪怕只有短短的几分钟。所以在这些时候,用户需要安装补丁修复系统漏洞来确保系统安全便成了一个永远的痛。此时, “ ‘无需重启’内核补丁机制”就成了用户的福音。
但这并不意味着系统重启已经成为一个过去式,即使是在 Linux4.0 内核系统中,也将会有需要重启的安全更新,因为有的非内核部件安装补丁是需要重启的。
一些批评者因此声称,在“ ‘无需重启’内核补丁机制”上花费如此多的时间和精力使得人们忘记了那些真正需要努力解决的实际目标。开发“ ‘无需重启’内核补丁机制”是为了避免重启系统带来的损失,反过来想,也许开发者应该想想如何降低重启系统的成本。
原文链接:http://www.linuxjournal.com/content/no-reboot-kernel-patching-and-why-you-should-care