This doesn't work (I tested both qemu 2.3 and qemu from git). Should it? (1) Create a non-sparse guest image:
$ virt-builder fedora-22 $ mv fedora-22.img fedora-22.img.sparse $ cp --sparse=never fedora-22.img.sparse fedora-22.img $ du -sh fedora-22.img 6.1G fedora-22.img (2) Add a snapshot on top: $ qemu-img create -f qcow2 -o compat=1.1 -b fedora-22.img overlay.qcow2 $ du -sh fedora-22.img overlay.qcow2 6.1G fedora-22.img 196K overlay.qcow2 (3) Sparsify the overlay: $ virt-sparsify --in-place overlay.qcow2 $ du -sh fedora-22.img overlay.qcow2 6.1G fedora-22.img 3.2M overlay.qcow2 (4) Commit to the backing file: $ qemu-img commit overlay.qcow2 Image committed. $ du -sh fedora-22.img overlay.qcow2 6.1G fedora-22.img <------ 260K overlay.qcow2 Notice that the backing file (fedora-22.img) doesn't get any smaller. I'm expecting the backing file to shrink to around 800 MB, which is does if you run virt-sparsify directly on the backing file. For background, `virt-sparsify --in-place' mounts each filesystem (using a small Linux/qemu appliance), and runs fstrim on each one. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 100 libraries supported. http://fedoraproject.org/wiki/MinGW