TL;DR — Resumen Rápido

Guía LVM para Linux: extiende volúmenes lógicos, agrega discos, amplía sistemas de archivos y expande particiones raíz en VMs de nube sin reinicio.

Gestionar almacenamiento en servidores Linux de producción significa que tarde o temprano enfrentarás un disco lleno. El Logical Volume Manager (LVM) fue diseñado exactamente para ese momento: te permite extender, reducir, crear snapshots y migrar almacenamiento en línea, a menudo sin ningún tiempo de inactividad. Esta guía cubre el flujo de trabajo completo de LVM, desde los fundamentos de la arquitectura hasta la expansión de la partición raíz en VMs de nube, con comandos reales que puedes ejecutar de inmediato.

Requisitos Previos

Antes de comenzar, asegúrate de tener:

  • Un sistema Linux con lvm2 instalado (apt install lvm2 o dnf install lvm2)
  • Acceso root o sudo
  • Familiaridad básica con los dispositivos de bloque de Linux (lsblk, fdisk, df)
  • Para escenarios de nube: capacidad de redimensionar el disco en el Portal de Azure o la consola de AWS antes de tocar Linux

Arquitectura LVM: PV → VG → LV

LVM añade tres capas de abstracción entre los discos físicos y el sistema de archivos:

CapaPrefijo de comandoDescripción
Volumen Físico (PV)pv*Un disco o partición sin procesar inicializado para LVM (pvcreate)
Grupo de Volúmenes (VG)vg*Un pool de uno o más PVs (vgcreate, vgextend)
Volumen Lógico (LV)lv*Una porción del espacio del VG que actúa como partición (lvcreate, lvextend)

El sistema de archivos (ext4, XFS, etc.) vive dentro de un LV. El SO ve el LV como un dispositivo de bloque (p. ej. /dev/myvg/data) y no tiene conocimiento de los discos físicos subyacentes. Esta indirección es lo que permite el redimensionamiento en línea y la migración transparente entre discos.

Verificar el Diseño LVM Actual

Siempre comienza por entender lo que tienes:

# Listar todos los Volúmenes Físicos
pvs

# Listar todos los Grupos de Volúmenes
vgs

# Listar todos los Volúmenes Lógicos
lvs

# Detalle completo de un VG específico
vgdisplay myvg

# Detalle completo de un LV específico
lvdisplay /dev/myvg/mylv

# Mostrar árbol de dispositivos de bloque (discos → particiones → LVs)
lsblk

# Mostrar uso de sistemas de archivos montados
df -h

La columna PFree en la salida de pvs muestra el espacio no asignado en el VG — esto es de donde toma lvextend.

Agregar un Nuevo Disco como Volumen Físico

Cuando conectas un nuevo disco (p. ej. /dev/sdb en una VM, o un nuevo EBS/disco gestionado), inicialízalo como PV:

# Confirmar que el kernel ve el nuevo disco
lsblk

# Inicializar el disco como Volumen Físico
pvcreate /dev/sdb

# Verificar
pvs

No necesitas particionar el disco primero — usar el disco completo (/dev/sdb) es válido y más simple. Si necesitas una partición, créala primero con fdisk o parted y usa /dev/sdb1.

Extender el VG y el LV

Paso 1 — Agregar el PV al VG

vgextend myvg /dev/sdb

Paso 2 — Extender el LV

Consumir todo el espacio libre restante del VG:

lvextend -l +100%FREE /dev/myvg/mylv

Agregar una cantidad fija (p. ej. 10 GB):

lvextend -L +10G /dev/myvg/mylv

El flag -r combina lvextend con el redimensionamiento del sistema de archivos en un solo paso (funciona para ext4 y XFS):

lvextend -l +100%FREE -r /dev/myvg/mylv

Redimensionar el Sistema de Archivos

Después de extender el LV, hay que informar al sistema de archivos sobre el nuevo espacio. Este paso es seguro sobre un sistema de archivos montado y en uso.

ext4 (mayoría de sistemas Ubuntu/Debian)

resize2fs /dev/myvg/mylv

No se necesita argumento de tamaño — resize2fs llena todo el LV. Puede ejecutarse con el sistema de archivos montado.

XFS (mayoría de sistemas RHEL/CentOS/Rocky)

XFS usa el punto de montaje, no el dispositivo:

xfs_growfs /mountpoint
# o para la raíz:
xfs_growfs /

Importante: XFS solo puede crecer, nunca reducirse. Intentar reducir un sistema de archivos XFS no está soportado.

Extender la Partición Raíz en VMs de Nube (Sin Reinicio)

Este es el escenario más común en el mundo real. Tienes una VM de nube (Azure o AWS) cuyo disco del SO está quedándose sin espacio. Esta es la secuencia completa — sin reinicio necesario.

1. Redimensionar el disco en la consola de nube

  • Azure: Almacenamiento → Discos → seleccionar el disco del SO → Tamaño de disco → aumentar → Guardar
  • AWS: EC2 → Volumes → Modify Volume → establecer nuevo tamaño → Modify

Espera a que el redimensionamiento se complete antes de continuar.

2. Extender la partición en el lado Linux

# Confirmar que el kernel ve el nuevo tamaño
lsblk

# Ampliar la partición (p. ej. partición 2 en /dev/sda)
sudo growpart /dev/sda 2

# Verificar que la partición es ahora más grande
lsblk

growpart está en el paquete cloud-utils o cloud-guest-utils. Extiende la partición sin destruir datos.

3. Informar a LVM sobre el nuevo tamaño del PV

sudo pvresize /dev/sda2

4. Extender el LV

sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

Reemplaza ubuntu-vg / ubuntu-lv con los nombres reales del VG y LV de lvs.

5. Ampliar el sistema de archivos

Para ext4:

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

Para XFS:

sudo xfs_growfs /

6. Confirmar

df -h /

El sistema de archivos raíz ahora muestra el tamaño expandido. No se necesitó ningún reinicio.

Reducir un Volumen Lógico (Peligroso — Solo ext4)

Reducir es más arriesgado que extender y solo debe hacerse cuando tienes una copia de seguridad reciente. XFS no puede reducirse — este procedimiento aplica solo a ext4.

# 1. Desmontar el sistema de archivos (la raíz no puede reducirse en vivo)
umount /dev/myvg/data

# 2. Verificar y reparar el sistema de archivos antes de reducir
e2fsck -f /dev/myvg/data

# 3. Reducir el sistema de archivos PRIMERO (al tamaño objetivo, p. ej. 20G)
resize2fs /dev/myvg/data 20G

# 4. Reducir el LV para que coincida (debe ser >= tamaño del sistema de archivos)
lvreduce -L 20G /dev/myvg/data

# 5. Montar nuevamente
mount /dev/myvg/data /mnt/data

Advertencia: Siempre reduce el sistema de archivos antes que el LV. Reducir el LV primero destruye datos al truncar el sistema de archivos.

Snapshots LVM

Los snapshots capturan el estado de un LV en un momento dado. Son invaluables antes de operaciones arriesgadas (actualizaciones del SO, migraciones de bases de datos).

# Crear un snapshot de 5 GB de /dev/myvg/mylv
lvcreate --snapshot -L 5G -n mylv_snap /dev/myvg/mylv

# Montar el snapshot en solo lectura para inspección
mount -o ro /dev/myvg/mylv_snap /mnt/snapshot

# Revertir (combinar el snapshot con el origen)
lvconvert --merge /dev/myvg/mylv_snap

# Eliminar el snapshot sin revertir
lvremove /dev/myvg/mylv_snap

Los snapshots son CoW (Copy-on-Write): solo consumen espacio a medida que el LV de origen cambia. Mantén el LV del snapshot más pequeño que las escrituras esperadas durante su vida útil.

Mover Datos Entre Volúmenes Físicos

pvmove migra extensiones entre PVs mientras el LV permanece en línea. Úsalo para vaciar un disco antes de eliminarlo.

# Mover todas las extensiones de /dev/sdb a cualquier otro PV en el VG
pvmove /dev/sdb

# Mover extensiones de un LV específico únicamente
pvmove -n /dev/myvg/mylv /dev/sdb /dev/sdc

# Monitorear progreso
lvs -a -o name,copy_percent

Después de que pvmove complete:

# Eliminar el PV del VG
vgreduce myvg /dev/sdb

# Eliminar metadatos LVM del disco
pvremove /dev/sdb

LVM vs ZFS vs Btrfs vs Particiones Simples

CaracterísticaLVMZFSBtrfsParticiones simples
Extensión en líneaNo
Reducción en líneaSolo ext4 (desmontar)NoNo
SnapshotsSí (CoW)Sí (CoW)Sí (CoW)No
RAID integradoVia dm-raidSí (limitado)Via mdadm
Compresión transparenteNoNo
Autocorrección (checksums)NoParcialNo
ComplejidadMediaAltaMediaBaja
Soporte por distroUniversalUbuntu/ProxmoxFedora/openSUSEUniversal
Predeterminado en nubeSí (RHEL/Ubuntu)Solo ProxmoxSolo FedoraHeredado

Cuándo usar LVM: Necesitas redimensionamiento flexible en distros estándar sin aprender un nuevo modelo de almacenamiento.

Cuándo usar ZFS: Necesitas checksums, RAID integrado o compresión y estás en Ubuntu o un dispositivo de almacenamiento.

Errores Comunes

  • Reducir el sistema de archivos después del LV destruye datos. Siempre reduce el sistema de archivos primero.
  • Snapshot lleno = snapshot inválido. Monitorea el uso con lvs y expande si es necesario.
  • XFS no puede reducirse. Intentarlo falla con un error claro.
  • Olvidar pvresize después de redimensionar el disco de nube significa que LVM sigue viendo el tamaño antiguo del PV.
  • Thin pools LVM tienen herramientas separadas. El sobreaprovisionamiento sin monitoreo causa pérdida silenciosa de datos al agotar el pool.

Resumen

  • LVM añade tres capas (PV, VG, LV) que permiten gestión de almacenamiento flexible en línea.
  • Usa pvs / vgs / lvs y lsblk para auditar el diseño actual antes de hacer cambios.
  • Extender siempre es seguro: pvcreate → vgextend → lvextend → resize2fs / xfs_growfs.
  • La expansión de la raíz en VMs de nube requiere growpart → pvresize → lvextend → resize2fs sin reinicio.
  • Reducir solo es posible en ext4 y requiere desmontar; siempre haz una copia de seguridad antes.
  • Los snapshots son capturas CoW baratas — toma uno antes de cada cambio importante.
  • XFS solo crece; ZFS y Btrfs ofrecen funciones más ricas con mayor complejidad.

Artículos Relacionados