LVM permite ampliar un volumen lógico mientras está en uso, siempre que el sistema de archivos también admita crecimiento en línea. Sin embargo, aumentar el tamaño del disco desde el panel del proveedor no hace que el nuevo espacio llegue automáticamente a las aplicaciones.

Flujo de la ampliación con LVM: cada capa, del disco a la partición, el volumen físico, el lógico y el sistema de archivos, se amplía por separado
Flujo de lvm

El espacio debe propagarse por estas capas:

La capacidad útil depende del disco menor y del espacio todavía no incorporado al grupo de volúmenes

Disco → Partición → Volumen físico → Volume Group → Volumen lógico → Sistema de archivos

Si el volumen físico utiliza el disco completo, la capa de partición no existe y debe omitirse.

Aunque el crecimiento de LVM es una operación habitual, un dispositivo mal identificado o un corte durante una modificación de particiones puede causar pérdida de datos. Conserva un backup externo y acceso a la consola del servidor.

Escenario utilizado

Los comandos emplean esta topología de ejemplo:

ComponenteValor de ejemplo
Disco ampliado/dev/sdb
Partición LVM/dev/sdb1
Volume Groupvg_datos
Volumen lógico/dev/vg_datos/lv_datos
Punto de montaje/srv/datos
Crecimiento solicitado20 GiB

Sustituye estos valores por los obtenidos en tu servidor. No ejecutes los comandos basándote únicamente en nombres de ejemplo.

Requisitos previos

  • Ubuntu Server 24.04 LTS con lvm2.
  • Disco ya ampliado desde el panel del proveedor.
  • Backup verificado o snapshot consistente.
  • Acceso mediante sudo y consola alternativa.
  • Espacio suficiente en el proveedor para completar la ampliación.
  • Confirmación del sistema de archivos: ext4 y XFS utilizan comandos diferentes.

Esta guía no cubre LUKS, LVM thin pools, RAID, multipath ni reducción de volúmenes. Si lsblk muestra capas crypt, raid, mpath o thin, revisa el procedimiento específico antes de continuar.

Paso 1: registrar la topología actual

Identifica el disco, el volumen físico, el VG, el LV, el sistema de archivos y el punto de montaje:

lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS
findmnt /srv/datos

sudo pvs -o pv_name,vg_name,pv_size,pv_free
sudo vgs -o vg_name,vg_size,vg_free
sudo lvs -o lv_path,vg_name,lv_name,lv_size,segtype
df -hT /srv/datos

Para conocer el dispositivo que sostiene el punto de montaje:

findmnt -no SOURCE,FSTYPE,TARGET /srv/datos
sudo lvs -o lv_path,devices

No continúes hasta poder responder estas preguntas:

  • ¿Qué disco fue ampliado?
  • ¿El PV utiliza el disco completo o una partición?
  • ¿Cuál es el VG?
  • ¿Cuál es el LV que se debe ampliar?
  • ¿El sistema de archivos es ext4 o XFS?

LVM organiza el almacenamiento en volúmenes físicos, grupos de volúmenes y volúmenes lógicos. Cada capa debe disponer de espacio antes de que la siguiente pueda crecer. Documentación de Ubuntu sobre LVM.

Paso 2: preparar la recuperación

Crea un backup de los metadatos del Volume Group:

sudo vgcfgbackup vg_datos

Comprueba que el archivo exista:

sudo ls -l /etc/lvm/backup/vg_datos

Este archivo contiene la estructura de LVM, pero no los datos almacenados en el LV. No sustituye un backup o snapshot del volumen.

Registra también el estado inicial:

sudo pvs > /root/pvs-antes.txt
sudo vgs > /root/vgs-antes.txt
sudo lvs -a -o +devices > /root/lvs-antes.txt
df -hT > /root/df-antes.txt

Paso 3: comprobar que el sistema operativo ve el nuevo tamaño

Después de ampliar el disco desde el panel del proveedor:

lsblk -b -o NAME,PATH,SIZE,TYPE
sudo blockdev --getsize64 /dev/sdb

El tamaño de /dev/sdb debe coincidir con el nuevo valor asignado.

Si todavía aparece el tamaño anterior, no ejecutes growpart ni pvresize. Sigue el procedimiento de reescaneo indicado por el proveedor o reinicia el servidor durante una ventana de mantenimiento.

Paso 4: determinar si el PV está en el disco o en una partición

sudo pvs -o pv_name,pv_size,pv_free,vg_name
lsblk /dev/sdb

Existen dos posibilidades:

PV sobre disco completo: /dev/sdb
PV dentro de partición:  /dev/sdb1

Ejecuta únicamente el procedimiento correspondiente.

Caso A: el PV utiliza el disco completo

Cuando pvs muestra /dev/sdb, no hay que modificar ninguna tabla de particiones.

Realiza una simulación:

sudo pvresize --test /dev/sdb

Luego aplica el crecimiento:

sudo pvresize /dev/sdb

pvresize puede ampliar un PV que ya pertenece a un VG y contiene volúmenes lógicos activos. La opción --test evita la escritura de metadatos, aunque un resultado exitoso no reemplaza las comprobaciones posteriores. Manual de pvresize.

Comprueba el resultado:

sudo pvs -o pv_name,pv_size,pv_free,vg_name
sudo vgs -o vg_name,vg_size,vg_free

El tamaño del PV y el espacio libre del VG deberían aumentar.

Caso B: el PV está dentro de una partición

Si pvs muestra /dev/sdb1, primero debes ampliar esa partición.

Instala growpart si no está disponible:

sudo apt update
sudo apt install cloud-guest-utils

Comprueba la tabla de particiones:

sudo parted /dev/sdb unit s print free

Simula la ampliación de la partición 1:

sudo growpart -N /dev/sdb 1

-N muestra qué cambiaría sin modificar la tabla. Si el resultado es correcto, aplica:

sudo growpart /dev/sdb 1
sudo partprobe /dev/sdb
lsblk -b /dev/sdb

La sintaxis es growpart DISCO NÚMERO_DE_PARTICIÓN; por eso se utiliza /dev/sdb 1, no /dev/sdb1. La herramienta amplía la partición hasta ocupar el espacio contiguo disponible. Manual de growpart.

Si el kernel no refleja el nuevo tamaño de /dev/sdb1, detente y reinicia durante una ventana controlada antes de modificar el PV.

Cuando la partición ya sea mayor:

sudo pvresize --test /dev/sdb1
sudo pvresize /dev/sdb1

Comprueba:

sudo pvs -o pv_name,pv_size,pv_free,vg_name
sudo vgs -o vg_name,vg_size,vg_free

Paso 5: validar el espacio libre del VG

Antes de ampliar el LV:

sudo vgs -o vg_name,vg_size,vg_free
sudo lvs -o lv_path,lv_size,vg_name

VFree debe mostrar al menos el espacio que deseas asignar.

Si el VG no tiene espacio libre, no continúes con lvextend. Revisa si growpart y pvresize actuaron sobre el PV correcto.

Paso 6: ampliar el volumen lógico

Para agregar exactamente 20 GiB:

sudo lvextend --test \
  -L +20G \
  /dev/vg_datos/lv_datos

Si la simulación identifica correctamente el LV y existe espacio suficiente:

sudo lvextend \
  -L +20G \
  /dev/vg_datos/lv_datos

Comprueba el nuevo tamaño:

sudo lvs -o lv_path,lv_size,vg_name
sudo vgs -o vg_name,vg_free

El prefijo + es importante: -L +20G agrega 20 GiB, mientras que -L 20G intenta establecer un tamaño total de 20 GiB.

También es posible consumir todo el espacio disponible:

sudo lvextend -l +100%FREE /dev/vg_datos/lv_datos

Usa esta variante solo si quieres asignar todo el espacio libre del VG al mismo LV. Reservar parte del VG permite futuras ampliaciones, snapshots o nuevos volúmenes. Manual de lvextend.

Paso 7: ampliar el sistema de archivos

Ampliar el LV no amplía automáticamente el sistema de archivos cuando se ejecuta lvextend sin --resizefs.

Confirma el tipo:

findmnt -no SOURCE,FSTYPE,TARGET /srv/datos

Si el sistema de archivos es ext4

sudo resize2fs /dev/vg_datos/lv_datos

Al omitir un tamaño, resize2fs expande ext4 hasta ocupar todo el dispositivo subyacente. Los sistemas ext4 modernos pueden crecer mientras están montados. Manual de resize2fs.

Si el sistema de archivos es XFS

XFS debe estar montado y se amplía utilizando el punto de montaje:

sudo xfs_growfs -n /srv/datos
sudo xfs_growfs /srv/datos

La opción -n muestra la geometría sin modificarla. xfs_growfs conserva el contenido existente y hace disponible el nuevo espacio. Manual de xfs_growfs.

No ejecutes resize2fs sobre XFS ni xfs_growfs sobre ext4.

Paso 8: comprobar el resultado

Valida toda la cadena:

lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS

sudo pvs -o pv_name,pv_size,pv_free,vg_name
sudo vgs -o vg_name,vg_size,vg_free
sudo lvs -o lv_path,lv_size,vg_name

findmnt /srv/datos
df -hT /srv/datos

Comprueba también que el volumen siga siendo escribible:

sudo touch /srv/datos/.prueba-lvm
sudo sync
sudo rm /srv/datos/.prueba-lvm

El resultado correcto debe mostrar:

  • El disco con el nuevo tamaño.
  • La partición ampliada, cuando exista.
  • El PV con mayor capacidad.
  • Espacio nuevo o ya asignado en el VG.
  • El LV con el tamaño solicitado.
  • El sistema de archivos con más espacio en df.

¿Se puede usar lvextend -r?

LVM permite ampliar el LV y el sistema de archivos en una sola operación:

sudo lvextend -r -L +20G /dev/vg_datos/lv_datos

La opción -r o --resizefs utiliza fsadm para intentar redimensionar el sistema de archivos junto con el LV.

Para procedimientos críticos, separar lvextend del crecimiento del sistema de archivos facilita comprobar cada capa y elegir explícitamente entre resize2fs y xfs_growfs.

Problemas frecuentes

El disco sigue mostrando el tamaño anterior

La ampliación todavía no fue detectada por el kernel. Revisa el panel del proveedor, confirma el dispositivo correcto y realiza el reescaneo o reinicio indicado para esa plataforma.

growpart informa NOCHANGE

La partición puede ocupar ya todo el disco o no tener espacio contiguo después de ella. Revisa:

sudo parted /dev/sdb unit s print free

No elimines y recrees la partición manualmente sin registrar y conservar exactamente su sector inicial.

pvresize termina correctamente, pero el VG no gana espacio

Comprueba si modificaste el PV correcto y si la partición realmente creció:

lsblk -b /dev/sdb
sudo pvs -o pv_name,pv_size,pv_free,vg_name

El LV creció, pero df muestra el tamaño anterior

Falta ampliar el sistema de archivos. Confirma si es ext4 o XFS y utiliza el comando correspondiente.

xfs_growfs indica que el sistema no está montado

Ejecuta el comando sobre el punto de montaje real, no sobre una ruta supuesta:

findmnt -t xfs
sudo xfs_growfs /PUNTO_DE_MONTAJE

El servidor utiliza LUKS

Si el PV está sobre un dispositivo /dev/mapper/... creado por cryptsetup, existe una capa adicional. Debes ampliar correctamente el contenedor cifrado antes de ejecutar pvresize. No continúes con esta guía sin adaptar el procedimiento.

Rollback y recuperación

Una ampliación no tiene un rollback universal.

  • El backup de vgcfgbackup solo permite recuperar metadatos de LVM.
  • Reducir el LV con lvreduce sin reducir antes el sistema de archivos destruye datos.
  • XFS no admite reducción.
  • Reducir ext4 exige un procedimiento independiente, normalmente fuera de línea.
  • Un snapshot creado dentro del mismo VG no sustituye un backup externo.

Si la ampliación falla antes de modificar datos, detente, registra el estado y consulta el backup de metadatos. Si existe corrupción o pérdida de acceso, restaura el snapshot o backup realizado antes del cambio.

No uses lvreduce, pvresize --setphysicalvolumesize ni herramientas de particionado como intento improvisado de “volver atrás”.

Buenas prácticas

  • Amplía por una cantidad definida en lugar de consumir siempre 100%FREE.
  • Registra los tamaños antes y después de cada capa.
  • Identifica dispositivos por su topología y UUID, no solo por el nombre /dev/sdX.
  • Mantén alertas de capacidad sobre el sistema de archivos y el VG.
  • Verifica que los backups puedan restaurarse.
  • Programa una ventana de mantenimiento para volúmenes raíz o servicios críticos.
  • Documenta el disco, PV, VG, LV, sistema de archivos y punto de montaje afectados.

Cloud Servers by Donweb

Ya sabes ampliar el disco sin desmontar nada. Empieza con uno que puedas ampliar.
Alojamiento ultra rápido, escalable y con alta disponibilidad.

  • Performance que te sorprenderá
  • Rápida escalabilidad y sin limitaciones
  • Arquitectura de alta disponibilidad
  • Soporte experto y ejecutivos de cuenta
  • Pagos en tu moneda y facturación local

Elige un Cloud Server escalable