Este artículo demuestra cómo redimensionar el sistema de archivos raíz de una instancia EC2 de AWS en producción para agregar espacio disponible luego de redimensionar un EBS.

Luego de modificar el tamaño del volumen desde la consola de AWS, se puede comprobar el cambio con el comando lsblk:

root@debian:~# lsblk /dev/xvda
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  12G  0 disk 
└─xvda1 202:1    0   8G  0 part /

En este ejemplo el volumen tenía originalmente 8 GB y fue expandido a 12 GB. Se observa una única partición que corresponde con el sistema de archivos raíz del sistema operativo (Debian).

Luego de modificar (agrandar) el volumen, quedan 4 GB sin utilizar que no corresponden a ninguna partición. La forma más simple de expandir la partición en un sistema en funcionamiento consiste en recurrir a la herramienta growpart. Instalar el paquete cloud-guest-utils para disponer de la misma:

# apt-get install cloud-guest-utils

Para recuperar el espacio disponible se debe expandir la partición 1 del dispositivo /dev/xvda:

root@debian:~# growpart /dev/xvda 1
CHANGED: partition=1 start=4096 old: size=16769024 end=16773120 new: size=25161695,end=25165791

Luego de correr growpart, la partición raíz ahora tiene 12 GB, ocupando el total del dispositivo:

root@debian:~# lsblk /dev/xvda
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  12G  0 disk 
└─xvda1 202:1    0  12G  0 part /

Sin embargo, resta expandir el sistema de archivos contenido en la misma:

root@debian:~# df -h /dev/xvda1
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  4.5G  2.9G  62% /

Según el manual de resize2fs, a partir de la versión 2.6+, el kernel Linux soporta online resizing para particiones montadas:

root@debian:~# uname -r
4.9.0-14-amd64

Esto significa que es posible expandir el sistema de archivos aunque esté montado y actualmente en uso.

De todas formas, como se trata de una acción riesgosa, es conveniente crear una instantánea del volumen antes de continuar. Desde la consola de EC2 acceder a "Volumes". Seleccionar el volumen correspondiente y crear un snapshot fresco abriendo el menú "Actions > Create Snapshot".

Acceder a "Snapshots", ordenar por "Started" (descendente) y esperar que finalice su creación.

Luego se expande el sistema de archivos en caliente:

root@debian:~# resize2fs /dev/xvda1
resize2fs 1.43.4 (31-Jan-2017)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/xvda1 is now 3145211 (4k) blocks long.

Finalmente, verificar el nuevo espacio disponible con df:

root@debian:~# df -h /dev/xvda1
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       12G  4.5G  6.7G  41% /

Referencias

Compartí este artículo