[openstack-dev] [Discussion] Different types of snapshots

Kashyap Chamarthy kchamart at redhat.com
Tue Jun 11 07:06:15 UTC 2013


Heya,
(You might want to grab a cup of coffee, it's a bit long read. Let's
see if I can hold attention :) )
Context:
--------
The word "snapshots" is quickly becoming meaningless, given vairous
contexts that it can be used. I'm writing this email to get some
understanding on how much OpenStack cares about snapshots (given you can
create/destroy/scale guest config on the fly).
Libvirt/QEMU snapshots refresher:
---------------------------------
In Libvirt/QEMU world, there are several flavours of snapshots possible.
 1) Internal Snapshots, can be further categorized as:
 1.1. Internal 'disk snapshot' -- {live/offline}
 1.2. Internal 'system checkpoint' -- {live}
 Single qcow2 file holds everything: original & its delta. The
 original file /must/ be a QCOW2 file. Pain point - The guest must be
 _paused_ for more than a couple of seconds while the snapshot is
 being taken.
 2) External Snapshots, can be further categorized as:
 2.1. External 'disk snapshot' -- {live/offline}. IOW: snapshot of the
 disk is saved in one file, and the delta since the snapshot is
 tracked in a new qcow2 file.
 NOTES:
 - Libvirt uses QEMU's 'transaction' command under the hood, when
 the guest is 'live.
 - Libvirt uses QEMU's 'qemu-img' command under the hood when the
 guest is 'offline'
 2.2. External 'system checkpoint' -- {live}. IOW: the guest's
 disk-state will be saved in one file, its RAM & device-state
 will be saved in another new file.
 Uses QCOW2 *overlays*: everytime a snapshot is taken, the current
 disk becomes a 'backing file' & a _new_ QCOW2 overlay is created to
 track the 'delta' (i.e. live changes). Original can be anything:
 block device, LVM, raw/qcow2 file, etc. Snapshot creation is
 instantaneous. Pain point: multiple files to track; revert/delete is
 a little tricky. However, this can be alleviated by
 merging/shortening 'snapshot chain' using libvirt/QEMU's block
 mechanisms -- "blockpull/blockcommit/blockcopy".
 3) 'system checkpoint' meaning -- it captures VM state and disk state.
 3.1. VM state: captures memory and device state (but not
 "disk" state).
Questions:
----------
>From the above, what kind of snapshots are relevant in the context of
OpenStack? Do people care much about them in cloud infrastructures?
 Currently, I've only played with "nova image-create", reading its
 code, it appears to use a combination of "virsh managedsave" + image
 conversion to create a new image.
 Then there's "cinder snapshot-create", which I'm yet to try out.
Very curious to hear your thoughts/comments.
All apologies (you could disregard this email) if this was already
discussed elsewhere. Please point me to it.
PS: I come from an understanding of libvirt/virsh/qemu land, still
learning my ropes here, please bear with me :)
Examples
--------
1/ Create a disk-only internal snapshot
 $ virsh snapshot-create-as f17vm1 snap1 snap1-desc
2/ Create external disk-only snapshot (while the guest is *running*)
 $ virsh snapshot-create-as f18-base snap1 "snap1-desc" \
 --disk-only --atomic
[or, more fine grained]
 $ virsh snapshot-create-as --domain f18-base \
 snap1 snap1-desc --disk-only \
 --diskspec vda,snapshot=external,file=/export/vmimages/sn1-of-f18-base.qcow2 \
 --atomic
3/ VM State (Save the guest's memory state to a file, and restore from
 the same state on next restart)
 $ virsh managedsave fedora18
4/ External system checkpoint -
http://kashyapc.fedorapeople.org/virt/external-system-checkpoint-snapshot.txt
-- 
/kashyap


More information about the OpenStack-dev mailing list

AltStyle によって変換されたページ (->オリジナル) /