yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #53470
[Bug 1589457] Re: live-migration fails for volume-backed instances with config-drive type vfat
I believe that this bug is valid and we might corrupt volume-backed VMs
when libvirt version is <=1.2.17.
So the bug starts here
https://github.com/openstack/nova/blob/660ecaee66ccab895b282c2ed45c95c809ad6833/nova/virt/libvirt/driver.py#L5592
- for volume backed VMs dest_check_data.is_volume_backed will be True,
but "not bool(jsonutils.loads(self.get_instance_disk_info(instance,
block_device_info)))" will return False and in the result whole method
will return that block storage is not shared.
Now we have 3 cases:
* Libvirt version is >= 1.2.17 and tunnelling is OFF. This causes block live migration of volume-backed VM with config drive attached. It works perfectly fine, because we have implemented support for selective disk migration, so that nova will exclude volume from list of devices that needs to be migrated to destination. This is because volume is shared and there is really no need to migrate it:
https://github.com/openstack/nova/blob/660ecaee66ccab895b282c2ed45c95c809ad6833/nova/virt/libvirt/driver.py#L6059
and
https://github.com/openstack/nova/blob/660ecaee66ccab895b282c2ed45c95c809ad6833/nova/virt/libvirt/driver.py#L6068
This even helps with live migration of volume-backed VMs with local config drive, because it finally works. Libvirt takes care of copying config drive to destination... but it works by mistake.
* Libvirt version is >= 1.2.17 and tunnelling is on. This again causes
block live migration of volume-backed VM with config drive attached.
Because libvirt does not support selective disk migration with
tunnelling it will be refused because this feature is not supported, not
because live migration with local disk is not supported.
* Libvirt version is < 1.2.17. This causes volumes to be copied to themselves during live migrations. Nova again incorrectly calculates live migration type and fire offs block live migration of volume-backed VMs. Unfortunately condition to exclude volumes from a list of devices that should be migrated to destination is not met:
https://github.com/openstack/nova/blob/660ecaee66ccab895b282c2ed45c95c809ad6833/nova/virt/libvirt/driver.py#L6048
Because of this volumes are not skipped during live migration and therefore we again hit this bug: https://bugs.launchpad.net/nova/+bug/1398999
Please correct me if I'm wrong, but I believe we are hitting #1398999
once again due to wrong calculation of migration type.
** Changed in: nova
Status: Invalid => Won't Fix
** Changed in: nova
Status: Won't Fix => Triaged
** Changed in: nova
Assignee: Timofey Durakov (tdurakov) => (unassigned)
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1589457
Title:
live-migration fails for volume-backed instances with config-drive
type vfat
Status in OpenStack Compute (nova):
Triaged
Bug description:
Description
===========
Volume-backed instances fails to migrate when config-drive is enabled(even with vfat).
Migration fails with exception.InvalidSharedStorage during check_can_live_migrate_source method execution https://github.com/openstack/nova/blob/545d8d8666389f33601b0b003dec844004694919/nova/virt/libvirt/driver.py#L5388
The root cause:
https://github.com/openstack/nova/blob/545d8d8666389f33601b0b003dec844004694919/nova/virt/libvirt/driver.py#L5344 - flags is calculated incorrectly.
Steps to reproduce
==================
1. use vfat as config drive format, no shared storage like nfs;
2. boot instance from volume;
3. try to live-migrate instance;
Expected result
===============
instance migrated successfully
Actual result
=============
live-migration is not even started:
root@node-1:~# nova live-migration server00 node-4.test.domain.local
ERROR (BadRequest): Migration pre-check error: Cannot block migrate instance f477e6da-4a04-492b-b7a6-e57b7823d301 with mapped volumes. Selective block device migration feature requires libvirt version 1.2.17 (HTTP 400) (Request-ID: req-4e0fce45-8b7c-43c0-90e7-cc929d2d60a1)
Environment
===========
multinode env, without file based shared storages like NFS.
driver libvirt/kvm
openstack branch stable/mitaka,
should also be valid for master.
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1589457/+subscriptions
References