3.9.3 完整复制磁盘镜像的动态迁移
1. 一、整体架构图
1.1. 一、源宿主机配置
在源宿主机上,拷贝一份原始 qcow2 文件,并启动虚拟机。命令行如下:
# cp Loongnix-server-20-loongarch64.qcow2 migrate-test-full-copy.qcow2
# qemu-system-loongarch64 \
-name 'avocado-vt-vm1' \
-cpu 'Loongson-3A5000' \
-machine loongson7a \
-m 2048 \
-smp 2 \
-bios /usr/share/qemu/loongarch_bios.bin \
-boot c -d int \
-drive file=migrate-test-full-copy.qcow2,if=virtio \
-enable-kvm \
-vga qxl \
-vnc :0 \
-net nic -net tap \
-serial stdio\
-monitor telnet:localhost:4444,server,nowait
1.2. 二、目的宿主机配置
在目的宿主机上,创建与源宿主机相同 qcow2 格式的虚拟机镜像文件,并使用 “-incoming” 参数来启动虚拟机使其处于迁移监听状态。命令行如下:
# qemu-img create -f qcow2 migrate-test-full-copy.qcow2 50G
# qemu-system-loongarch64 \
-name 'avocado-vt-vm1' \
-cpu 'Loongson-3A5000' \
-machine loongson7a \
-m 2048 \
-smp 2 \
-bios /usr/share/qemu/loongarch_bios.bin \
-boot c -d int \
-drive file=migrate-test-full-copy.qcow2,if=virtio \
-enable-kvm \
-vga qxl \
-vnc :0 \
-net nic -net tap \
-serial stdio\
-monitor telnet:localhost:4444,server,nowait
-incoming tcp:0:6666
1.3. 三、迁移
在源宿主机的 QEMU monitor 中,运行 “migrate -b tcp:kvm-host2:6666” 命令,即可进行动态迁移( “-b” 表示 完整的磁盘拷贝)。在迁移过程中,还有实时的迁移百分比显示,提示为 “Completed 100 %” 即表示迁移完成。
# telnet localhost 4444
Trying ::1...
Connected to localhost.
Escape character is '^]'.
QEMU 3.1.0 monitor - type 'help' for more information
(qemu)
(qemu) migrate -b tcp:10.20.42.197:6666
Completed 100 %
与此同时,目的宿主机上启动迁移监听状态的命令行所在标准输出中,也会提示正在传输的磁盘镜像百分比。当传输完成时也会提示 "Completed 100 %", 如下:
# qemu-system-loongarch64 \
-name 'avocado-vt-vm1' \
-cpu 'Loongson-3A5000' \
-machine loongson7a \
-m 2048 \
-smp 2 \
-bios /usr/share/qemu/loongarch_bios.bin \
-boot c -d int \
-drive file=migrate-test.qcow2,if=virtio \
-enable-kvm \
-vga qxl \
-vnc :0 \
-net nic -net tap \
-serial stdio\
-monitor telnet:localhost:4444,server,nowait
-incoming tcp:0:6666
Receiving block device images
Completed 100 %
至此,基于相同后端镜像的磁盘增量动态迁移就已经完成了。与磁盘增量的动态迁移相比,完整复制磁盘镜像的的动态迁移传输的文件比较大,耗时较长,使用场景较少。