Intro
En la entrada Expandir discos en máquinas virtuales kvm veíamos como aumentar los discos duros de las máquinas virtuales empleando las herramientas libguestfs-tools. Sin embargo, si queremos hacerlo sin estas herramientas, hemos de emplear otro sistema.
En nuestro caso queremos aumentar el disco donde reside el sistema operativo de una máquina virtual KVM con CentOS 7. El proceso es muy similar al descrito para aumentar el disco duro de un proxmox corriendo como KVM que podemos ver en la siguiente entrada.
Los pasos a dar son los siguientes:
- Parar la máquina virtual
- Aumentar el tamaño de la imagen de disco
- Expandir la partición dentro del disco duro
- Expandir el volumen virtual
- Hacer que el sistema de archivos ocupe todo el espacio disponible
Parar la máquina virtual
Si esta máquina forma parte de un cluster de alta disponibilidad y está configurada como un recurso, hemos de ponerla en modo ‘unmanaged’ antes de pararla. De otro modo, el cluster se dará cuenta de que está parada y la arrancará de nuevo.
Aumentar el tamaño de la imagen de disco
Antes de hacer nada con la imagen del disco, lo mejor es copiarla para asegurarnos de poder regresar al punto de partida si algo sale mal.
Una vez copiada, emplearemos el comando qemu-img resize para aumentar la imagen:
#qemu-img resize vm1.img +6G
Un ls en el directorio en el que reside la imagen de disco nos muestra que el tamaño ha aumentado en 100GB
Expandir la partición dentro del disco duro
Empleamos una máquina virtual con la última versión de gparted a la que hemos asignado el disco duro a redimensionar.
Usamos la interfaz gráfica del programa. Aunque en la entrada correspondiente a la ampliación del disco de proxmox decíamos que había que desactivar el volumen lvm, parece que con las nuevas versiones de gparted no es necesario y se puede redimensionar directamente sin desactivar el volumen lvm.
Una vez aumentada la partición paramos la máquina gparted.
Expandir el volumen virtual
Para ver el nombre del volumen virtual hacemos:
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <6,67g swap centos -wi-ao---- 820,00m
Ahora sabemos que el volumen a expandir es /dev/centos/root
Lo expandimos con el comando:
# lvextend -l +100%FREE /dev/centos/root
Si hacemos de nuevo un lvs:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <12,71g swap centos -wi-ao---- 820,00m
Sin embargo, un df -h nos muestra que el sistema de ficheros no se ha expandido:
S.ficheros Tamaño Usados Disp Uso% Montado en /dev/mapper/centos-root 6,7G 6,4G 367M 95% / devtmpfs 1,9G 0 1,9G 0% /dev tmpfs 1,9G 0 1,9G 0% /dev/shm tmpfs 1,9G 8,4M 1,9G 1% /run tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup /dev/vda1 497M 271M 227M 55% /boot /dev/vdb1 120G 90G 31G 75% /var/spool/imap tmpfs 379M 0 379M 0% /run/user/0
Hacer que el sistema de archivos ocupe todo el espacio disponible
Empleamos el comando:
# xfs_growfs /dev/centos/root
Nos produce la siguiente salida:
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=436992 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 spinodes=0 data = bsize=4096 blocks=1747968, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 1747968 to 3331072
Si ahora hacemos un df -h comprobamos que el sistema de archivos ya ocupa todo el espacio disponible:
S.ficheros Tamaño Usados Disp Uso% Montado en /dev/mapper/centos-root 13G 6,4G 6,4G 50% / devtmpfs 1,9G 0 1,9G 0% /dev tmpfs 1,9G 0 1,9G 0% /dev/shm tmpfs 1,9G 8,4M 1,9G 1% /run tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup /dev/vda1 497M 271M 227M 55% /boot /dev/vdb1 120G 90G 31G 75% /var/spool/imap tmpfs 379M 0 379M 0% /run/user/0
Y ya hemos acabado.