libvirt: nova assumed dest emultor path is the same as source and fails to migrate if this is not true.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Triaged
|
Low
|
Unassigned |
Bug Description
Description
===========
live migartion between compute nodes of different distors
fails due to asstion that the emulator path on dest is
the same as the source compute node. In past releases
it was acidentally posable to migrate between ubuntu and centos
host because the qemu-kvm binary was packaged in the same location.
in centos 7.5 and ubuntu 16.04 this is nolonger true.
Steps to reproduce
==================
deploy a multinode devestack with one ubuntu node and one centos node.
configure ssh keys and the other normal steps for live migration
and boot a vm on one host. then attempt to live migrate the vm.
Expected result
===============
live migration succeds as it did when the emulator paths were the same.
Actual result
=============
migration fails as the emulator path of the source is used to invoke the
emulator on the destination node resulting in a file not found error.
Environment
===========
1. Rock RC1 nova sha: afe4512bf66c89a
the exact version is not important as i belive we have alway
had the same behavior.
2. Which hypervisor did you use?
libvirt with kvm
2. Which storage type did you use?
boot form volume with default devstack lvm cinder backend.
3. Which networking type did you use?
ovs
Logs & Configs
==============
Aug 13 22:04:56 devstack2 nova-compute[1720]: Traceback (most recent call last):
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib/
Aug 13 22:04:56 devstack2 nova-compute[1720]: timer()
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib/
Aug 13 22:04:56 devstack2 nova-compute[1720]: cb(*args, **kw)
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib/
Aug 13 22:04:56 devstack2 nova-compute[1720]: waiter.
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib/
Aug 13 22:04:56 devstack2 nova-compute[1720]: result = function(*args, **kwargs)
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/opt/stack/
Aug 13 22:04:56 devstack2 nova-compute[1720]: return func(*args, **kwargs)
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/opt/stack/
Aug 13 22:04:56 devstack2 nova-compute[1720]: LOG.error("Live Migration failure: %s", e, instance=instance)
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib/
Aug 13 22:04:56 devstack2 nova-compute[1720]: self.force_
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib/
Aug 13 22:04:56 devstack2 nova-compute[1720]: six.reraise(
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/opt/stack/
Aug 13 22:04:56 devstack2 nova-compute[1720]: bandwidth=
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/opt/stack/
Aug 13 22:04:56 devstack2 nova-compute[1720]: destination, params=params, flags=flags)
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib/
Aug 13 22:04:56 devstack2 nova-compute[1720]: result = proxy_call(
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib/
Aug 13 22:04:56 devstack2 nova-compute[1720]: rv = execute(f, *args, **kwargs)
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib/
Aug 13 22:04:56 devstack2 nova-compute[1720]: six.reraise(c, e, tb)
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib/
Aug 13 22:04:56 devstack2 nova-compute[1720]: rv = meth(*args, **kwargs)
Aug 13 22:04:56 devstack2 nova-compute[1720]: File "/usr/lib64/
Aug 13 22:04:56 devstack2 nova-compute[1720]: if ret == -1: raise libvirtError ('virDomainMigr
Aug 13 22:04:56 devstack2 nova-compute[1720]: libvirtError: Cannot check QEMU binary /usr/libexec/
tags: | added: libvirt |
set status to traige and importance to low.
as far as i am aware this is still the case however i found this why testing live migration and trying to break it and no one
has reported this in produciton or brought it up since i filed this almost a year ago so its a low priority to fix.