内核代码库 Linux将于二月初发布的 6.19 版本基于 6.19 内核,它使用了 LUO(实时更新协调器)子系统的代码。LUO 子系统由 Google 开发,用于在实时模式下更新内核,而无需物理重启。该子系统基于 KHO(内核执行器切换)机制,该机制此前已添加到 6.16 内核中,它允许从旧内核启动新内核,而不会丢失系统状态。
实时更新协调器 (LUO) 能够在不中断系统运行或丢失系统、设备和进程状态的情况下,实现完整的重启和内核更新。除了内核更新协调器 (KHO) 的功能外,LUO 子系统还能保存设备和 RAM 的状态,并确保与 DMA 和中断处理相关的操作的连续性。在切换到新内核之前,系统会保留这些状态;在新内核激活之后,系统会恢复这些状态,而不会中断系统和用户空间应用程序执行的持续设备操作。
新补丁系列的一个特点是能够保存 memfd 文件描述符,以便在重启之间保持内存中重要数据的状态,例如 RAM 的内容。 虚拟机快速更新被认为是该子系统的主要应用领域。 服务器 利用基于 KVM 虚拟机管理程序的虚拟化系统,可以消除安全性和稳定性问题,同时最大限度地减少虚拟机停机时间。谷歌已在其生产环境中应用了这项技术。
与 livepatch、Ksplice、kpatch、kGraft 和其他热补丁机制不同,新的子系统不仅限于将单个补丁应用到正在运行的内核;它允许完全替换内核。与 kexec 不同,LUO 子系统在重启后会保留设备和内核子系统的状态,而 kexec 仅作为引导加载程序,启动新内核并进行完整的系统重新初始化(相当于重启,但不会将控制权移交给固件)。
来源: opennet.ru
