Volume Snapshots for Network-Backed Disks¶
Nova currently supports creating and deleting snapshots of file-backed Cinder volumes via libvirt’s snapshot mechanism. This work extends that capability to create and delete snapshots for network-backed disks in a similar fashion.
This enables more complete Cinder volume functionality for deployments using qemu network-backed volumes through a mechanism like libgfapi.
Nova does not support creating a snapshot via libvirt for a network-backed Cinder volume that is attached to an instance. Currently, attempting to snapshot a Cinder volume configured this way will result in a failed snapshot operation.
This is important for deployers who use qemu network-backed storage for Cinder volumes. (Typically for performance reasons.)
Nova needs to be able to construct a <domainsnapshot> XML entity with the required fields to snapshot a network-backed disk via libvirt.
Nova similarly needs to be able to pass in arguments for libvirt’s blockCommit and blockRebase operations to delete snapshots for network-backed disks. libvirt is adding support for a different style of parameters to the blockjob APIs to support this, which allows referencing an existing item in the disk snapshot change by index rather than by path name.
There is no alternative for deployers wishing to use Nova-assisted snapshots of Cinder-backed storage. Nova must be able to interact with libvirt to enable this functionality.
Data model impact¶
REST API impact¶
This work is used by the os-assisted-volume-snapshots extension APIs with no API-level changes.
Other end user impact¶
End-user impact is that Cinder volume snapshots now work when Nova is configured to use libgfapi for the GlusterFS Cinder driver. (qemu_allowed_storage_drivers=[‘gluster’])
Deleting (merging) a GlusterFS volume snapshot may be more efficient, particularly for simultaneous snapshot deletes for different volumes, as this work uses qemu direct storage access (via libgfapi) rather than a FUSE-mounted file system.
No direct performance impact within Nova itself.
Other deployer impact¶
This change is relevant when using the Cinder GlusterFS driver and Nova is configured with qemu_allowed_storage_drivers=[‘gluster’].
- Primary assignee:
Support for creating a volume snapshot of a network-backed disk
Support for deleting a volume snapshot of a network-backed disk - Parse backing chain information from libvirt’s domain XML - Pass new-style arguments to blockCommit and blockRebase
This functionality depends on libvirt changes which are currently targeted for libvirt 1.2.6. - The libvirt capability is detected without using the libvirt version.
The libvirt changes also require fixes within qemu (targeting 2.1).
Currently only relevant for GlusterFS Cinder deployments.
This should be tested via Tempest volume snapshot test cases. Since it is dependent on having a GlusterFS deployment this is not currently tested in the gate.
When third-party CI is enabled for the GlusterFS driver within Cinder, it should cover this.
Required libvirt changes: - https://www.redhat.com/archives/libvir-list/2014-June/msg00492.html
Required QEMU changes: - https://lists.gnu.org/archive/html/qemu-devel/2014-06/msg04058.html
Based on work done in - https://blueprints.launchpad.net/nova/+spec/qemu-assisted-snapshots
Patch series: https://review.openstack.org/#/c/78748/