Gestión de almacenamiento lógico mediante LVM: ampliación de volúmenes y sistemas de archivos

Objetivo:

Comprender y aplicar la gestión avanzada de almacenamiento lógico en Linux mediante LVM (Logical Volume Manager), aprendiendo a crear volúmenes físicos, agrupaciones de discos y volúmenes lógicos, y ejecutando la ampliación dinámica en caliente de particiones y sistemas de archivos sin pérdida de datos.

Escenario:

  • Herramientas: Terminal Linux, comandos pvcreate, vgcreate, lvcreate, lvextend, resize2fs / xfs_growfs, y utilidades de consulta (pvs, vgs, lvs, lsblk).
  • Conceptos analizados: Volúmenes Físicos (PV), Grupos de Volúmenes (VG), Volúmenes Lógicos (LV), extensiones físicas (extents), redimensionamiento en caliente y sistemas de archivos con soporte online resize.
  • Proceso clave: Simulación de la adición de nuevo espacio de almacenamiento, creación de una estructura LVM desde cero, llenado de un volumen y ampliación dinámica de su tamaño ante una alerta de falta de espacio.

Escenario Real: Ampliación de almacenamiento en caliente ante saturación

El volumen lógico que aloja la base de datos de producción de la empresa ha alcanzado el 95% de su capacidad máxima y corre el riesgo de bloquear el servicio. Como administrador de sistemas, no puedes apagar el servidor ni formatear discos. Debes añadir un nuevo disco virtual al sistema, integrarlo en el grupo de volúmenes existente y redimensionar el volumen lógico y su sistema de archivos en caliente mientras la aplicación sigue operativa.

Por defecto, el esquema tradicional de particionado estático en Linux dificulta enormemente modificar el tamaño de las particiones una vez creadas sin desmontarlas o vaciarlas. LVM introduce una capa de abstracción flexible que permite redimensionar volúmenes de manera transparente, siendo el estándar de facto en la administración profesional de servidores.

NOTA: Para realizar esta práctica de forma segura sin arriesgar datos reales, utilizaremos discos virtuales de prueba adicionales o ficheros emulados como bloques de almacenamiento mediante losetup.

Instrucciones:

Fase 1: Preparación de discos y creación de Volúmenes Físicos (PV):

  • Identificar los discos o particiones disponibles en el sistema mediante el comando de estructura: lsblk
  • Inicializar un disco o partición de prueba (por ejemplo, /dev/sdb o un fichero loop) para que pueda ser gestionado por LVM: sudo pvcreate /dev/sdb
  • Verificar que el Volumen Físico se ha registrado correctamente en el sistema: sudo pvs

Fase 2: Creación del Grupo de Volúmenes (VG) y Volumen Lógico (LV):

  • Crear un nuevo Grupo de Volúmenes llamado vg_datos agrupando el Volumen Físico inicializado: sudo vgcreate vg_datos /dev/sdb
  • Verificar la creación del grupo de volúmenes y comprobar su capacidad total disponible: sudo vgs
  • Crear un Volumen Lógico de tamaño fijo (por ejemplo, de 2 Gigabytes) llamado lv_compartido dentro de ese grupo: sudo lvcreate -n lv_compartido -L 2G vg_datos
  • Comprobar la correcta creación del volumen lógico y su ruta asociada en el sistema de ficheros (/dev/vg_datos/lv_compartido): sudo lvs

Fase 3: Formateo, montaje y uso del sistema de archivos:

  • Formatear el volumen lógico recién creado con un sistema de archivos moderno (por ejemplo, ext4 o xfs): sudo mkfs.ext4 /dev/vg_datos/lv_compartido
  • Crear un directorio de montaje temporal y montar el volumen lógico en él: sudo mkdir -p /mnt/datos && sudo mount /dev/vg_datos/lv_compartido /mnt/datos
  • Verificar el estado del montaje y el espacio disponible ejecutando: df -h /mnt/datos

Fase 4: Ampliación dinámica en caliente del Volumen Lógico y del Filesystem:

  • Simular la necesidad de expansión ampliando el volumen lógico para que crezca 1 Gigabyte adicional de forma inmediata sin desmontarlo:
    sudo lvextend -L +1G /dev/vg_datos/lv_compartido
    
  • Redimensionar en caliente el sistema de archivos (filesystem) interior para que reconozca y ocupe el nuevo espacio físico asignado: sudo resize2fs /dev/vg_datos/lv_compartido (si hubieras utilizado xfs, el comando equivalente sería sudo xfs_growfs /mnt/datos).
  • Verificar que la capacidad total montada se ha incrementado con éxito: df -h /mnt/datos

Verificación:

  • Comprobar mediante el comando lsblk que la jerarquía completa de LVM muestra los tamaños actualizados del volumen lógico.
  • Verificar que el sistema de archivos montado mantiene íntegros los ficheros previos tras la ampliación online sin errores.

Posibles errores y resolución de problemas:

Si tras ejecutar con éxito el comando lvextend para ampliar el tamaño del volumen lógico observas que el comando df -h sigue mostrando exactamente la misma capacidad de almacenamiento anterior, se debe a que el sistema de archivos interno aún no se ha redimensionado.

  • Solución: LVM amplía el contenedor físico de bloques, pero el sistema de archivos (ext4/xfs) desconoce esa ampliación hasta que ejecutas de forma explícita la orden de redimensionamiento online correspondiente (resize2fs o xfs_growfs).

Alternativa directa: Consulta gráfica integrada de LVM

Si necesitas visualizar de un solo vistazo la relación jerárquica completa entre los discos físicos (PV), los grupos de almacenamiento (VG) y los volúmenes lógicos (LV) particionados con formato de árbol estructurado, puedes ejecutar la siguiente instrucción optimizada:

sudo lvs -o lv_name,vg_name,lv_size,pool_lv,origin,data_percent,metadata_percent,move_pv,copy_percent,convert_lv --segments

Preguntas de reflexión:

  1. ¿Qué ventaja fundamental aporta la arquitectura de LVM (con sus capas PV, VG y LV) frente al particionamiento tradicional basado en tablas de particiones MBR o GPT fijas?
  2. ¿Por qué es necesario ejecutar dos comandos diferentes (primero lvextend y posteriormente resize2fs / xfs_growfs) para completar con éxito la ampliación de un volumen en uso?
  3. ¿Qué diferencia operativa existe entre redimensionar en caliente un sistema de archivos ext4 frente a un sistema xfs en cuanto a la posibilidad de reducir su tamaño?
  4. ¿Cómo gestiona LVM el espacio libre dentro de un Grupo de Volúmenes (VG) cuando se añaden nuevos discos físicos (PV) para evitar la fragmentación lógica?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Qué ventaja fundamental aporta la arquitectura de LVM (con sus capas PV, VG y LV) frente al particionamiento tradicional basado en tablas de particiones MBR o GPT fijas?

LVM desacopla el almacenamiento lógico del hardware físico. Permite redimensionar volúmenes en caliente, combinar múltiples discos físicos en un único gran grupo de almacenamiento unificado, crear volúmenes distribuidos o espejados y realizar copias de seguridad instantáneas mediante instantáneas (snapshots) sin necesidad de apagar el equipo ni alterar tablas de particiones rígidas.


2. ¿Por qué es necesario ejecutar dos comandos diferentes (primero lvextend y posteriormente resize2fs / xfs_growfs) para completar con éxito la ampliación de un volumen en uso?

Porque operan en capas de abstracción distintas. El comando lvextend actúa en la capa de gestión de bloques lógicos de LVM (agrandando el "recipiente" o contenedor físico), mientras que resize2fs o xfs_growfs actúan en la capa superior del sistema de archivos (ajustando la estructura de ficheros para que sea consciente del nuevo espacio disponible dentro de ese recipiente).


3. ¿Qué diferencia operativa existe entre redimensionar en caliente un sistema de archivos ext4 frente a un sistema xfs en cuanto a la posibilidad de reducir su tamaño?

Ambos sistemas de archivos soportan la ampliación (crecimiento) en caliente sin desmontarse. Sin embargo, en cuanto a la reducción (encogimiento), ext4 permite reducir el sistema de archivos de forma offline (desmontado previamente), mientras que el sistema de archivos xfs es altamente escalable pero no soporta la reducción de tamaño bajo ninguna circunstancia.


4. ¿Cómo gestiona LVM el espacio libre dentro de un Grupo de Volúmenes (VG) cuando se añaden nuevos discos físicos (PV) para evitar la fragmentación lógica?

LVM divide el almacenamiento en bloques de tamaño fijo llamados Extents (extensiones físicas, típicamente de 4 MB). Cuando se añade un nuevo PV al VG, sus extensiones pasan a formar parte de la reserva común de espacio disponible, y LVM asigna dinámicamente nuevas extensiones contiguas o distribuidas según la política de asignación configurada al crear o extender los volúmenes lógicos.