Para realizar backups de imágenes de discos usadas en QEmu/KVM se puede optimizar usar
zerofree. Este programa escribe 0 (ceros) en los lugares de la imagen que NO está siendo usada por archivos, y que han sido usadas pero actualmente están libres (por ejemplo, en el lugar donde se haya creado un archivo que luego haya sido borrado).
Zerofree funciona para ext2/ext3/ext4, en particiones que no están montadas, o montadas solo-lectura.
Esta utilidad es "inteligente" en el sentido que no hace "crecer" a los archivos sparse.
Los pasos a seguir son:
~$ sudo modprobe nbd max_part=16
- asociar imagen de disco disk01.qcow2 a nbd1 y crear dispositivos asociados a particiones
~$ sudo qemu-nbd -c /dev/nbd1 -v disk01.qcow2
~$ sudo partprobe /dev/nbd1
~$ sudo zerofree -v /dev/nbd1p5
Listo! El archivo "
disk01.qcow2" ocupa teóricamente
11G, pero como es un archivo
sparse, en realidad está ocupado en disco sólo
1.9G:
~$ ls -lh disk01.qcow2
-rw-r--r-- 1 root root 11G 2011-06-15 14:51 disk01.qcow2
~$ du -h disk01.qcow2
1.9G disk01.qcow2
El .tar ocupa sólo
918M:
~$ tar --sparse -cf disk01.qcow2.tar disk01.qcow2
~$ ls -lh disk01.qcow2.tar
-rw-r--r-- 1 horacio horacio 918M 2011-06-15 15:10 disk01.qcow2.tar
Y al comprimirlo solo nos queda
305M:
$ gzip -1 disk01.qcow2.tar
$ ls -lh disk01.qcow2.tar.gz
-rw-r--r-- 1 horacio horacio 305M 2011-06-15 15:10 disk01.qcow2.tar.gz
~$ du -h *
1.9G disk01.qcow2
305M disk01.qcow2.tar.gz
En este caso, un archivo que ocupa inicialmente
1.9G lo llevamos a ocupar
918M (
305M comprimido).