Administración de LVM en entornos Linux

El Gestor de Volúmenes Lógicos (LVM) es una herramienta fundamental para la gestión flexible de almacenamiento en sistemas Linux y similares. A diferencia de las particiones tradicionales de tamaño fijo, LVM permite crear y administrar volúmenes lógicos que abstraen el almacenamiento físico, facilitando su redimensionamiento sin pérdida de datos. La estructura se basa en capas: discos físicos se dividen en volúmenes físicos (PV), que se agrupan en grupos de volúmenes (VG), y sobre estos se crrean volúmenes lógicos (LV) donde se alojan los sistemas de archivos.

Conceptos clave

  • Extensión Física (PE): Unidad básica de asignación en un volumen físico.
  • Volumen Físico (PV): Partición o disco entero preparado para LVM.
  • Grupo de Volúmenes (VG): Pool de almacenamiento formado por uno o más PV.
  • Volumen Lógico (LV): Bloque virtual creado a partir de un VG, listo para formatear y montar.

El proceso de administración incluye crear, extender, reducir y eliminar componentes. Las operaciones se realizan en caliente, sin necesidad de reiniciar el sistema en muchos casos.

Preparación de discos

Supongamos un disco secundario /dev/sdb con espacio sin utilizar. Primero, particionamos usando fdisk, creando tres particiones primarias de 1GB cada una, asignándoles el tipo hexadecimal 8e para LVM.

# fdisk /dev/sdb
n   # Crear nueva partición
p   # Partición primaria
1   # Número de partición
+1G # Tamaño
t   # Cambiar tipo
8e  # Tipo LVM

Repetimos este proceso para las particiones 2 y 3. Al finalizar, verificamos con:

# fdisk -l /dev/sdb
   Device      Boot   Start     End    Blocks   Id  System
/dev/sdb1           2048    2099199   1048576   8e  Linux LVM
/dev/sdb2           2099200  4196351   1048576   8e  Linux LVM
/dev/sdb3           4196352  6293503   1048576   8e  Linux LVM

Creación de volúmenes físicos

Las particiones se inicializan como PV:

# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3

Para inspeccionar:

# pvdisplay /dev/sdb1
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               abc123-DEF4-5678-90ab-cdef12345678

Configuración de grupo de volúmenes

Se crea un VG llamado vg_datos usando los PV recién creados:

# vgcreate vg_datos /dev/sdb1 /dev/sdb2 /dev/sdb3

Verificamos su estado:

# vgdisplay vg_datos
  --- Volume group ---
  VG Name               vg_datos
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               3.00 GiB
  PE Size               4.00 MiB
  Total PE              768
  Alloc PE / Size       0 / 0   
  Free  PE / Size       768 / 3.00 GiB
  VG UUID               xyz789-UVW0-1234-5678-ijklmnop9012

Generación de volúmenes lógicos

Creamos un LV de 200MB en vg_datos:

# lvcreate -L 200M -n lv_aplicaciones vg_datos

Para examinar:

# lvdisplay /dev/vg_datos/lv_aplicaciones
  --- Logical volume ---
  LV Path                /dev/vg_datos/lv_aplicaciones
  LV Name                lv_aplicaciones
  VG Name                vg_datos
  LV UUID                qwerty-1234-5678-9abc-def012345678
  LV Write Access        read/write
  LV Creation host, time server01, 2023-10-05 10:30:00 +0000
  LV Status              available
  # open                 0
  LV Size                200.00 MiB
  Current LE             50
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

Formateamos y montamos:

# mkfs.ext4 /dev/vg_datos/lv_aplicaciones
# mkdir -p /mnt/app_data
# mount /dev/vg_datos/lv_aplicaciones /mnt/app_data

Modificación dinámica de volúmenes

Expansión de un LV

Para aumentar lv_aplicaciones a 500MB, seguimos estos pasos:

# umount /mnt/app_data
# lvextend -L 500M /dev/vg_datos/lv_aplicaciones
# e2fsck -f /dev/vg_datos/lv_aplicaciones
# resize2fs /dev/vg_datos/lv_aplicaciones

Verificamos el nuevo tamaño con lvdisplay y volvemos a montar.

Reducción de un LV

Reducir requiere precaución. Ejemplo para bajar a 150MB:

# umount /mnt/app_data
# e2fsck -f /dev/vg_datos/lv_aplicaciones
# resize2fs /dev/vg_datos/lv_aplicaciones 150M
# lvreduce -L 150M /dev/vg_datos/lv_aplicaciones

Después de la reducción, ajustamos el sistema de archivos y remontamos.

Ampliación de un VG

Si necesitamos más espacio, añadimos un nuevo disco /dev/sdc. Primero, creamos una partición de tipo LVM en él:

# fdisk /dev/sdc
n   # Crear partición
p   # Primaria
1   # Número
+4G # Tamaño
t   # Cambiar tipo
8e  # LVM
w   # Escribir cambios

Inicializamos la partición como PV y la extendemos al VG existente:

# pvcreate /dev/sdc1
# vgextend vg_datos /dev/sdc1

Confirmamos la expansión con vgdisplay, que mostrará un aumento en el tamaño total del VG y en los PE libres.

Operaciones de limpieza

Para eliminar componentes, seguimos el orden inverso: desmontar LV, eliminar LV, eliminar VG y finalmente eliminar PV:

# umount /mnt/app_data
# lvremove /dev/vg_datos/lv_aplicaciones
# vgremove vg_datos
# pvremove /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdc1

LVM proporciona una capa de abstracción que simplifica la administración de almacenamiento en entornos dinámicos, permitiendo operaciones en línea y ajustes continuos según las necesidades del sistema.

Etiquetas: LVM linux administración de discos volúmenes lógicos grupos de volúmenes

Publicado el 6-23 01:46