qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Using TRIM to shrink qcow2 images


From: Alexey Kardashevskiy
Subject: Re: [Qemu-devel] Using TRIM to shrink qcow2 images
Date: Fri, 4 Oct 2013 16:22:47 +1000

Hi Paolo!




On Thu, Aug 8, 2013 at 10:00 PM, Paolo Bonzini <address@hidden> wrote:
On 08/08/2013 12:34 PM, Ralf Ramsauer wrote:
Hi,

QCOW2 uses a similar idea like file holes (sparse files) on filesystems [1].
RAW Images also may use file holes.

If qemu would support TRIM, then the guest could easily discard and zero
all unused blocks.

QEMU supports trim.  1.5 supports it with raw images only, 1.6 will add qcow2 support.  Because it has the potential to cause fragmentation, it needs to be enabled explicitly.  Just add "discard=on" to the -drive option:

    qemu-system-x86_64 -enable-kvm -m 2048 ...\
       -drive if=virtio,discard=on,file=$HOME/foo.qcow2



btw I tried "discard=on" as you described (with if=virtio) and received an error:
address@hidden ~]# fstrim -v /
fstrim: /: FITRIM ioctl failed: Operation not supported

In my case if=virtio means virtio-blk. If I use virtio-scsi or ibmvscsi, fstrim works just fine but failing virtio-blk bothers me a bit as we might have a bug in ppc64, do not we? (we == ppc64 folks, of course :) )


 
It's probably always a good idea if the image is a block device on an SSD, but not necessarily on an image that is backed (for example) by a file or by a thin-provisioned logical volume.


The host system could detect all unused blocks in a (e.g.) qcow2 image
and shrink it down to its minimum size.

This depends on the host support for discard (on block device-backed qcow2 images) or hole punching (for file-backed qcow2 images).  For files, running fstrim in the guest will shrink down the on-disk footprint of a qcow2 image.

Paolo


Did anyone already think about that?

[1] : https://people.gnome.org/~markmc/qcow-image-format.html

Regards,






--
Alexey

reply via email to

[Prev in Thread] Current Thread [Next in Thread]