¿Cómo gestionar y crear particiones LVM?

Aprender Certificado Fundación Linux en España contenido Técnicos desde Cero en CiberED

En el capítulo 4 aprendiste a particionar discos y formatearlos. Aunque el particionado tradicional tiene limitaciones: redimensionar una partición es complejo, a menudo requiere desmontar el sistema de archivos y puede implicar pérdida de datos.

11.1. Introducción: ¿Por qué LVM?

LVM (Logical Volume Manager) añade una capa de abstracción que supera estas rigideces.

Con LVM puedes:

  • Redimensionar volúmenes lógicos (particiones lógicas) en caliente, sin desmontar.
  • Agrupar varios discos físicos en un solo almacén de datos.
  • Crear snapshots (copias instantáneas) para backups consistentes.
  • Añadir y retirar discos sobre la marcha.

LVM organiza el almacenamiento en tres niveles:

  1. PV (Physical Volume): el disco o partición física que se “entrega” a LVM.
  2. VG (Volume Group): agrupación de PVs que forma un gran bloque de almacenamiento virtual.
  3. LV (Logical Volume): “partición lógica” creada dentro de un VG, que se formatea y monta como cualquier dispositivo de bloques.

La estructura se resume en:

Disco → Partición LVM → PV → VG → LV → Formateo → Montaje

11.2. Preparación: particiones para LVM

Antes de crear PVs, necesitamos particiones cuyo tipo identifique a LVM. Con fdisk, el código es 8e; con gdisk, es 8e00; con parted, se establece la bandera lvm.

Ejemplo con dos discos (/dev/sdb y /dev/sdc) de 10 GB cada uno:

sudo fdisk /dev/sdb
# o → nueva tabla MBR
# n → p → 1 → Enter → Enter
# t → 8e
# w

Repite para /dev/sdc. Al final tendremos /dev/sdb1 y /dev/sdc1.

Verificar las particiones:

lsblk
sudo fdisk -l | grep -E 'sdb1|sdc1'

11.3. Creación de Physical Volumes (PV)

Una vez preparadas las particiones, las inicializamos como volúmenes físicos LVM:

sudo pvcreate /dev/sdb1 /dev/sdc1

Comprobamos:

sudo pvs           # resumen
sudo pvdisplay     # detalle
sudo pvscan        # escanea PVs

Eliminar un PV (para deshacer): sudo pvremove /dev/sdb1.

11.4. Creación de Volume Groups (VG)

Un VG agrupa uno o más PVs y actúa como el “depósito” del que se extrae espacio para los volúmenes lógicos.

Crear un VG llamado vg_datos con los dos PVs:

sudo vgcreate vg_datos /dev/sdb1 /dev/sdc1

Consultas:

sudo vgs                    # resumen
sudo vgdisplay vg_datos     # detalle, muestra tamaño total, PE size, espacio libre

Extent físico (PE): el VG se divide en bloques de un tamaño fijo llamado Physical Extent (por defecto 4 MiB). Los LVs se crean en múltiplos de PEs. Se puede cambiar al crear el VG con -s (tamaño del PE, ej. -s 8M).

Extender un VG añadiendo más PVs:

sudo vgextend vg_datos /dev/sdd1

Reducir un VG (quitar un PV, antes hay que vaciarlo con pvmove):

sudo pvmove /dev/sdc1
sudo vgreduce vg_datos /dev/sdc1
sudo pvremove /dev/sdc1

Eliminar un VG (sin LVs dentro): sudo vgremove vg_datos.

11.5. Creación de Logical Volumes (LV)

Los volúmenes lógicos se crean dentro de un VG y se pueden redimensionar. Su dispositivo especial aparece como /dev/vg_datos/lv_docs o /dev/mapper/vg_datos-lv_docs.

11.5.1. Crear un LV

sudo lvcreate -n lv_docs -L 5G vg_datos
  • -n nombre del LV.
  • -L tamaño fijo (ej. 5G, 500M). Alternativamente, -l número de extents (ej. -l 100%FREE para usar todo el espacio libre).

Opciones comunes:

  • -l 50%FREE: la mitad del espacio libre.
  • --type raid1, --type raid5: si se necesita redundancia (requiere varios PVs y módulos de kernel).
  • -Z y|n: activar/desactivar inicialización a cero (default yes, más seguro).

Ver LVs:

sudo lvs
sudo lvdisplay

11.5.2. Formatear y montar el LV

El LV es un dispositivo de bloques normal:

sudo mkfs.ext4 /dev/vg_datos/lv_docs
sudo mkdir /mnt/docs
sudo mount /dev/vg_datos/lv_docs /mnt/docs

Entrada en /etc/fstab (usar UUID con blkid o el path LVM, pero mejor UUID):

UUID=xxxxx /mnt/docs ext4 defaults 0 2

11.6. Redimensionar volúmenes lógicos y sistemas de archivos

Esta es la gran ventaja de LVM. Se puede hacer en caliente (online) si el sistema de archivos lo soporta (ext4, XFS online growing; ext4 también online shrinking, pero más delicado).

11.6.1. Extender un LV y su sistema de archivos

Nota sobre XFS y ext4:

  • XFS solo puede extenderse, no reducirse (salvo recrear el FS).
  • Ext4 puede extenderse y reducirse (la reducción requiere desmontar).

Pasos para extender:

  1. Verificar espacio libre en el VG:
sudo vgdisplay vg_datos | grep Free
  1. Extender el LV en 2 GB:
sudo lvextend -L +2G /dev/vg_datos/lv_docs

O para que ocupe todo el espacio libre:

sudo lvextend -l +100%FREE /dev/vg_datos/lv_docs
  1. Extender el sistema de archivos:

Para ext4:

sudo resize2fs /dev/vg_datos/lv_docs

Para XFS:

sudo xfs_growfs /mnt/docs

Ejemplo completo (ext4):

sudo lvextend -L +2G /dev/vg_datos/lv_docs
sudo resize2fs /dev/vg_datos/lv_docs
df -h /mnt/docs   # comprobar nuevo tamaño

11.6.2. Reducir un LV con ext4

La reducción es más arriesgada y requiere desmontar.

  1. Desmontar:
sudo umount /mnt/docs
  1. Verificar integridad:
sudo e2fsck -f /dev/vg_datos/lv_docs
  1. Reducir el sistema de archivos:
sudo resize2fs /dev/vg_datos/lv_docs 3G

(Se debe indicar el tamaño final; por seguridad, reducir un poco más de lo deseado y luego ampliar ligeramente)

  1. Reducir el LV:
sudo lvreduce -L 3G /dev/vg_datos/lv_docs
  1. Volver a montar:
sudo mount /dev/vg_datos/lv_docs /mnt/docs

Recuerda: XFS no soporta reducción. Si necesitas reducir un LV con XFS, debes hacer backup, destruir el LV, recrear más pequeño y restaurar.

11.7. Snapshots (instantáneas) LVM

Una snapshot es una copia congelada de un LV en un momento dado. Es muy útil para backups consistentes: creas la snapshot, montas la snapshot y haces la copia, mientras el LV original sigue funcionando con normalidad.

Crear una snapshot:

sudo lvcreate -n snap_lv_docs -L 1G -s /dev/vg_datos/lv_docs
  • -s indica que es una snapshot.
  • -L 1G es el espacio reservado para almacenar las diferencias desde que se creó la snapshot. Si se llena, la snapshot se inutiliza; hay que dimensionar según la tasa de cambios esperada.

Uso de la snapshot:

sudo mkdir /mnt/snap
sudo mount -o ro /dev/vg_datos/snap_lv_docs /mnt/snap
# Hacer backup...
sudo umount /mnt/snap
sudo lvremove /dev/vg_datos/snap_lv_docs

Cuando terminas, eliminas la snapshot con lvremove. La snapshot no es un backup por sí misma, es un medio para hacer backups consistentes.

11.8. Migración de datos entre PVs

Si necesitas retirar un disco del VG, primero mueves sus datos a otros PVs:

sudo pvmove /dev/sdc1

Este comando reubica los extents usados de /dev/sdc1 a otros PVs con espacio libre en el mismo VG. Al finalizar, pvs mostrará ese PV sin uso y podrás quitarlo:

sudo vgreduce vg_datos /dev/sdc1
sudo pvremove /dev/sdc1

11.9. Activación y desactivación de volúmenes

Para trabajos de mantenimiento, a veces es necesario desactivar VGs o LVs:

  • Desactivar un LV: sudo lvchange -an /dev/vg_datos/lv_docs
  • Activar: sudo lvchange -ay /dev/vg_datos/lv_docs
  • Desactivar un VG completo: sudo vgchange -an vg_datos
  • Activar: sudo vgchange -ay vg_datos

El sistema activa los VGs automáticamente al arrancar, pero puede ser necesario manualmente en entornos de rescate.

11.10. Configuración persistente y arranque con LVM

El initramfs moderno incluye los módulos de LVM, por lo que al arrancar se activan los VGs y los LVs definidos. La configuración de LVM se guarda en /etc/lvm/lvm.conf y en los metadatos internos de los PVs. Normalmente no hay que configurar nada adicional.

Para asegurar que todo esté correcto tras cambios manuales en /etc/fstab con dispositivos LVM, ejecuta:

sudo update-initramfs -u   # Debian/Ubuntu
sudo dracut --force        # RHEL/CentOS

11.11. Escaneo y recuperación de LVM

Si conectas discos que contienen PVs a otro sistema, o tras una reinstalación, puedes escanear y activar:

sudo vgscan       # detecta VGs en todos los PVs
sudo vgchange -ay # activa todos los VGs encontrados

Para ver información de volúmenes incluso antes de activarlos, pvs, vgs, lvs muestran estado.

11.12. Ejercicios prácticos

  1. Creación de un esquema LVM básico: Conecta tres discos (o crea tres discos virtuales). Particiona dos de ellos como LVM. Crea un PV en cada uno, un VG llamado vg_pruebas y dentro un LV llamado lv_datos de 3 GB. Formatéalo con ext4 y móntalo en /mnt/lvm1. Crea archivos de prueba.

  2. Extensión online: Añade el tercer disco al VG (vgextend). Luego extiende el LV a 6 GB y redimensiona el sistema de archivos sin desmontar. Verifica con df -h.

  3. Reducción con ext4: Desmonta, reduce el LV y el filesystem a 4 GB. Vuelve a montar y comprueba que los datos siguen intactos (si no había archivos más allá del nuevo tamaño). Crea una copia de seguridad antes por si acaso.

  4. Snapshot y backup: Toma una snapshot del LV con 500 MB de tamaño. Monta la snapshot en modo solo lectura, haz un tar del contenido y luego elimina la snapshot.

  5. Migración de PV: Simula la retirada de uno de los discos: usa pvmove para vaciarlo, redúcelo del VG y elimínalo. Verifica que el LV sigue operativo.

  6. Simulación de fallo: (Solo si puedes desconectar discos virtuales) Apaga la máquina, desconecta un disco que pertenezca al VG. Inicia y observa cómo LVM marca el PV como ausente (unknown device). ¿Se puede montar el LV? Luego vuelve a conectar y activa.

11.13. Resumen y consejos para LFCS

  • El flujo LVM básico es pvcreate → vgcreate → lvcreate → mkfs → mount. Debes poder realizarlo con soltura.
  • Los comandos de consulta pvs, vgs, lvs son rápidos y prácticos; pvdisplay, vgdisplay, lvdisplay dan más detalle.
  • Para extender un LV y su FS, recuerda el orden: primero extender LV (lvextend), luego extender FS (resize2fs o xfs_growfs). Ext4 permite también reducción (con desmontaje), XFS no.
  • Las snapshots son un punto clave; saber crear una, montarla y eliminarla demuestra un buen conocimiento de LVM.
  • En el examen, asegúrate de que los volúmenes se monten correctamente con /etc/fstab y de que los cambios persistan tras reinicio.
  • LVM es especialmente útil combinado con RAID (capítulo 6): puedes crear un RAID 1 con mdadm y luego usar ese dispositivo como PV para LVM, o usar los tipos integrados --type raid1 en LVM (más moderno pero menos común en el examen).

Con LVM has añadido una herramienta de flexibilidad máxima al almacenamiento. En el próximo capítulo exploraremos la documentación y herramientas de ayuda en Linux, fundamentales para resolver problemas por ti mismo y para el examen a libro abierto que supone LFCS en su formato práctico.

Vistas: 2

Descubre más desde CIBERED

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Scroll al inicio