[libvirt-users] Virsh snapshots

Hello, I am working on my PhD thesis and it would be really helpfull if someone could advise me, whether can Virsh create snapshots of VMs using copy-on-write. Thanks for reply. Juraj

On 12/02/2013 05:04 PM, Juraj Melo wrote:
Hello,
I am working on my PhD thesis and it would be really helpfull if someone could advise me, whether can Virsh create snapshots of VMs using copy-on-write.
You might want to describe a little bit more what you want to accomplish, because, libvirt already has some advanced snapshotting mechanisms. . Here's some info about libvirt snapshots: A brief introduction of different *flavours* of snapshots (& terminology): 1) Internal Snapshots, these can be: 1.1. Internal 'disk snapshot' -- {live/offline} 1.2. Internal 'system checkpoint' snapshot -- {live} With Internal Snapshots, a single qcow2 file holds everything: original & its delta. The original file /must/ be a QCOW2 file. NOTE: 'system checkpoint' meaning -- it captures VM state and disk state. Where VM state indicates: it captures memory and device state (but not "disk" state). 2) External Snapshots, these can be: 2.1. External 'disk snapshot' -- {live/offline}. i.e: snapshot of the disk is saved in one file, and the delta since the snapshot is tracked in a new qcow2 file. 2.2. External 'system checkpoint' -- {live}. i.e: the guest's disk-state will be saved in one file, its RAM & device-state will be saved in another new file. If you want to read more about overlays with examples (and reducing snapshot chains, here's more information than ever :) -- http://kashyapc.fedorapeople.org/virt/lc-2012/snapshots-handout.html Getting started =============== If you just want to get started w/ snapshotting guests, here's how I do. I use external live snapshots, -- fastest (more on it further below): (1) List the block device associated with a guest. $ virsh domblklist f19-base Target Source --------------------------------------------- vda /export/vmimages/f19-base.qcow2 $ (2) Create external disk-only snapshot (while the guest is *running*). $ virsh snapshot-create-as --domain f19-base snap1 snap1-desc \ --disk-only \ --diskspec vda,snapshot=external,file=/export/vmimages/overlay1-of-f19-base.qcow2 \ --atomic Domain snapshot snap1 created $ NOTE-1: Once the above command is issued, the original disk-image of f19-base will become the backing_file & a new overlay image is created to track the new changes. Here on, libvirt will use this overlay for further write operations(while using the original image as a read-only backing_file). NOTE-2: You can also use a simpler command-line like below, but, you cannot specify the name & location of your overlay-file: $ virsh snapshot-create-as f19-base snap1 "snap1-desc" \ --disk-only --atomic (3) Now, list the block device associated(use command from step-1, above) with the guest, to ensure it reflects the new overlay image as the current block device in use. $ virsh domblklist f19-base Target Source ---------------------------------------------------- vda /export/vmimages/overlay1-of-f19-base.qcow2 $ Here's some more examples: http://kashyapc.fedorapeople.org/virt/lc-2012/snapshots-illustration.txt Some URLs ========= 1. http://wiki.libvirt.org/page/I_created_an_external_snapshot,_but_libvirt_won... 2. Notes on different kinds of snapshots -- http://kashyapc.fedorapeople.org/virt/lc-2012/snapshots-handout.html -- /kashyap

On 12/02/2013 09:04 AM, Juraj Melo wrote:
Hello,
I am working on my PhD thesis and it would be really helpfull if someone could advise me, whether can Virsh create snapshots of VMs using copy-on-write.
What are you trying to copy-on-write? Is it just disk state, or VM memory state? Do you have corresponding qemu commands that you are trying to figure out if virsh maps to those same commands? There's a lot of flexibility in the virsh snapshot XML, but not all of it has been wired up yet (in part because it's still a moving target for what upstream qemu supports), so knowing more details about what you are trying to do will help us better answer whether it can be done now and if so with which commands. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
participants (3)
-
Eric Blake
-
Juraj Melo
-
Kashyap Chamarthy