2014-04-08 21:51:41 |
Thang Pham |
bug |
|
|
added bug |
2014-04-08 21:51:49 |
Thang Pham |
cinder: assignee |
|
Thang Pham (thang-pham) |
|
2014-04-09 04:01:34 |
Thang Pham |
description |
Instance is not using the correct volume snapshot file after reboot.
Steps to recreate bug:
1. Create a volume
2. Attach volume to a running instance.
3. Take an online snapshot of the volume.
Note that the active volume used by the instance is now switched to volume-<uuid>.<snapshot-uuid>.
4. Shutdown the instance.
5. Start the instance.
If you invoke virsh dumpxml <instance>, you will see that it is re-attaching the base volume ( volume-<uuid>) to the instance and not the snapshot volume (volume-<uuid>.<snapshot-uuid>). The expected behavior is to have the snapshot volume re-attach to the instance.
This bug will cause data corruption in the snapshot and volume.
I believe the main reason for this happening is contained in nova. i.e. nova/virt/libvirt/volume.py. The LibvirtGlusterfsVolumeDriver.connect_volume() method does not know how to find the active volume file that is contained in volume-<uuid>.info. |
Instance is not using the correct volume snapshot file after reboot.
Steps to recreate bug:
1. Create a volume
2. Attach volume to a running instance.
3. Take an online snapshot of the volume.
Note that the active volume used by the instance is now switched to volume-<uuid>.<snapshot-uuid>.
4. Shutdown the instance.
5. Start the instance.
If you invoke virsh dumpxml <instance>, you will see that it is re-attaching the base volume ( volume-<uuid>) to the instance and not the snapshot volume (volume-<uuid>.<snapshot-uuid>). The expected behavior is to have the snapshot volume re-attach to the instance.
This bug will cause data corruption in the snapshot and volume.
It looks like the nova volume manager is using a stale copy of the block_device_mapping. The block_device_mapping needs to be refreshed in order for the updated volume snapshot to be used.
On power on, the nova manager (nova/compute/manager.py ) does:
1. start_instance
2. _power_on
3. _get_instance_volume_block_device_info
The structure for this method is:
def _get_instance_volume_block_device_info(self, context, instance, refresh_conn_info=False, bdms=None):
if not bdms:
bdms = (block_device_obj.BlockDeviceMappingList.
get_by_instance_uuid(context, instance['uuid']))
block_device_mapping = (
driver_block_device.convert_volumes(bdms) +
driver_block_device.convert_snapshots(bdms) +
driver_block_device.convert_images(bdms))
....
block_device_obj.BlockDeviceMappingList.get_by_instance_uuid() goes and queries the database to construct the bdms, which will contain stale data. |
|
2014-04-10 14:35:56 |
Nikola Đipanov |
bug task added |
|
nova |
|
2014-04-10 14:36:09 |
Nikola Đipanov |
nova: importance |
Undecided |
Medium |
|
2014-04-10 14:52:55 |
Thang Pham |
nova: assignee |
|
Thang Pham (thang-pham) |
|
2014-04-11 13:43:29 |
Mike Perez |
tags |
glusterfs |
drivers glusterfs |
|
2014-04-15 03:06:48 |
OpenStack Infra |
nova: status |
New |
In Progress |
|
2014-04-15 03:07:06 |
Thang Pham |
cinder: status |
New |
In Progress |
|
2014-04-21 14:26:35 |
Eric Harney |
bug task deleted |
cinder |
|
|
2014-04-21 14:26:53 |
Eric Harney |
tags |
drivers glusterfs |
drivers glusterfs libvirt |
|
2014-05-17 23:12:23 |
OpenStack Infra |
nova: status |
In Progress |
Fix Committed |
|
2014-06-02 17:07:27 |
Vish Ishaya |
tags |
drivers glusterfs libvirt |
drivers glusterfs icehouse-backport-potential libvirt |
|
2014-06-11 13:44:43 |
Thierry Carrez |
nova: status |
Fix Committed |
Fix Released |
|
2014-06-11 13:44:43 |
Thierry Carrez |
nova: milestone |
|
juno-1 |
|
2014-07-31 14:13:00 |
OpenStack Infra |
tags |
drivers glusterfs icehouse-backport-potential libvirt |
drivers glusterfs icehouse-backport-potential in-stable-icehouse libvirt |
|
2014-08-07 12:31:28 |
Chuck Short |
tags |
drivers glusterfs icehouse-backport-potential in-stable-icehouse libvirt |
drivers glusterfs in-stable-icehouse libvirt |
|
2014-08-07 12:32:03 |
Chuck Short |
nominated for series |
|
nova/icehouse |
|
2014-08-07 12:32:03 |
Chuck Short |
bug task added |
|
nova/icehouse |
|
2014-08-07 12:32:15 |
Chuck Short |
nova/icehouse: status |
New |
Fix Committed |
|
2014-08-07 12:32:15 |
Chuck Short |
nova/icehouse: milestone |
|
2014.1.2 |
|
2014-08-07 17:00:46 |
Chuck Short |
nova/icehouse: status |
Fix Committed |
Fix Released |
|
2014-09-23 10:15:07 |
Alan Pevec |
tags |
drivers glusterfs in-stable-icehouse libvirt |
drivers glusterfs libvirt |
|
2014-09-23 10:15:29 |
Alan Pevec |
nova/icehouse: importance |
Undecided |
Medium |
|
2014-09-23 10:16:11 |
Alan Pevec |
nova/icehouse: assignee |
|
Eric Harney (eharney) |
|
2014-10-16 08:29:40 |
Thierry Carrez |
nova: milestone |
juno-1 |
2014.2 |
|