[libvirt] suggestions on snapshotting testing

Kashyap Chamarthy kchamart at redhat.com
Mon May 21 08:59:26 UTC 2012


On 05/17/2012 11:00 PM, Eric Blake wrote:
> On 05/14/2012 11:26 PM, Kashyap Chamarthy wrote:
>> Hi,
>>
>> I'm willing to test/understand snapshotting in libivrt/qemu  in a much better way.  I can
>> spend 10-ish  hours or so a week.
>>
>>
>> I see a lot of work going on the snapshot front, upstream qemu/libvirt. I'm currently
>> following/reading:
>> ----------
>> http://wiki.qemu.org/Features/SnapshotsMultipleDevices
>> http://wiki.qemu.org/Features/LiveBlockMigration
> 
> This documents the lower-level commands exposed by qemu, but not
> necessarily how libvirt uses them.
> 
>> http://wiki.libvirt.org/page/Snapshots
> 
> I made that page prior to integrating the code for live disk snapshots,
> but have not maintained it since, so it might be a bit out of date with
> how things have changed in the meantime, but hopefully still relatively
> accurate.
> 
>> http://libvirt.org/formatsnapshot.html
> 
> That page is live based on libvirt.git, and should be up-to-date with
> the current implementation; although I would welcome improvements for
> additional things to mention.

I'd probably like to add some examples there for each different variant of snapshots just
to give a practical idea for people referring that page. I'll try to do this over the weekend.

You mentioned this page is live based on libvirt.git. Can I manually edit the examples
section?  Just ensuring I'm not messing up around.

> 
>> ------------
>>
>> Am I going the right way?
>>
>> Once I get a decent hang of things, I was wondering I could start writing some tests.
>>
>> What do you advice?
> 
> Do you have specific scenarios in mind?  Propose a problem that you
> think a snapshot would help, then ask questions on which APIs you would
> use to solve that problem.

Nothing specific in mind. Let me see if I can provide a bit more info.
I'm testing snapshots in the context of working with FreeIPA project, where I have a test
set-up w/ multiple guests, with subtle env. changes in them, interacting w/ each other. I
need keep track of a clean state, a state with a particular env set-up, revert to a
certain state, etc, often ending up with a tree of (internal)snapshots for each guest.

I'm just exploring what kind of snapshots are most efficient for these scenarios.

> 
> Do you understand the difference between the various snapshot flavors?
> There's several orthogonal issues to be aware of, although not all
> combinations are supported.

I think I do understand to a certain extent. I previously had a discussion with you when I
initially started off and captured the notes as a blog post --
http://kashyapc.wordpress.com/2011/10/04/snapshotting-with-libvirt-for-qcow2-images/

However, thanks for the nice summary below.

> 
> system checkpoint: VM state and disk state 'virsh snapshot-create'
> disk only: just disk state 'virsh snapshot-create --disk-only'
> VM state only: 'virsh save' - I'd really like to make this a special
> case of 'virsh snapshot-create', but it needs more work
> 
> online: taken from a running VM
> offline: taken from an offline VM
> live: online, plus the additional guideline that the VM continues
> running after the snapshot is taken, preferably with minimum downtime
> 
> internal: requires qcow2, qemu stores VM state and disk state inside the
> qcow2 image, libvirt stores only an xml file tracking the state relation
> (qemu 'savevm' command)
> external: create a new file, possible for VM state (qemu 'migrate' to
> file) and disks (qemu 'transaction:blockdev-snapshot-sync')
> 
> I'm sure additional tests would be welcome; perhaps libvirt-TCK would be
> a good place to add such tests.  But I'm not quite sure what you plan to
> do, or which aspects you plan to test, without more details; I'll try to
> be responsive to any questions you have regarding specifics of any
> sequence you are trying to do.
> 

I'll post more when I have a bit more clarity and more specifics on what I'd like to try.

I'm a little hazy with the external snapshots as the combinations/tree of snapshots can
get a bit complex . Though I do use the basic operation in my daily work flow, like:

=====================
root@~$ virsh list
 Id    Name                           State
----------------------------------------------------
 11    f17test                        running

root@~$
=====================
root@~$ virsh domblklist f17test --details
Type       Device     Target     Source
------------------------------------------------
file       disk       vda        /var/lib/libvirt/images/f17test.qcow2

root@~$
=====================
root@~$ virsh snapshot-create-as f17test cleanf17 cleanf17-box --diskspec
vda,file=/var/lib/libvirt/images/snap-f17test.qcow2 --disk-only
Domain snapshot cleanf17 created
root@~$
=====================
root@~$ virsh snapshot-list f17test
 Name                 Creation Time             State
------------------------------------------------------------
 cleanf17             2012-05-14 00:02:54 +0530 disk-snapshot

root@~$
=====================

Thanks for your response.


-- 
/kashyap




More information about the libvir-list mailing list