欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Linux 4.0 不再需要重启

程序员文章站 2022-05-28 15:53:28
linux 4.0 里,你可能再也不需要重启你的操作系统。 在大多数的服务器或者数据中心里,喜欢用linux的一个原因是你不需要频繁的进行重启操作。诚然,某些关键性的补丁...

linux 4.0 里,你可能再也不需要重启你的操作系统。

在大多数的服务器或者数据中心里,喜欢用linux的一个原因是你不需要频繁的进行重启操作。诚然,某些关键性的补丁必须要进行重启,但你也可以等到数月后再做此操作。现在,得益于 linux 内核的最新更新 你也许可以数年间都不用重启。

感谢 ksplice 项目,使得这一特性在2009年就可以实现。此项目在对原始和打过补丁的内核进行比较后,使用一个定制的内核模块将新的代码加入到运行内核中。在支持ksplice的内核中,每个将被修补的功能都携带有一套特殊标志用以进行区分。ksplice进程会监视正在修补该函数的代码是不是当前不在使用,当当,打上补丁,你的服务器上继续运行。

oracle 在 2011 年收购了 ksplice 项目,并将其作为 rhel 的一项可选服务,使其应用于它自己的oracle linux 中(一个 rhel(red hat enterprise linux ) 的克隆版本)。这将此项技术隔离于其他企业版和服务器版 linux 之外。

后来 kemelcare 为大部分企业发行版 linux 发布了一项提供非启动式补丁服务。此程序作为专利软件,只能通过按月支付来享有此服务。这从而很难满足大多数linux系统管理员。

所以,red hat 和 suse 开始着手完全开源的为 linux 安装严重补丁的非重启方案。red had 的项目命名为 kpatch, suse的项目命名为 kgraft.

两个公司采用了不同的途径。kpatch 发布了一个 stop_machine() 命令。之后,它着眼于现有的栈处理去使用ftrace,如果打补丁可以被做得很安全,它会重定向运行着的代码到补丁函数,而后就删除现在过时的代码。

比过去好的是,数据中心被运行在世界各处,但是它们中的许多都需要一个21世纪式的重启。今天的数据中心必须更有效率,更有鲁棒性和灵活性,这超过以往任何时候。我们检查怎样才能运行好你的数据中心,与之相对的是外包到一个云或者一个服务提供商,或是采取混合的方式。

kgraft 一直使用ftrace,尽管它是工作在线程级的。当一个老的函数被调用,它会定位到线程的一个点,然后将其切换到新的函数。

虽然最终结果相同,即操作系统在打补丁的时候保持运行,但还是有显著的性能差异的。当kgraft可能花费数分钟的时候,kpatch可以只需要1到40毫秒,但他们从不会停机。
在2014年10月召开的linux 开发者大会上,两个小组合二为一并且开始致力于联合最好的程序使linux打补丁时不再重启。实际上,他们最终是把kpatch和kgraft都丢进了linux内核。

jiri kosina,一位suse软件工程师和linux内核开发者解释说,linux内核的热补丁将会“为函数提供一个基本基础设施”  热补丁(例如:代码重定向),包括为了包含实际补丁的内核模块的api(应用程序接口),和为了在用户空间可以操作补丁的api/abi(应用二进制接口),这是“相对简单和简约的,因为它尽可能多的利用了已有的内核基础(名为ftrace)。它也是自包含的,在某种意义上说,它不在任何其他的内核子系统中调用自身(它甚至不接触其他任何代码)”

linux 4.0 rc 版现在已经放出,kosina 声称:”现在实施的x86架构只是作为一个参考架构,对于powerpc, s390 和 arm 的支持工作已经在进行中了“。确实,对于这些架构的支持源代码已经在 live patching git code 上了。
简单的代码仅仅只是开始,你的发行版将通过补丁来支持和使用它。随着 red hat 和 suse 的支持,live 补丁将很快默认在所有商业linux发行版中。

以上所述就是本文的全部内容了,希望大家能够喜欢。