Redimensión de discos en máquinas virtuales
En este apartado vamos a aumentar el tamaño del volumen que hemos añadido a la máquina Linux, por lo que la máquina verá un disco más grande, pero hay que recordar que también tendremos que redimensionar el sistema de ficheros.
Para realizar la redimensión tenemos dos alternativas: o usar la API de libvirt usando virsh o usar herramientas específicas, en este caso qemu-img.
Redimensión de discos en máquinas virtuales paradas
Para redimensionar el volumen de una máquina que esté parada, podemos usar virsh:
usuario@kvm:~$ virsh vol-resize disco1.qcow2 3G --pool vm-images
O podemos usar qemu-img, se ejecuta con un usuario con privilegios o con sudo:
usuario@kvm:~$ sudo qemu-img resize /srv/images/disco1.qcow2 3G
Redimensión de discos en máquinas virtuales en ejecución
Para hacer la redimensión “en caliente”, con la máquina encendida, podemos obtener información de los discos conectados a una máquina:
usuario@kvm:~$ virsh domblklist debian12
Target Source
--------------------------------------------------
vda /var/lib/libvirt/images/debian12.qcow2
vdb /srv/images/disco1.qcow2
Y a continuación, redimensionamos el disco deseado:
usuario@kvm:~$ virsh blockresize debian12 /srv/images/disco1.qcow2 3G
Podemos comprobar que se ha producido la redimensión en el disco de la máquina. Accedemos a la máquina y hacemos la comprobación:
usuario@debian:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
...
vdb 254:16 0 3G 0 disk
El disco ahora tiene 3GB, pero el sistema de archivo sigue teniendo 1Gb:
usuario@debian:~$ df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
...
/dev/vdb 974M 24K 907M 1% /mnt
Desmontamos el disco (es necesario porque está formateado con ext4, con otros sistemas de ficheros no sería necesario el desmontaje), y lo redimensionamos:
usuario@debian:~$ sudo umount /mnt
usuario@debian:~$ sudo e2fsck -f /dev/vdb
usuario@debian:~$ sudo resize2fs /dev/vdb
usuario@debian:~$ sudo mount /dev/vdb /mnt
usuario@debian:~$ df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
...
/dev/vdb 3,0G 24K 2,8G 1% /mnt
Redimensión del sistema de ficheros de una imagen de disco
Otra alternativa para redimensionar el sistema de ficheros de una imagen es usar la herramienta virt-resize. virt-resize no trabaja sobre imágenes de discos de máquinas que se estén ejecutando, además no puede redimensionar sobre el mismo fichero de la imagen, por lo que vamos a hacer una copia del mismo. Para utilizar esta herramienta vamos a instalar el siguiente paquete:
usuario@kvm:~$ sudo apt install guestfs-tools
Lo primero es para la máquina virtual:
usuario@kvm:~$ virsh shutdown debian12
Vamos a redimensionar el disco raíz de la máquina Linux que tiene 10 Gb de tamaño virtual. Antes de usar virt-resize, debemos crear un disco destino donde se va a guardar el disco redimensionado:
usuario@kvm:~$ sudo qemu-img create -f qcow2 /var/lib/libvirt/images/nuevo_disco.qcow2 15G
Y posteriormente vamos a redimensionar el sistema de archivo de la partición /dev/sda1 con virt-resize y el parámetro --expand. Se creará un nuevo volumen que posteriormente sustituiremos por el original:
usuario@kvm:~$ sudo virt-resize --expand /dev/sda1 /var/lib/libvirt/images/debian12.qcow2 /var/lib/libvirt/images/nuevo_disco.qcow2
usuario@kvm:~$ sudo mv /var/lib/libvirt/images/nuevo_disco.qcow2 /var/lib/libvirt/images/debian12.qcow2
Iniciamos de nuevo la máquina y comprobamos si el disco y el sistema de archivos se ha redimensionado.