Reparar imagen qcow2 corrupta, ampliar y reducir

Hoy he estado modificando tamaños de imágenes qcow2 y he dejado un imagen corrupta, pues bien hay solución.

Al querer abrir la imagen me daba este error indicando que esta corrupta.

qemu-img: Could not open 'test-i386.qcow2': qcow2: Image is corrupt; cannot be opened read/write

Para solucionarlo primero analizaremos la situación

file test-i386.qcow2
test-i386.qcow2: QEMU QCOW Image (v3), 12884901888 bytes
qemu-img info test-i386.qcow2
 image: test-i386.qcow2
 file format: qcow2
 virtual size: 12G (12884901888 bytes)
 disk size: 11G
 cluster_size: 65536
 Format specific information:
     compat: 1.1
     lazy refcounts: true

Hacemos un check

qemu-img check test-i386.qcow2
No errors were found on the image.
179022/196608 = 91.06% allocated, 3.54% fragmented, 0.00% compressed clusters

Si viésemos que no funciona, en mi caso no funcionaba ejecutamos el siguiente comando.

qemu-img check -r all test-i386.qcow2
No errors were found on the image.
179022/196608 = 91.06% allocated, 3.54% fragmented, 0.00% compressed clusters
Image end offset: 11734548480

Ahora  continuo haciendo lo que quería hacer reducir pero antes ampliare la imagen (4 veces).

qemu-img resize test-i386.qcow2 +2G
Image resized.
qemu-img resize test-i386.qcow2 +2G
Image resized.
qemu-img resize test-i386.qcow2 +2G
Image resized.
qemu-img resize test-i386.qcow2 +2G
Image resized.
qemu-img info test-i386.qcow2
image: test-i386.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 11G
cluster_size: 65536
Format specific information:
 compat: 1.1
 lazy refcounts: true

Ahora pasamos de qcow2 a raw para luego poder reducir

qemu-img convert -O raw test-i386.qcow2 VM1.raw

Una vez pasado a raw

-rw-r--r-- 1 root root 11734548992 jun 25 10:23 test-i386.qcow2
-rw-r--r-- 1 root root 21474836480 jun 25 10:27 VM1.raw

Reduzco

qemu-img resize VM1.raw -8G
Image resized.

así queda pues

-rw-r--r-- 1 root root 11734548992 jun 25 10:23 test-i386.qcow2
-rw-r--r-- 1 root root 12884901888 jun 25 10:51 VM1.raw 

Lo volvemos a convertir a qcow2

 qemu-img convert -c -O qcow2 VM1.raw test-i386.qcow2

Se a reducido mucho el tamaño de la imagen

-rw-r--r-- 1 root root 5369626624 jun 25 10:59 test-i386.qcow2
-rw-r--r-- 1 root root 12884901888 jun 25 10:51 VM1.raw

Comprobamos que todo sea correcto

qemu-img info test-i386.qcow2
image: test-i386.qcow2
file format: qcow2
virtual size: 12G (12884901888 bytes)
disk size: 5.0G
cluster_size: 65536
Format specific information:
 compat: 1.1
 lazy refcounts: false

Por si quedan dudas la imagen se va incrementando tal i como podéis observar

-rw-r--r-- 1 libvirt-qemu libvirt-qemu 5394399232 jun 25 11:23 test-i386.qcow2
-rw-r--r-- 1 root root 12884901888 jun 25 10:51 VM1.raw

Captura de pantalla de 2016-06-25 11:17:03