系统极客一直在努力
专注操作系统及软件使用技能

Linux 或将迎来更智能的「无缝内核更新」机制

最近,Linux 内核社区有了一个挺有意思的新进展:Google 工程师 Pasha Tatashin 提交了一系列名为「Live Update Orchestrator」的新补丁。这套补丁基于之前广受关注的 KHO v5 补丁系列,引发了大家的热议。

什么是 Live Update Orchestrator?

新推出的 Live Update Orchestrator (LUO) 子系统旨在最大限度地减少系统停机时间。它采用状态机机制,在设备状态跨越重启时提供保存功能,尤其对动态云环境非常有用。毕竟,在云场景中,即便是短暂的中断也可能带来不小的影响。

根据开发者的介绍,这个机制通过多个状态协调工作,包括「normal」(正常状态)、「prepared」(准备状态)和「updated」(更新完成状态)等。它还定义了一套 API 回调接口,方便其他内核子系统(如 KVM、IOMMU、中断、新的 dev_liveupdate 设备层以及内存管理模块等)无缝集成到动态更新流程中。

此外,LUO 子系统提供了sysfs接口,用于控制整个更新流程,路径为/sys/kernel/liveupdate/{state, prepare, finish}。具体流程如下:

  1. normal:系统在默认状态下运行,没有进行任何动态更新操作。
  2. prepare:往/sys/kernel/liveupdate/prepare文件写入1时,会触发LIVEUPDATE_PREPARE回调,将系统子模块转入过渡阶段的prepared状态。
  3. updated:在新内核接手后,整个系统进入 updated 状态,设备和子系统开始恢复功能。
  4. finish:最后,写入/sys/kernel/liveupdate/finish,触发LIVEUPDATE_FINISH回调。这一步会将系统从 prepared 状态完全恢复到 normal 状态,回归正常运行。

实现困难与社区挑战

不过,要把这样重大的变更融入到 Linux 内核显然并非易事。Linux 内核核心开发者之一的 Greg Kroah-Hartman 就对这一提案表现出了保留态度。他明确表态,补丁在获得正式审查之前,需要提供更多有说服力的证明。

  • Greg 表示,他希望看到至少 3 个总线子系统(例如 PCI 总线、USB、I2C 等)的真实、完整、可运行的补丁案例,才能认真考虑对 LUO 进行评估。
  • 此外,Greg 在 Linux 内核开发邮件列表中还指出,动态更新可能涉及大量设备,因此必须配套完善的用户空间工具来进行管理,才能确保整个流程顺利进行。

总的来说,LUO 的提出无疑是一个「大胆的尝试」,但未来要走的路肯定不会一帆风顺。它最终能否被 Linux 内核接受,还需要开发者们提交更多实际案例和补丁,来验证其可行性。如果你想了解更多详细信息,可以参考补丁公告

赞(0)

评论 抢沙发