1、查看 nova-compute 迁移失败log
2018 - 01 - 16 20 : 44 : 20.362 12778 ERROR
nova.virt.libvirt.driver [req-0ca0ebd9-7cda-465a-b17e-85cc27603ae5 e35986cb7a5b46e2ab7f3941e2776373 ddcca2166db24766ad77aacbb6303f3f - - -] [instance: 31a6a6da-50dd-490f-90b4-62c91d54a2db] Live Migration failure: internal error: qemu unexpectedly closed the
monitor: 2018 - 01 -16T12: 43 : 52 .473918Z
qemu-kvm: -chardev pty,id=charserial0,logfile=/dev/fdset/ 2 ,logappend=on: char device
redirected to /dev/pts/ 1 (label
charserial0)
2018 - 01 -16T12: 43 : 55 .951735Z
qemu-kvm: virtio-net: saved image requires TUN_F_UFO support
2018 - 01 -16T12: 43 : 55 .951769Z
qemu-kvm: Failed to load virtio-net-device:tmp
2018 - 01 -16T12: 43 : 55 .951775Z
qemu-kvm: Failed to load virtio-net:virtio
2018 - 01 -16T12: 43 : 55 .951781Z
qemu-kvm: error while loading
state for instance 0x0 of
device '0000:00:03.0/virtio-net'
2018 - 01 -16T12: 43 : 55 .953751Z
qemu-kvm: warning: TSC frequency mismatch between VM ( 2099998 kHz)
and host ( 1699998 kHz),
and TSC scaling unavailable
2018 - 01 -16T12: 43 : 55 .953905Z
qemu-kvm: warning: TSC frequency mismatch between VM ( 2099998 kHz)
and host ( 1699998 kHz),
and TSC scaling unavailable
2018 - 01 -16T12: 43 : 55 .954026Z
qemu-kvm: warning: TSC frequency mismatch between VM ( 2099998 kHz)
and host ( 1699998 kHz),
and TSC scaling unavailable
2018 - 01 -16T12: 43 : 55 .954115Z
qemu-
|
从以上log可以粗略看出是需要TUN_F_UFO的支持,这是什么鬼?
2、于是查看两边qemu版本,发现只有小版本号不一样,大版本号是一样的。这个竟然还会造成热迁移失败。
源主机qemu版本:qemu-kvm-ev-2.9.0-16.el7_4.8.1.x86_64
目的主机qemu版本:qemu-kvm-ev-2.9.0-16.el7_4.13.1.x86_64
3、卸载qemu ,重新安装qemu
rpm
-e qemu-kvm-common-ev qemu-kvm-ev --nodeps
rpm
-e qemu-img-ev --nodeps
rmmod
vhost_net
rmmod
vhost
rmmod
tun
rmmod
tap
yum
install qemu-kvm-common-ev- 2.9 . 0 - 16 .el7_4. 8.1 .x86_64
qemu-kvm-ev- 2.9 . 0 - 16 .el7_4. 8.1 .x86_64
|
统一为相同的版本号的qemu
4、重新热迁移,结果还是报相同的错误,这就绝望了。于是reboot重启物理机
5、重启完毕后,热迁移成功
源主机的 tun.ko 默认支持TUN_F_UFO。目的主机tun.ko没有, 这就是QEMU中止live migration的原因。 导致在热迁移时不能改变正在运行的virtio-net。
tun.ko 是从qemu中把网络包转发给tap设备的。