¿Cómo puedo recuperar el espacio en un archivo qcow2 después de eliminar instantáneas y conservar las instantáneas restantes?

¿Cómo puedo recuperar el espacio en un archivo qcow2 después de eliminar instantáneas y conservar las instantáneas restantes?

Tengo una máquina virtual que comenzó con 5 instantáneas 1,2,3,4,5.

solíaqemu-imgpara eliminar instantáneas 1,2,3. Las instantáneas 4 y 5 aún son necesarias y no se eliminaron.

¿Cómo puedo liberar el espacio utilizado por las instantáneas 1,2,3 y conservar las instantáneas 4 y 5?

He pasado mucho tiempo buscando una solución y las soluciones que encontré encajan en uno de dos patrones:

Utilice la conversión qemu-img(Se eliminaron instantáneas necesarias)

qemu-img convert -O qcow2 Linux.qcow2 Linux_s.qcow2

Esto reduce el espacio utilizado por Linux.qcow2, pero elimina las instantáneas 4 y 5.

Copie la VM y use virt-sparsify(No recupera ningún espacio)

cp Linux.qcow2 TEST.qcow2

sudo virt-sparsify --in-place TEST.qcow2

Conserva las dos instantáneas no eliminadas, pero no recupera el espacio que ocupaban originalmente las instantáneas 1,2,3.

¿Cómo puedo recuperar el espacio en un archivo qcow2 después de eliminar instantáneas y conservar las instantáneas restantes?

Respuesta1

Los archivos qcow2 son archivos dispersos. En los sistemas de archivos que admiten archivos dispersos, pueden ocupar mucho menos espacio en el disco que el tamaño del archivo.

Si elimina una instantánea, el tamaño informado por ls -lno cambia, pero la cantidad de espacio libre en el disco según lo informado dfsí cambia.

Casi todos los sistemas de archivos admiten archivos dispersos. FAT y NFSv3 son probablemente los únicos sistemas de archivos comunes que no lo hacen.

Respuesta2

Cuando elimina las instantáneas 1,2,3, los archivos se eliminan, pero no indica ningún espacio liberado porque no es una eliminación real. Los archivos simplemente están marcados para que la eliminación finalice rápidamente.

Si desea liberar el espacio de las instantáneas eliminadas, puede convertir el archivo qcow2, pero antes debe completar el archivo qcow2 con 0 mediante el comando dd:

$dd if=/dev/zero of=~/junk
dd: writing to `/home/***/junk': No space left on device
$rm junk

luego convierta el archivo qcow2

qemu-img convert -O qcow2  Linux.qcow2 Linux_s.qcow2

información relacionada