qemu版本不一致造成热迁移失败问题

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


你可能感兴趣的:(qemu,运维)