嵌入式虚拟机迁移与实时更新技术解析
1. 虚拟机内存操作与脏页跟踪
除了虚拟机本身的内存访问操作,部分设备也会对内存进行写操作。以 virtio 块设备为例,当虚拟机发起块读取请求时,管理程序会将块数据写入指定的虚拟机内存。这种由管理程序发起的内存写操作不会触发为虚拟机提供的地址转换机制,从而绕过了现有的异常处理流程。
若虚拟机处于迁移状态,管理程序需要在 virtio 后端跟踪和处理这些内存写操作,记录脏页信息并恢复页表权限。由于 ARMv8 架构未提供脏页跟踪机制,该功能由管理程序实现。
目前支持迁移的虚拟机类型包括裸机应用、ramdisk Linux 和网络文件系统(NFS)Linux,支持迁移的设备类型有 vGIC、virtio 控制台和 virtio 网络。
2. 管理程序实时更新机制
传统的虚拟机迁移在最后数据传输时会停止虚拟机,引入毫秒级的停机时间,影响虚拟机任务执行。为解决此问题,设计并实现了实时更新机制,用于修复已知的管理程序漏洞或更新代码实现。与虚拟机迁移相比,实时更新无需跨设备进行数据迁移,迁移成本更低,既能提高管理程序的容错能力,又能确保关键虚拟机的实时性能。
实时更新机制中,旧管理程序作为数据提供者,新管理程序提供接收和存储数据的处理功能。主要流程如下:
1. MVM 通过超级调用发起实时更新请求,将新管理程序镜像存储在异常级别 2(EL2)堆空间,并向其他核心发送处理器间中断(IPI),告知新的实时更新操作正在进行。
2. 核心 0 打包数据地址后,管理程序调用汇编函数 live update 跳转到新镜像的相应入口。
3. 核心
超级会员免费看
订阅专栏 解锁全文
804

被折叠的 条评论
为什么被折叠?



