- libvirt版本:libvirt-10.0.0
- qemu版本:qemu-8.2.0
在生产环境中,大多数的场景是 vmware 虚拟机迁移到 qemu 环境,一般是通过关机然后导出、导入磁盘镜像来实现。
如果要将 qemu 环境虚拟机迁移到 vmware 怎么办呢?要求业务中断时间尽可能短。
下面介绍一种思路,来实现类似热迁移的效果(实际并不是热迁移,内存没办法做到热迁移,只是将业务中断时间缩短到很小间隔)。
1. 实现原理
具体思路是通过对 qcow2 做外部快照,然后 convert 外部快照到 vmdk ,重复 n 次外部快照+convert,同时转换后的 vmdk 也保持着完整快照链,最后阶段进行停机,将最后的磁盘 convert 到 vmdk,启动 vmware 虚拟机。
2. 创建测试虚拟机 testvm
首先创建一个虚拟机 testvm, 此虚拟机有 2 块磁盘:vda 系统盘,vdb 数据盘。下面我们以 vdb 数据盘为目标来做 vmware vmdk磁盘的迁移(vda系统盘类似)。
3. 操作步骤
(1)启动虚拟机
(2)进入虚拟机,格式化 vdb磁盘,然后挂载,写入文件 1.txt
(3)在host上,为 vdb 磁盘创建外部快照 snap1
(4)上一步 data.qcow2 是只读 backing file 磁盘,现在我们可以安全的对这个磁盘进行转换 ( convert ) 操作了
(5)在进入虚拟机 创建 文件 2.txt
(6)在host上,为 vdb 磁盘创建外部快照 snap2
(7) 对 snap1.qcow2 进行转换 ( convert ) 操作
这里需要指定 backing file 为第4步convert 后的 data.vmdk
(8)至此, 我们 可以重复执行 5、 6、 7 步骤 一直创建 vmdk 的快照链
(9)最后验证我们生成的 vmdk快照链是否可用
通过 qemu-nbd 挂载到本地,然后再 mount 到指定路径下,可以看到我们之前创建的文件及写入文件的内容,经验证 vmdk 磁盘完整可用。
参考文档:
qemu-img 文档翻译: https://blog.jcix.top/2018-09-28/qemu_img_doc/
迁移原理整理—VMware纳管原理 :https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=117363