Linux – How to create a qcow2 file that is not thin provisioned

bashkvm-virtualizationlinuxqcow2

When I do the below then the qcow2 file is less than 200KB.

# qemu-img create -f qcow2 /var/lib/libvirt/images/urb-dat0.qcow2 10G
# du -hsc /var/lib/libvirt/images/urb-dat0.qcow2
196K    /var/lib/libvirt/images/urb-dat0.qcow2

If I attach it to a KVM guest and fdisk -l

Disk /dev/vdb: 0 MB, 197120 bytes, 385 sectors

Question

How to make a 10GB qcow2 file that is not thin provisioned?

Best Answer

You can use the preallocation option.

qemu-img create -o preallocation=full -f qcow2 /var/lib/libvirt/images/urb-dat0.qcow2 10G

Reference: https://linux.die.net/man/1/qemu-img

Preallocation mode (allowed values: off, metadata, full). An image with preallocated metadata is initially larger but can improve performance when the image needs to grow. Full preallocation additionally writes zeros to the whole image in order to preallocate lower layers (e.g. the file system containing the image file) as well. Note that full preallocation writes to every byte of the virtual disk, so it can take a long time for large images.