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.