I don’t see this documented anywhere obvious, so I examined the source of qemu and performed some tests.
qemu stores the size in a 64 bit unsigned integer. However the qemu-img command line parsing code refuses to parse any number larger than 263-513 (9223372036854774784), and therefore that appears to be the largest disk size you can create:
$ qemu-img create -f qcow2 test1.img $((2**63-513)) Formatting 'test1.img', fmt=qcow2 size=9223372036854774784 encryption=off cluster_size=65536 $ ll -h test1.img -rw-r--r--. 1 rjones rjones 192K Oct 3 17:27 test1.img $ guestfish -a test1.img run : blockdev-getsize64 /dev/sda 9223372036854774784
Interestingly things go horribly wrong as soon as you try to partition this:
$ virt-rescue test1.img ><rescue> parted /dev/vda print Error: /dev/vda: unrecognised disk label Model: Virtio Block Device (virtblk) Disk /dev/vda: 9223372TB Sector size (logical/physical): 512B/512B Partition Table: unknown ><rescue> parted /dev/vda mklabel gpt $ # bang! back to the prompt!
https://bugs.launchpad.net/qemu/+bug/865518