[openstack-dev] Proposal for instance-level snapshots in Nova
Jon Bernard
jbernard at tuxion.com
Tue Jan 14 22:21:20 UTC 2014
* Mark Washenberger <mark.washenberger at markwash.net> wrote:
> On Mon, Jan 6, 2014 at 3:50 PM, Jon Bernard <jbernard at tuxion.com> wrote:
>
> > Hello all,
> >
> > I would like to propose instance-level snapshots as a feature for
> > inclusion in Nova. An initial draft of the more official proposal is
> > here [1], blueprint is here [2].
> >
> > In a nutshell, this feature will take the existing create-image
> > functionality a few steps further by providing the ability to take
> > a snapshot of a running instance that includes all of its attached
> > volumes. A coordinated snapshot of multiple volumes for backup
> > purposes. The snapshot operation should occur while the instance is in
> > a paused and quiesced state so that each volume snapshot is both
> > consistent within itself and with respect to its sibling snapshots.
> >
> > I still have some open questions on a few topics:
> >
> > * API changes, two different approaches come to mind:
> >
> > 1. Nova already has a command `createImage` for creating an image of an
> > existing instance. This command could be extended to take an
> > additional parameter `all-volumes` that signals the underlying code
> > to capture all attached volumes in addition to the root volume. The
> > semantic here is important, `createImage` is used to create
> > a template image stored in Glance for later reuse. If the primary
> > intent of this new feature is for backup only, then it may not be
> > wise to overlap the two operations in this way. On the other hand,
> > this approach would introduce the least amount of change to the
> > existing API, requiring only modification of an existing command
> > instead of the addition of an entirely new one.
> >
> > 2. If the feature's primary use is for backup purposes, then a new API
> > call may be a better approach, and leave `createImage` untouched.
> > This new call could be called `createBackup` and take as a parameter
> > the name of the instance. Although it introduces a new member to the
> > API reference, it would allow this feature to evolve without
> > introducing regressions in any existing calls. These two calls could
> > share code at some point in the future.
> >
> > * Existing libvirt support:
> >
> > To initially support consistent-across-multiple-volumes snapshots,
> > we must be able to ask libvirt for a snapshot of an already paused
> > guest. I don't believe such a call is currently supported, so
> > changes to libvirt may be a prerequisite for this feature.
> >
> > Any contribution, comments, and pieces of advice are much appreciated.
> >
> > [1]: https://wiki.openstack.org/wiki/Nova/InstanceLevelSnapshots
> > [2]: https://blueprints.launchpad.net/nova/+spec/instance-level-snapshots
>
>
> Hi Jon,
>
> In your specification in the Snapshot Storage section you say "it might be
> nice to combine all of the snapshot images into a single OVF file that
> contains all volumes attached to the instance at the time of snapshot." I'd
> love it if, by the time you get to the point of implementing this storage
> part, we have an option available to you in Glance for storing something
> akin to an Instance template. An instance template would be an entity
> stored in Glance with references to each volume or image that was uploaded
> as part of the snapshot. As an example, it could be something like
>
> "instance_template": {
> "/dev/sda": "/v2/images/some-imageid",
> "/dev/sdb": "<some url for a cinder volume-like entity>"
> }
>
> Essentially, this kind of storage would bring the OVF metadata up into
> Glance rather than burying it down in an image byte stream where it is
> harder to search or access.
>
> This is an idea that has been discussed several times before, generally
> favorably, and if we move ahead with instance-level snapshots in Nova I'd
> love to move quickly to support it in Glance. Part of the reason for the
> delay of this feature was my worry that if Glance jumps out ahead, we'll
> end up with some instance template format that Nova doesn't really want, so
> this opportunity for collaboration on use cases would be fantastic.
>
> If after a bit more discussion in this thread, folks think these templates
> in Glance would be a good idea, we can try to draw up a proposal for how to
> implement the first cut of this feature in Glance.
This sounds awesome. If there is a consensus for this feature, then I'm
happy to work with you on the proposal. I'll circle back once everyone
has had a chance to weight in and we reach agreement.
--
Jon
More information about the OpenStack-dev
mailing list