Añadir espacio de almacenamiento a volúmenes LVM en Ubuntu Server 22.04 LTS

Publicado por P. Ruiz en

En SomeBooks.es ya dedicamos un artículo a cómo Instalar Ubuntu Server 22.04 LTS (Jammy Jellyfish) desde cero. Durante el proceso, aceptamos la sugerencia del asistente de instalación, que nos ofreció crear tres particiones diferentes:

  • Una para el cargador de arranque.

  • Otra para la carpeta /boot.

  • Y el resto del disco para el Grupo de volúmenes LVM.

Dentro del Grupo de volúmenes se creó un solo volumen lógico de 11,5GB para el directorio raíz del sistema. Y el resto del espacio quedará sin asignar.

No obstante, si no recuerdas la información concreta de tu instalación, siempre puedes recurrir la comando lvs, que ofrece información sobre el volumen lógico. Bastará con escribir la siguiente orden y pulsar la tecla Intro:

sudo lvs

lvs es un comando muy versátil, con multitud de opciones para usarlo de forma interactiva o en el interior de scripts. Si necesitas más información sobre su funcionamiento, puedes recurrir a su documentación oficial. Por ejemplo, proporcionada en la página oficial de Ubuntu: https://manpages.ubuntu.com/manpages/bionic/man8/lvs.8.html.

Obtenemos datos como el nombre del grupo de volúmenes, el del volumen lógico o el tamaño asignado.

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-001

Ahora que ya conocemos el nombre del grupo de volúmenes y el del volumen que tenemos creado, podemos obtener más información con el comando lvdisplay. Bastará con escribir algo como lo siguiente y pulsar la tecla Intro:

sudo lvdisplay -v /dev/ubuntu-vg/ubuntu-lv

Lógicamente, la sintaxis concreta podrá cambiar si en tu sistema se han asignado nombres diferentes.

Puedes obtener más información sobre el comando lvdisplay en su documentación oficial. Por ejemplo, proporcionada en la página oficial de Ubuntu: https://manpages.ubuntu.com/manpages/bionic/man8/lvdisplay.8.html.

Entre la información recibida, confirmamos el tamaño actual del volumen.

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-002

Dada la flexibilidad que ofrece LVM, el hecho de que la instalación dejara espacio sin asignar, nos permitirá crear nuevos volúmenes o ampliar los que tengamos de forma gradual.

Esto lo podremos hacer inmediatamente después de que se complete la instalación, o en cualquier momento del futuro. Así, podremos responder a nuestras necesidades según se vayan produciendo.

Añadir espacio a un volumen lógico existente

Para aprender a añadir espacio a un volumen lógico existente, usaremos el volumen lógico ubuntu-lv, que hemos analizado más arriba (el que se creó durante la instalación), pero podemos utilizar cualquier otro cuando sea necesario.

En concreto, lo incrementaremos en 5GB que obtendremos del espacio que quedó sin asignar.

Sin embargo, para estar seguros de lo que hacemos, comenzaremos usando el comando lsblk, que nos aporta información sobre los dispositivos de almacenamiento de bloques disponibles:

lsblk -fm

El argumento f nos ofrece información sobre los sistemas de archivos instalados y el argumento m nos informa de quién es su propietario, su tamaño, etc.

En nuestro ejemplo, obtenemos este resultado.

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-003

Como puedes ver en la imagen, el disco sda tiene 25GB, de los que el conjunto de volúmenes LVM (sda3) mantiene 23GB. Sin embargo, el volumen lógico que contiene el directorio raíz del sistema  dispone únicamente de 11,5GB.

Para añadirle espacio, usaremos el comando lvextend con el siguiente formato:

sudo lvextend -L +5G /dev/ubuntu-vg/ubuntu-lv

Como puedes ver, en realidad la sintaxis es muy sencilla: el argumento -L nos permite indicar el tamaño de incremento, incluida la unidad (en este caso, +5G). A continuación, solo nos queda indicar el volumen sobre el que actuamos.

Al ejecutarlo, el comando nos confirma que el volumen ha cambiado de tamaño.

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-004

Con esto, puedes pensar que la tarea ha terminado, pero si utilizamos el comando df para obtener la cantidad de espacio disponible, comprobaremos que no ha cambiado nada:

df -h /

El argumento -h muestra la información en un formato fácilmente comprensible, con valores que sean múltiplos de 1024 (por eso muestra 12G en lugar de 11,5G). La barra inclinada (/) indica el volumen que nos interesa.

La salida nos muestra que el tamaño no ha cambiado.

Debería mostrar 16,5 (bueno… en realidad 17).

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-005

La solución pasa por utilizar el comando resize2fs, que nos permite agrandar o reducir el tamaño de un sistema de archivos:

sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

Comprobamos que el comando se aplica correctamente.

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-006

Y si ahora volvemos a aplicar el comando df

Comprobaremos que ahora sí ha cambiado el tamaño del volumen.

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-007

Como vemos, mientras sigamos teniendo espacio disponible, el proceso de añadir capacidad a un volumen lógico es bastante sencillo.

Añadir un nuevo disco al grupo de volúmenes

Después de leer el apartado anterior, puede que te asalte una pregunta: ¿qué pasará cuando hayamos consumido todo el espacio disponible?

La respuesta es muy sencilla: podremos añadir un nuevo disco y unirlo al grupo de volúmenes. Así, aumentaremos la capacidad de almacenamiento utilizable, sin tener que preocuparnos de la unidad física en la que se encuentra el espacio que asignemos. Veamos cómo lograrlo.

Antes de nada, supondremos que la parte física ya está resuelta. Es decir, hemos abierto el ordenador y hemos conectado un disco nuevo. Ubuntu 22.04 LTS te permite, incluso, que puedas realizar esta operación en caliente, es decir, con el sistema funcionando. No obstante, si no es estrictamente necesario, yo te recomiendo que lo hagas con el equipo apagado.

Si ahora volvemos a usar el comando lsblk, comprobaremos que aparece el nuevo disco:

lsblk -fm

Como es el segundo disco del equipo, aparece etiquetado como sdb.

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-008

Una vez comprobado que el disco está disponible, lo prepararemos para incorporarlo al grupo de volúmenes. Este trabajo de inicialización lo lleva a cabo el comando pvcreate, por lo que escribiremos algo como esto:

sudo pvcreate /dev/sdb

Aunque en este caso estamos añadiendo el disco completo, podríamos hacer la misma tarea sólo con una partición del mismo.

Comprobamos que el comando se aplica correctamente.

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-009

Basta con volver a usar el comando lsblk, para comprobar que el disco ya es del tipo adecuado…

Vemos que se identifica como LVM2_me (igual que sda3)

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-010

Solo nos queda añadir el volumen físico al grupo de volúmenes lógicos, para que su capacidad de almacenamiento quede a disposición de éste. Esto se consigue con el comando vgextend escribiendo lo siguiente:

sudo vgextend ubuntu-vg /dev/sdb

Como es lógico, ubuntu-vg representa el nombre del grupo de volúmenes y /dev/sdb es el volumen físico implicado.

Y comprobamos, de nuevo, que el comando se aplica correctamente.

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-011

Y para comprobar que todo ha sido correcto, podemos utilizar el comando vgdisplay, que es similar al comando lvdisplay que vimos al principio, pero que muestra todos los atributos de un grupo de volúmenes:

sudo vgdisplay

Salida del comando vgdisplay.

Añadir-espacio-de-almacenamiento-a-un-volumen-LVM-en-Ubuntu-Server-2204-LTS-012

Así comprobamos que el tamaño total del grupo de volúmenes es la suma de los dos volúmenes físicos implicados y que el espacio libre coincide con el que teníamos antes, mas el tamaño de la unidad que hemos añadido.

Y con esto completamos el contenido de este artículo. Espero que te resulte útil.