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设备的。