Expandir discos en máquinas virtuales kvm

Las herramientas

Para aumentar los discos de las máquinas virtuales emplearemos las libguestfs-tools que hemos de instalar previamente.

Como ejemplo emplearemos el disco duro de nuestro servidor Proxmox 3.4. El archivo de imagen se llama Proxmox3.4.img

 

Antes de empezar

Es muy importante que la máquina virtual cuyos discos queremos modificar esté PARADA.

Emplearemos el archivo original como copia de seguridad, por lo que empezaremos renombrándolo como Proxmox3.4.img.20150430:
[root@cectmox1 images]# mv Proxmox3.4.img Proxmox3.4.img.20150430
Echaremos un vistazo al contenido del disco a aumentar con el comando virt-filesystems –long –parts –blkdevs -h -a
[root@cectmox1 images]# virt-filesystems --long --parts --blkdevs -h -a Proxmox3.4.img.20150430
Name       Type       MBR  Size  Parent
/dev/sda1  partition  -    1,0M  /dev/sda
/dev/sda2  partition  -    128M  /dev/sda
/dev/sda3  partition  -    200G  /dev/sda
/dev/sda   device     -    200G  -

Esto nos muestra las particiones. Para ver los volúmenes lvm empleamos virt-df -h:

[root@cectmox1 images]# virt-df -h /home/virtual/images/Proxmox3.4.img.20150430
Sistema de archivos                    Tamaño  Utilizado Disponible Utilización%
Proxmox3.4.img.20150430:/dev/sda2         126M       142K       126M    1%
Proxmox3.4.img.20150430:/dev/pve/data     169G       6,4G       163G    4%
Proxmox3.4.img.20150430:/dev/pve/root     19G        4,1G        14G   22%

Queremos ampliar la partición donde está el volumen pve, que contiene los datos (/dev/pve/data) y el root (/dev/pve/root). Esta partición es /dev/sda3

 

Empezamos

Lo primero que hemos de hacer es crear la nueva imagen de disco con el tamaño deseado. En nuestro caso añadiremos 50GB al disco original (200GB), por lo que tendremos que crear una nueva imagen de 250GB:

[root@cectmox1 images]# qemu-img create -f raw Proxmox3.4.img 250G
Formatting 'Proxmox3.4.img', fmt=raw size=268435456000

Expandimos el sistema en la nueva imagen

Una vez creada la nueva imagen de disco procedemos a copiar los datos de la original (Proxmox3.4.img.20150430) con el comando

[root@cectmox1 images]# virt-resize Proxmox3.4.img.20150430 Proxmox3.4.img --expand /dev/sda3

Ver figura 1.

Fig 1.
Fig 1.

El sistema ha expandido el LVM PV de /dev/sda3, pero no hemos asignado el espacio libre a ningún volumen lógico (ni /dev/pve/root ni a /dev/pve/data). Ésto nos interesa para poder tener espacio libre en el volumen pve, que necesitaremos para poder crear snapshots de los discos de las máquinas openvz en el sistema proxmox.

 

A comprobar que todo funciona

Una vez finalizado el proceso de copia arrancamos la máquina virtual para comprobar que funciona correctamente.

Si miramos la salida del comando vgdisplay en el servidor proxmox podremos ver el espacio libre:

root@cectmox4:/home/chemi# vgdisplay
--- Volume group ---
VG Name               pve
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  7
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                3
Open LV               3
Max PV                0
Cur PV                1
Act PV                1
VG Size               249.87 GiB
PE Size               4.00 MiB
Total PE              63966
Alloc PE / Size       51166 / 199.87 GiB
Free  PE / Size       12800 / 50.00 GiB
VG UUID               36aH8f-Hcie-DBaD-dTgi-SXwt-vE2d-cjtVeM

 

Si queremos expandir un volumen lógico directamente

En el caso de que queramos expandir no solamente una partición sino también un volúmen lógico en el mismo proceso, tendríamos que emplear la opción –LV-expand de virt-resize, indicándole el volumen lógico que queremos expandir. En ese caso lo expande para ocupar todo el espacio libre.

El comando empleado si quisiéramos expandir el volumen lógico /dev/pve/data sería el siguiente:

[root@cectmox1 images]# virt-resize Proxmox3.4.img.20150430 Proxmox3.4.img --expand /dev/sda3 --LV-expand /dev/pve/data

 

Enlaces

Librería libguestfs

Manual de RedHat 6