On Wed, Jun 22, 2016 at 05:56:09PM -0500, libvirt_users@xxxxxxxxxxxxxxx wrote: > > Delete what you've done and start from the beginning. Describe > > exactly how you created the guest. Use 'qemu-img info' to show the > > format of the input file. Show precisely the virt-sparsify command > > you are running. And use 'qemu-img info' on the output file too. > > Okay, here goes. Start off with an install > > root@testingbox:~ # virt-install --name testimage --memory 512 -l > 'http://ftp.nl.debian.org/debian/dists/jessie/main/installer-amd64/' > --disk size=50 --nographics -x "console=ttyS0" > > Starting install... > Retrieving file > MANIFEST... > | 3.3 kB 00:00 ... Retrieving file > linux... > | 6.0 MB 00:03 ... Retrieving file > initrd.gz... > | 29 MB 00:09 ... Allocating > 'testimage.qcow2' > | 50 GB 00:00 Creating > domain... > | 0 B 00:00 Connected to domain testimage Escape character is > [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] > Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup > subsys cpuacct [ 0.000000] Linux version 3.16.0-4-amd64 > (debian-kernel@xxxxxxxxxxxxxxxx) (gcc version 4.8.4 (Debian 4.8.4-1) > ) #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) > > .... Many more lines here and it turns interactive. Suffice it to > say I did a basic minimal install following the prompts. Nothing > special here. > > This created an image that is 2.5G with a 50G apparent size and > identifies as qcow2 as shown below. > > # ls -slh testimage.qcow2 > 2.5G -rw-r--r-- 1 root root 51G Jun 22 20:22 testimage.qcow2 > > # qemu-img info testimage.qcow2 > image: testimage.qcow2 > file format: qcow2 > virtual size: 50G (53687091200 bytes) > disk size: 2.4G > cluster_size: 65536 > Format specific information: > compat: 1.1 > lazy refcounts: true > > Now we sparsify (/bigtmp is on a larger partition then / to give > virt-sparsify enough room to work with so it does not complain). > > root@testingbox: 08:59 PM # virt-sparsify testimage.qcow2 > testimage1.qcow2 --tmp /bigtmp Input disk virtual size = 53687091200 > bytes (50.0G) Create overlay file in /bigtmp to protect source > disk ... Examine source disk ... > 100% > ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ > --:-- Fill free space in /dev/sda1 with zero ... 100% > ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ > 00:00 Clearing Linux swap on /dev/sda5 ... 100% > ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ > --:-- Copy to destination and make sparse ... > > Sparsify operation completed with no errors. Before deleting the > old disk, carefully check that the target disk boots and works > correctly. > root@testingbox: 09:04 PM # > > This image reports still reports as qcow2 however the apparent and real > size is the same. > > # ls -slh testimage1.qcow2 > 1.1G -rw-r--r-- 1 root root 1.1G Jun 22 21:04 testimage1.qcow2 > > # qemu-img info testimage1.qcow2 > image: testimage1.qcow2 > file format: qcow2 > virtual size: 50G (53687091200 bytes) > disk size: 1.1G > cluster_size: 65536 > Format specific information: > compat: 1.1 > lazy refcounts: false virt-sparsify saved about 1.3 GB of disk space (2.4G -> 1.1G). > If we try it again but specify raw its MUCH faster > > root@testingbox: 09:26 PM # virt-sparsify testimage.qcow2 > testimage2.qcow2 --tmp /bigtmp --format raw This is incorrect usage. You've told virt-sparsify that the input image is raw. But it's not raw, it's qcow2. In any case, virt-sparsify opened the image as raw, couldn't make any sense of it (it appears to virt-sparsify to be random data, not a disk image), and so it cannot sparsify it properly. This is "quicker" only because virt-sparsify didn't do any sparsification of filesystems, because it couldn't see the filesystems. > This time it takes up more space and reports real and apparent size > differently. It still reports as qcow2 with qemu-img. > > # ls -slh testimage2.qcow2 > 1.7G -rw-r--r-- 1 root root 51G Jun 22 21:27 testimage2.qcow2 > # qemu-img info testimage2.qcow2 > image: testimage2.qcow2 > file format: qcow2 > virtual size: 50G (53687091200 bytes) > disk size: 1.7G Looks like virt-sparsify still found some clusters containing all zeroes which it could trim, even though it didn't know how to read the disk. Anyway, the moral is, don't misinform virt-sparsify of the format of your input image. If what you really intended to do was to convert the format from qcow2 to raw, you should use '--convert raw' instead. > The only things I see different from the finished files is that the raw > one uses a bit more space, the apparent size is not set to the > virtual size on the default sparsify one and the lazy refcounts is > different. > > Is there something more detailed then "qemu-img info" that I could tell > the difference with? qemu-img info is the correct tool to use. > > Raw has fewer features, especially no simple snapshotting or support > > for backing files. I wrote this thinking you were talking about actual raw format disks, not about qcow2 but where you've misinformed virt-sparsify about the format. > Is simple snapshotting using qemu-img snapshot or something else? I > tried making a snapshot with both test images and they both appeared to > work. http://wiki.qemu.org/Documentation/CreateSnapshot > # qemu-img snapshot -c test testimage1.qcow2 > # qemu-img snapshot -c test testimage2.qcow2 > # qemu-img info testimage2.qcow2 > image: testimage2.qcow2 > file format: qcow2 > virtual size: 50G (53687091200 bytes) > disk size: 1.7G > cluster_size: 65536 > Snapshot list: > ID TAG VM SIZE DATE VM > CLOCK 1 test 0 2016-06-22 22:41:52 > 00:00:00.000 Format specific information: > compat: 1.1 > lazy refcounts: true This works because testimage2.qcow2 is still in qcow2 format. Anyway, use the correct --format option. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org _______________________________________________ libvirt-users mailing list libvirt-users@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvirt-users