Comandos esenciales de LVM: guía rápida

Cheatsheet con los comandos más usados de LVM (Logical Volume Manager) para la gestión de volúmenes lógicos en Linux.

Esta chuleta cubre los comandos que necesitarás tanto en el día a día como en escenarios de rescate, por ejemplo al recuperar la contraseña de root desde un LiveCD en un sistema con LVM.

En un homelab real, los PV rara vez son un disco suelto: lo habitual es crearlos sobre un array de RAID software con mdadm (por ejemplo /dev/md0) para no perder los volúmenes lógicos si falla un disco.

Los comandos básicos de LVM organizados por nivel

/dev/sdb, /dev/sdc, /dev/sdd    (discos o particiones físicas)

   │  pvcreate

PV — Volúmenes físicos

   │  vgcreate / vgextend

vg_datos                        (grupo de volúmenes: el "pool" de espacio)

   │  lvcreate
   ├── lv_home    (ej. 50G)
   └── lv_backup  (ej. 50G)     ← formateas y montas cada LV como un disco normal

1. Volúmenes Físicos (PV - Physical Volumes)

  • pvs - ver resumen de volúmenes físicos
  • pvdisplay - ver detalles completos
  • pvcreate /dev/sdb - crear un volumen físico

2. Grupos de Volúmenes (VG - Volume Groups)

  • vgs - ver resumen de grupos
  • vgdisplay - ver detalles completos
  • vgcreate nombre_vg /dev/sdb - crear grupo
  • vgextend nombre_vg /dev/sdc - añadir disco al grupo

3. Volúmenes Lógicos (LV - Logical Volumes)

  • lvs - ver resumen de volúmenes lógicos
  • lvdisplay - ver detalles completos
  • lvcreate -L 10G -n nombre_lv nombre_vg - crear volumen de 10GB
  • lvextend -L +5G /dev/nombre_vg/nombre_lv - ampliar 5GB más
  • lvresize -L 20G /dev/nombre_vg/nombre_lv - establecer tamaño fijo

Truco para recordarlos

El patrón es siempre el mismo:

  • Consulta rápida: pvs, vgs, lvs (la “s” de summary)
  • Consulta detallada: pvdisplay, vgdisplay, lvdisplay
  • Crear: pvcreate, vgcreate, lvcreate
  • Extender: vgextend, lvextend

Secuencia típica que usarás

# 1. Ver qué discos tienes disponibles
lsblk

# 2. Crear volumen físico en el nuevo disco
pvcreate /dev/sdb

# 3. Añadirlo a un grupo existente
vgextend vg_datos /dev/sdb
# o crear uno nuevo
vgcreate vg_datos /dev/sdb

# 4. Ampliar el volumen lógico
lvextend -L +50G /dev/vg_datos/lv_archivos
# o para usar todo el espacio disponible:
lvextend -l +100%FREE /dev/vg_datos/lv_archivos

# 5. Ampliar el sistema de archivos
resize2fs /dev/vg_datos/lv_archivos  # para ext4
# o (xfs_growfs necesita el punto de montaje, no el dispositivo; sustituye por el punto de montaje real de tu volumen)
xfs_growfs /mnt/archivos  # para xfs

Proceso para extender un volumen LVM

1. Primero, verificar el estado actual

# Ver los volúmenes lógicos y su tamaño
lvs

# Ver cuánto espacio libre tiene el grupo de volúmenes
vgs

2. Extender el volumen lógico

Tienes dos opciones:

# Opción A: Añadir una cantidad específica
lvextend -L +10G /dev/nombre_vg/nombre_lv

# Opción B: Usar todo el espacio libre disponible
lvextend -l +100%FREE /dev/nombre_vg/nombre_lv

3. Extender el sistema de archivos

## Importante

lvextend solo amplía el volumen lógico. Sin este paso adicional el sistema de archivos sigue viendo el tamaño antiguo y no verás el espacio nuevo disponible.

# Para ext4
resize2fs /dev/nombre_vg/nombre_lv

# Para xfs (necesita el punto de montaje, no el dispositivo; sustituye por el punto de montaje real de tu volumen)
xfs_growfs /punto/de/montaje

4. Verificar que se aplicó

df -h

Ejemplo práctico completo

# 1. Ver estado
lvs
vgs

# 2. Extender 20GB más al volumen
lvextend -L +20G /dev/vg_datos/lv_home

# 3. Extender el sistema de archivos
resize2fs /dev/vg_datos/lv_home

# 4. Confirmar
df -h /home

¿Y si no hay espacio libre en el VG?

Si vgs muestra que no hay espacio libre (VFree = 0), primero necesitas añadir un disco nuevo:

# 1. Preparar el nuevo disco
pvcreate /dev/sdc

# 2. Añadirlo al grupo de volúmenes
vgextend nombre_vg /dev/sdc

# 3. Ahora sí, extender el volumen lógico
lvextend -L +50G /dev/nombre_vg/nombre_lv

# 4. Extender el sistema de archivos
resize2fs /dev/nombre_vg/nombre_lv

Casos típicos en administración LVM

1. Crear un nuevo volumen lógico desde cero

# Ver espacio disponible
vgs

# Crear volumen de 50GB
lvcreate -L 50G -n lv_backup vg_datos

# Formatear
mkfs.ext4 /dev/vg_datos/lv_backup

# Montar
mkdir /backup
mount /dev/vg_datos/lv_backup /backup

# Hacerlo permanente (añadir a /etc/fstab)
echo "/dev/vg_datos/lv_backup /backup ext4 defaults 0 2" >> /etc/fstab

2. Reducir un volumen

## Peligro

Reducir un volumen lógico puede provocar pérdida de datos si el sistema de archivos no se reduce primero, o si el tamaño calculado es incorrecto. Haz una copia de seguridad antes de continuar.

# Primero desmontar
umount /dev/vg_datos/lv_old

# Verificar el sistema de archivos
e2fsck -f /dev/vg_datos/lv_old

# Reducir el sistema de archivos PRIMERO (siempre un poco menos)
resize2fs /dev/vg_datos/lv_old 38G

# Luego reducir el volumen lógico
lvreduce -L 40G /dev/vg_datos/lv_old

# Volver a montar
mount /dev/vg_datos/lv_old /mnt/old

3. Mover datos entre discos físicos (migración)

# Añadir disco nuevo al VG
pvcreate /dev/sdd
vgextend vg_datos /dev/sdd

# Mover datos del disco viejo al nuevo
pvmove /dev/sdb /dev/sdd

# Quitar el disco viejo del VG
vgreduce vg_datos /dev/sdb
pvremove /dev/sdb

4. Crear snapshot (copia instantánea para backups)

# Crear snapshot del volumen (necesita espacio libre en el VG)
lvcreate -L 10G -s -n snap_home /dev/vg_datos/lv_home

# Montar el snapshot para hacer backup
mkdir /mnt/snapshot
mount /dev/vg_datos/snap_home /mnt/snapshot

# Hacer backup tranquilamente
tar czf /backup/home.tar.gz /mnt/snapshot

# Eliminar snapshot cuando termines
umount /mnt/snapshot
lvremove /dev/vg_datos/snap_home

5. Ver información detallada cuando algo falla

# Ver TODO sobre un volumen específico
lvdisplay -m /dev/vg_datos/lv_home

# Ver en qué discos físicos está un volumen
lvs -o +devices /dev/vg_datos/lv_home

# Ver todos los PV y su uso
pvs -o +pv_used

6. Renombrar volúmenes

# Renombrar volumen lógico
lvrename vg_datos lv_old lv_antiguo

# Renombrar grupo de volúmenes
vgrename vg_old vg_nuevo

7. Eliminar volúmenes (orden inverso a la creación)

# 1. Desmontar
umount /mnt/datos

# 2. Eliminar volumen lógico
lvremove /dev/vg_datos/lv_temporal

# 3. Si quieres eliminar el VG completo
vgremove vg_datos

# 4. Eliminar volúmenes físicos
pvremove /dev/sdb

8. Activar/desactivar volúmenes

# Desactivar un volumen (para mantenimiento)
lvchange -an /dev/vg_datos/lv_home

# Reactivar
lvchange -ay /dev/vg_datos/lv_home

# Activar todos los VG (útil tras arranque o rescate)
vgchange -ay

Los casos más frecuentes que verás en el día a día son el 1 (crear nuevos volúmenes), el extender que ya vimos, y el 4 (snapshots para backups seguros, un buen complemento a un backup incremental con rsync). El 3 (migración) lo usarás cuando cambies discos.

$ curl tengoping.com/rss.xml | subscribe [suscribirse por RSS →]