Uno de los principales problemas de KVM en el escritorio es el tamaño de las imágenes, debido a que cuando se crea una imagen de disco en KVM (Kernel-based Virtual Machine), la imagen se inicializa con el tamaño que de específico como tamaño total que puede ocupar en el disco duro, sin embargo, en un principio, el sistema solo reserva el espacio necesario para almacenar los datos que se han escrito en la imagen lo cual es muy bueno.

En otras palabras, cuando se crea una imagen de por ejemplo 100GB se reservan en el disco los 100GB, sin embargo, no se ocupan los 100GB sino solo lo que se va usando, es decir que tiene dos tamaños, un real y otro aparente, diferentes herramientas pueden indicar uno u otro, otras como ncdu indican ambos.

Hasta ese punto no hay mayor inconveniente, sin embargo, si respaldamos las imágenes en otro disco pueden comenzar los problemas, debido a que cuando copias la imagen a otro disco, el sistema copia toda la imagen, incluyendo el espacio no utilizado inicialmente pero que fue reservado al crear la imagen. Esto se debe a que la imagen de disco es un archivo que ocupa un tamaño mayor en el disco duro, y al copiarlo, se copia todo el contenido del archivo, incluyendo el espacio no utilizado pero reservado.

En la práctica puede que tengamos un disco de 10GB, pero al copiarlo si el tamaño que especificamos fue de 100G, al copiarlo ocupará los 100GB originales y no los 10GB ocupados.

La solucion a este problema es bastante sencilla y solo necesitamos usar: virt-sparsify

Instalacion

sudo apt install libguestfs-tools

Optimizando una imagen

Para optimizar una imagen la VM debe estar apagada, luego para comenzar en este caso el primer paso de la optimizacion es generar una imagen nueva, ojo que esta se generara con el tamaño total, asi que deben asegurarse que tenga suficiente espacio el disco, una vez que fue optimizada y se genero el archivo temporal se sustituye por el original

 
virt-sparsify imagen.qcow2 imagen.tmp 
mv imagen.tmp imagen.qcow2 

Si existen varias imagenes a optimziar puede resultar algo tedioso hacerlo una a una, así que se puede hacer de la siguiente forma:

su -
cd /var/lib/libvirt/images/
nice -n 10 find ./ -iname "*.qcow2" -exec echo "{}" \; -exec virt-sparsify {} {}.tmp \; -exec mv {}.tmp {} \;

El comando virt-sparsify suele levantar bastante carga en el PC o en el servidor y dejar todo el sistema bastante lento, por esa razón es una buena idea modificar y reducir la prioridad del proceso para evitar que la optimización bloque el equipo por completo.

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Alvaro De León

Subscribe now to keep reading and get access to the full archive.

Continue reading