开发者社区> 问答> 正文

阿里云虚拟化热升级技术的虚拟机嫁接是什么?

阿里云虚拟化热升级技术的虚拟机嫁接是什么?

展开
收起
令人无语的八阿哥 2021-11-26 15:34:48 4053 0
1 条回答
写回答
取消 提交回答
  • 在KVM 上,一个QEMU 进程代表一个虚拟机。虚拟机包括内存、虚拟CPU、存储、网卡等,都是由QEMU 进程来分配和管理的。将一个虚拟机从前面提到的kvm0 迁移到kvm1 上,本来可以使用本地热迁移技术,不过这样就需要两份相同大小的虚拟机内存,对于内存数量很大的虚拟机而言,会浪费不少内存资源。

    在虚拟化热升级技术中,通过“虚拟机嫁接”将虚拟机的内存和内部状态从一个KVM 实例嫁接到另一个KVM 实例之上,如下图所示。我们先将虚拟机的内存标为reserved 状态,然后派生一个新的QEMU 子进程,调用QEMU 中的savevm_state 函数保存原来虚拟机的内部状态并暂停虚拟机运行,之后在新的QEMU 子进程中调用execve() 函数加载升级后的QEMU 程序文件,并通过loadvm_state 函数恢复虚拟机的状态。

    在这个过程中,但凡有任何的失败,系统都会让最初暂停的QEMU 进程重新恢复原来的状态。在具体实现中,需要让新的QEMU 进程在execve() 函数执行后, 能够保留原虚拟机的内存。由于在默认情况下execve() 函数并不支持内存的保留, 所以我们在宿主机的Linux 内核中对mmap 函数进行了简单的改造,添加了MAP_ KVM_RESERVED 这样一个专用于QEMU/KVM 热升级的标志。

    image.png

    资料来源:《弹性计算—无处不在的算力》

    2021-11-26 17:13:36
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
虚拟化异构计算产品发布 立即下载
基于虚拟化的CI CD流程与基础架构建设 立即下载
移动虚拟化:360分身大师那些事 立即下载