As discussed at our nova meetings, reorganize the juno specs into three directories: - proposed: things proposed which weren't approved - approved: things we approved but didn't implement - implemented: things approved and implemented The first I suspect is the most controversial. I've done this because I worry about the case where a future developer wants to pick up something dropped by a previous developer, but has trouble finding previous proposed specifications on the topic. Note that the actual proposed specs for Juno are adding in a later commit. Change-Id: Idcf55ca37a83d7098dcb7c2971240c4e8fd23dc8
4.2 KiB
Volume Snapshots for Network-Backed Disks
https://blueprints.launchpad.net/nova/+spec/libvirt-volume-snap-network-disk
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.
Problem description
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.)
Proposed change
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.
Alternatives
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
None
REST API impact
This work is used by the os-assisted-volume-snapshots extension APIs with no API-level changes.
Security impact
None
Notifications impact
None
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'])
Performance Impact
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'].
Developer impact
None
Implementation
Assignee(s)
- Primary assignee:
-
eharney
Work Items
- 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
Dependencies
- 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.
Testing
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.
Documentation Impact
None
References
- Required libvirt changes:
- Required QEMU changes:
- Based on work done in
- Patch series: https://review.openstack.org/#/c/78748/