Actualización editorial: artículo original de 2020, reescrito y ampliado el 31 de octubre de 2026. Los comandos deben probarse primero en un laboratorio.
Logical Volume Manager (LVM) agrega una capa de abstracción entre discos o particiones y los dispositivos de bloque que reciben sistemas de archivos, bases de datos o máquinas virtuales. Permite agrupar capacidad, crear volúmenes con nombres comprensibles, extenderlos, mover datos entre dispositivos y aplicar funciones como snapshots, thin provisioning, caché o VDO.
1. Componentes
| Elemento | Descripción | Ejemplo |
|---|---|---|
| PV | Disco, partición o dispositivo preparado para LVM | /dev/sdb |
| VG | Conjunto de capacidad aportada por uno o varios PV | vg_datos |
| LV | Dispositivo lógico creado dentro de un VG | /dev/vg_datos/lv_app |
| PE/LE | Unidades de asignación física y lógica | Normalmente 4 MiB por extent |
2. Inventario antes de tocar discos
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,UUID
blkid
pvs
vgs
lvs -a -o +devices,segtype,data_percent,metadata_percent
findmnt
df -hT
pvcreate, mkfs, reducción de volúmenes y eliminación de firmas pueden destruir datos. Confirma nombre, tamaño, WWN y montaje del dispositivo. Un respaldo no existe hasta que su restauración ha sido probada.3. Crear un volumen desde cero
# 1. Preparar el dispositivo completo como PV
sudo pvcreate /dev/sdb
# 2. Crear el grupo de volúmenes
sudo vgcreate vg_datos /dev/sdb
# 3. Crear un LV de 50 GiB
sudo lvcreate -L 50G -n lv_app vg_datos
# 4. Crear XFS y montar
sudo mkfs.xfs /dev/vg_datos/lv_app
sudo mkdir -p /srv/app
sudo mount /dev/vg_datos/lv_app /srv/app
# 5. Obtener UUID para /etc/fstab
sudo blkid /dev/vg_datos/lv_app
# Ejemplo de entrada persistente en /etc/fstab
UUID=<uuid-real> /srv/app xfs defaults 0 0
# Validar sin reiniciar
sudo umount /srv/app
sudo mount -a
findmnt /srv/app
4. Extender capacidad
Extender suele ser una operación en línea, pero el comando del sistema de archivos cambia. XFS crece montado con xfs_growfs; ext4 usa resize2fs. La opción -r de lvextend intenta redimensionar ambos niveles usando fsadm cuando es compatible.
# Ver espacio libre del VG
vgs
# Extender LV y sistema de archivos en una sola operación
sudo lvextend -r -L +20G /dev/vg_datos/lv_app
# Consumir todo el espacio libre restante
sudo lvextend -r -l +100%FREE /dev/vg_datos/lv_app
# Verificación
lvs -o lv_name,vg_name,lv_size,segtype
df -hT /srv/app
Añadir otro disco al VG
sudo pvcreate /dev/sdc
sudo vgextend vg_datos /dev/sdc
pvs -o pv_name,vg_name,pv_size,pv_free
vgs
5. Mover datos y retirar un PV
pvmove migra extents entre PV dentro del mismo VG. Es útil para reemplazar un disco, pero genera I/O y debe supervisarse.
# Mover todos los extents de /dev/sdb a otros PV con espacio
sudo pvmove /dev/sdb
# Confirmar que ya no contiene extents asignados
pvs -o pv_name,pv_used,pv_free
# Retirarlo del VG y borrar metadatos LVM
sudo vgreduce vg_datos /dev/sdb
sudo pvremove /dev/sdb
6. Snapshots: punto en el tiempo, no respaldo
Un snapshot clásico registra bloques que cambian después de su creación. Si se llena, se vuelve inválido. Además, un snapshot en el mismo almacenamiento comparte el dominio de falla del original; sirve para una ventana corta de consistencia o reversión, pero no reemplaza una copia externa.
# Crear snapshot de 10 GiB
sudo lvcreate -L 10G -s -n lv_app_snap /dev/vg_datos/lv_app
# Vigilar el porcentaje consumido
lvs -o lv_name,origin,lv_size,data_percent,lv_attr
# Montarlo como solo lectura para copiar datos
sudo mkdir -p /mnt/app-snapshot
sudo mount -o ro,nouuid /dev/vg_datos/lv_app_snap /mnt/app-snapshot
# Eliminar cuando termine la copia
sudo umount /mnt/app-snapshot
sudo lvremove /dev/vg_datos/lv_app_snap
Antes del snapshot se debe coordinar la consistencia de la aplicación: congelar el sistema de archivos, ejecutar hooks de la base de datos o detener escrituras según el producto.
7. Thin provisioning
Un thin pool permite presentar volúmenes lógicos mayores que la capacidad física realmente consumida. La flexibilidad introduce un riesgo: si se agotan los datos o los metadatos del pool, varias cargas pueden fallar al mismo tiempo.
# Crear thin pool físico de 200 GiB
sudo lvcreate -L 200G --type thin-pool -n pool_vm vg_datos
# Crear LV virtual de 500 GiB
sudo lvcreate -V 500G --thinpool pool_vm -n vm01 vg_datos
# Supervisar datos y metadatos
lvs -a -o lv_name,lv_size,pool_lv,data_percent,metadata_percent
- Alertar antes de que datos o metadatos alcancen niveles críticos.
- Definir autoextensión solo si el VG conserva espacio real suficiente.
- No sumar la capacidad virtual como si estuviera físicamente disponible.
- Probar qué hace la aplicación cuando el bloque queda sin espacio.
8. Caché y VDO
LVM cache puede usar un dispositivo rápido como caché de uno más lento. VDO añade deduplicación, compresión y thin provisioning a nivel de bloque. Ambos pueden mejorar una carga adecuada, pero agregan metadatos, consumo de memoria y procedimientos de recuperación. Primero se mide el patrón de I/O; después se decide.
La guía de Red Hat sobre VDO sobre LVM explica los componentes y límites actuales.
9. Reducir: la operación más delicada
XFS no admite reducción. Para reducir un LV con ext4, el sistema de archivos debe desmontarse, comprobarse y reducirse antes de reducir el dispositivo lógico. Hacerlo en el orden contrario corta datos.
10. Metadatos y recuperación
LVM guarda automáticamente copias de configuración en /etc/lvm/backup y archivos históricos en /etc/lvm/archive. Estos archivos ayudan a reconstruir metadatos, pero no contienen los datos del LV.
sudo vgcfgbackup vg_datos
sudo vgcfgrestore --list vg_datos
sudo lvs -a -o +devices
# Detectar dispositivos y reconstruir el inventario
sudo pvscan
sudo vgscan
sudo lvscan
11. Lista de operación
- Usar nombres que indiquen función y ambiente, no nombres del disco físico.
- Reservar espacio del VG para crecimiento y operaciones temporales.
- Monitorear LV, VG, thin pool, sistema de archivos e inodos.
- Registrar cambios de capacidad y su motivo.
- Usar UUID o rutas LVM estables en
/etc/fstab. - Respaldar fuera del VG y probar recuperación completa.
Conclusión
LVM da flexibilidad real cuando se entiende su jerarquía y se monitorean sus límites. Extender y mover capacidad es seguro con inventario y verificación; thin provisioning y snapshots exigen alertas; reducir requiere máxima cautela. La herramienta no reemplaza una estrategia de respaldo ni la disciplina de operación.
