Difference between revisions of "EfficientVolumesFromImage"
Line 37: | Line 37: | ||
== Design == | == Design == | ||
− | [[Image: | + | [[Image:cow_volume_from_image.png]] |
== Implementation == | == Implementation == |
Revision as of 21:57, 16 February 2013
- Launchpad Entry: NovaSpec:efficient-volumes-from-images
- Created: 03 April 2012
- Contributors: Josh Durgin, Tommi Virtanen
Summary
Make volume (and instance) creation fast if Nova volumes and Glance use the same storage backend, and the storage backend supports it.
Release Note
Instance and volume creation can take advantage of underlying storage to be more efficient in space and time.
Rationale
Storage systems offer a number of features that can save space and time when storing both images and volumes:
- features like copy-on-write can be used to make volume (and instance creation) near-instantaneous and save space
- deduplication can happen on images and volumes together, reducing hardware requirements
- administrators only have to maintain one storage system
User stories
User creates a bunch of new instances that have no ephemeral disks, but are all based on the same image. This happens very quickly due to a shared underlying storage system, and requires very little extra space.
Assumptions
Depends on create-volume-from-image and a way to query Glance about the backing store of an image.
Design
Implementation
There are two parts that are volume backend dependent:
- determining whether a given image is stored on the same backend as volumes
- efficiently creating a volume based on the image
These can both be optional volume driver methods - something like `def cloneable(image_info)` and `def clone(image_info, volume_name)` - if they aren't implemented, or cloneable returns false, fallback to the open/write/close api from create-volume-from-image.
Migration
No database or core API changes.
Test/Demo Plan
This need not be added or completed until the specification is nearing beta.
BoF agenda and discussion
Use this section to take notes during the BoF; if you keep it in the approved spec, use it for summarising what was discussed and note any options that were rejected.