Re: Spawn new domains from a snapshot.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I made a couple of tests.

Image A.qcow2:
- 2 Gb file size (the image size is 10Gb)
- OS: Windows XP sp2 installed

I create the image B.qcow2 with A as backing store through virStorageVolCreateXML():
- 160 Mb file size (image size alway 10Gb)
- OS in the same state as before.
I do some updates to the OS in image B like installing sp3 and I shut down the VE

I create the image C.qcow2 with B as backing store through virStorageVolCreateXML():
- File size 230 Mb
- OS: Windows XP sp3 with all the changes made in image B.

This is extremely powerful in contexts as cloud VM provisioning or system tests. For what I guessed (didn't look at the code yet) libvirt can already set up a hierarchy in a way that, given a complete disk image, can build several COW images and run a coherent VM merging deltas contained in these files.

So shouldn't be hard to do the same procedure with images created from snapshots. As I said in: https://www.redhat.com/archives/libvirt-users/2012-May/msg00105.html I create an image from a snapshot through qemu-img, I obtain a qcow2 file valuable for inspections but not for running a new VE as it doesn't contain the whole disk of the original VM. If I do the same without COW I succeed but I pass from a bunch of seconds to several minutes to complete the task as I basically clone the whole disk.

A nice solution could be giving the capability to specify in the volume XML the source as a snapshot name contained in the running domain. The internal logic should be able to generate a new qcow2 file that knows which backing file has been used to generate the disk the snapshot refers to.

To be more clear running the image C I create the snapshot S, from S through virStorageVolCreateXML() I create the disk image S.qcow2 which contains deltas from C to the moment S has been taken. I can then use S.qcow2 to spawn a new VE with changes made from C to S (including changes made in B etc obviously).

This should allow, for example, to make so that while C is still running I can start other VEs from C disk snapshots; obtaining a dynamic VE branching system. Everything through libvirt API.

_______________________________________________
libvirt-users mailing list
libvirt-users@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvirt-users


[Index of Archives]     [Virt Tools]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux