Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org
Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.
La administración de volúmenes lógicos (LVM) es una habilidad fundamental para gestionar el almacenamiento en sistemas Linux de manera flexible y eficiente. Este documento cubre los conceptos esenciales y los procedimientos operativos más comunes.
LVM es una implementación que consiste en un administrador de volúmenes lógicos para el núcleo de Linux. Fue originalmente escrito en 1998 por Heinz Mauelshagen, quien se basó en el administrador de volúmenes de Veritas, utilizado en sistemas HP-UX.
Básicamente, LVM2 permite realizar lo siguiente:
Es importante señalar que LVM es incompatible con la implementación de RAID1 o RAID5 a nivel lógico. Para estos esquemas de redundancia, se recomienda configurar el arreglo de discos por debajo de LVM ―utilizando mdadm o un controlador de hardware― y crear los volúmenes físicos sobre dicho arreglo.
LVM se compone de tres partes fundamentales:
8e o Linux LVM) que se añaden al sistema LVM. Se dividen en bloques básicos llamados extensiones físicas (PE, Physical Extents).A continuación se detallan los procedimientos operativos más frecuentes para la gestión de volúmenes lógicos en distribuciones empresariales modernas como AlmaLinux, Rocky Linux o RHEL y sus derivadas como ALDOS.
El ejemplo descrito asume un escenario de servidor con LVM preconfigurado, común en instalaciones por defecto de distribuciones basadas en RHEL.
💡 Analogía útil: Recuerde que el proceso es similar a «agrandar primero el zapato (el volumen lógico) y luego el pie (el sistema de archivos), jamás al revés».
df -h:df -h
La salida será similar a la siguiente:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_servidor-lv_root 3.0G 365M 2.5G 13% /
tmpfs 504M 72K 504M 1% /dev/shm
/dev/sda1 202M 50M 142M 26% /boot
/dev/mapper/vg_servidor-lv_home 20G 174M 19G 1% /home
/dev/mapper/vg_servidor-lv_tmp 5.0G 139M 4.6G 3% /tmp
/dev/mapper/vg_servidor-lv_usr 9.9G 3.0G 6.5G 32% /usr
/dev/mapper/vg_servidor-lv_var 20G 314M 19G 2% /var <-- Este
/dev/mapper/vg_servidor-lv_varlib 5.0G 225M 4.5G 5% /var/lib
/dev/mapper/vg_servidor-lv_varwww 5.0G 140M 4.6G 3% /var/www
En este ejemplo, expandiremos el volumen lógico montado en /var.
vgdisplay o el mandato más conciso vgs:vgs
La salida será similar a la siguiente:
VG #PV #LV #SN Attr VSize VFree
vg_servidor 1 8 0 wz--n- 79.79g 9.79g
lvdisplay o lvs:lvs /dev/vg_servidor/lv_var
La salida será similar a la siguiente:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_var vg_servidor -wi-ao---- 20.00g
lv_var utilizando todo el espacio libre (+100%FREE) o una cantidad específica (ej. +5G):lvextend -l +100%FREE /dev/vg_servidor/lv_var
La salida será similar a la siguiente:
Logical volume vg_servidor/lv_var successfully resized.
Expanda el sistema de archivos en línea (sin desmontar). El mandato depende del formato:
Para XFS (formato predeterminado en las instalaciones estándar de RHEL y derivadas modernas):
xfs_growfs /dev/vg_servidor/lv_var
Para ext4:
resize2fs /dev/vg_servidor/lv_var
Verifique el nuevo tamaño con df -h. El espacio disponible para /var debe haber aumentado de 20 GiB a aproximadamente 30 GiB.
🔄 Nota sobre ALDOS/RHEL modernos: Este procedimiento es idéntico en ALDOS (que usa SysVinit) y en RHEL 8/9/10 (que usan systemd). La única diferencia potencial es el gestor de paquetes: en ALDOS use yum, en RHEL 8+ use dnf. Para LVM, los mandatos (lvextend, xfs_growfs, etc.) son los mismos.
Este procedimiento añade un disco físico nuevo al sistema y lo integra en la jerarquía LVM.
🛠 Elección de tabla de particiones: Para discos mayores a 2 TiB, es obligatorio usar GPT (gpt) en lugar de MS-DOS (msdos). Para discos menores, puede usar cualquiera.
Cree una partición con tipo Linux LVM (8e). Puede usar parted (recomendado para GPT) o fdisk/gdisk.
Ejemplo con parted para un disco /dev/sdb de 10 GiB con tabla MS-DOS:
parted /dev/sdb mklabel msdos
parted /dev/sdb mkpart primary ext4 1MiB 10GiB
parted /dev/sdb set 1 lvm on
Ejemplo con parted para crear una tabla GPT:
parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart primary ext4 1MiB 10GiB
parted /dev/sdb set 1 lvm on
Notifique al núcleo sobre la nueva tabla de particiones:
partprobe /dev/sdb
pvcreate /dev/sdb1
VolDatos00):vgcreate VolDatos00 /dev/sdb1
lvcreate -l 100%FREE -n Datos00 VolDatos00
Dé formato al nuevo volumen lógico. Se presentan las dos opciones comunes:
Con ext4:
mkfs.ext4 /dev/VolDatos00/Datos00
Con XFS (predeterminado en muchas instalaciones):
mkfs.xfs /dev/VolDatos00/Datos00
Cree un punto de montaje, monte el volumen y añádalo a /etc/fstab para un montaje persistente:
mkdir /datos
mount /dev/VolDatos00/Datos00 /datos
Edite /etc/fstab y añada la línea correspondiente:
/dev/mapper/VolDatos00-Datos00 /datos ext4 defaults 1 2/dev/mapper/VolDatos00-Datos00 /datos xfs defaults 1 2df -h /datos.Este procedimiento permite migrar datos de un disco antiguo a uno nuevo dentro del mismo grupo de volúmenes, útil para actualizar hardware.
Asegúrese de que el nuevo disco (/dev/sdb1) forme parte del mismo grupo de volúmenes que el disco origen (/dev/sda1). De ser necesario, incorpórelo utilizando el mandato vgextend.
Mueva los datos entre volúmenes físicos:
pvmove /dev/sda1 /dev/sdb1
Este proceso puede tardar dependiendo de la cantidad de datos.
vgreduce VolGroup00 /dev/sda1
pvremove /dev/sda1
Este procedimiento expande un volumen lógico añadiendo espacio de un nuevo disco o partición.
Siga los pasos 1 a 4 de la sección «Crear un volumen lógico...» para tener un nuevo volumen físico (ej. /dev/sdb2).
Extienda el grupo de volúmenes existente (ej. VolGroup00) para incluir este nuevo volumen físico:
vgextend VolGroup00 /dev/sdb2
LogVol00) utilizando el espacio recién añadido. Puede usar todo el espacio libre (+100%FREE) o una cantidad específica:lvextend -l +100%FREE /dev/VolGroup00/LogVol00
resize2fs para ext4 o xfs_growfs para XFS).Este procedimiento es complejo y conlleva riesgo. Es esencial contar con un respaldo válido y confiable de los datos. Además, sólo es viable con sistemas de archivos que permitan reducción como ext4. XFS es incapaz de reducir su tamaño.
⚠️ Advertencia: Si el volumen lógico a reducir contiene sistemas críticos como /, /usr o /var, este procedimiento debe realizarse desde un medio de rescate (Live CD/USB o modo rescate del instalador).
Desde el medio de rescate, siga las indicaciones del entorno para montar el sistema de archivos raíz en /mnt/sysimage. Active el grupo de volúmenes necesario ejecutando vgchange -a y para garantizar que los dispositivos LVM estén disponibles.
Verifique la integridad del sistema de archivos a reducir:
fsck -f /dev/VolGroup00/LogVol00
Reduzca primero el sistema de archivos a un tamaño menor que el espacio final deseado (por seguridad). Por ejemplo, si el volumen físico a conservar tiene 50 GiB, reduzca a 48 GiB:
resize2fs /dev/VolGroup00/LogVol00 48G
Identifique el número de extensiones físicas (PE) del volumen físico a retirar (ej. /dev/sdb2) con pvdisplay.
Reduzca el volumen lógico, eliminando ese número de PE:
lvresize -l -1220 /dev/VolGroup00/LogVol00
Confirme la advertencia que pregunta si está seguro.
Retire el volumen físico del grupo:
vgreduce VolGroup00 /dev/sdb2
Ahora, expanda el sistema de archivos para ocupar todo el espacio restante en el volumen lógico reducido:
resize2fs /dev/VolGroup00/LogVol00
Verifique nuevamente la integridad con fsck, desmonte todo y reinicie el sistema.
Este ejercicio simula un escenario común en administración de sistemas: expandir la capacidad de varios volúmenes lógicos críticos después de una instalación base, utilizando espacio de un nuevo disco físico.
Se parte de una instalación de AlmaLinux (o distribución equivalente) realizada siguiendo el manual del autor, la cual crea un esquema LVM básico con volúmenes lógicos de 10 GiB para / (root), /home, /var y /var/lib. El sistema ya está en funcionamiento y se han cubierto los conceptos teóricos de LVM.
Añadir nuevo hardware y reconocerlo
root.Identificar el nuevo dispositivo
Ejecute lsblk para listar los bloques de dispositivo. El nuevo disco aparecerá, típicamente, como /dev/sdb. En la salida a continuación, preste atención a la línea correspondiente a sdb:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─almalinux-root 253:0 0 10G 0 lvm /
├─almalinux-swap 253:1 0 2G 0 lvm [SWAP]
├─almalinux-home 253:2 0 10G 0 lvm /home
├─almalinux-var 253:3 0 10G 0 lvm /var
└─almalinux-var_lib 253:4 0 10G 0 lvm /var/lib
sdb 8:16 0 100G 0 disk
sr0 11:0 1 6.6G 0 rom
Nota: El dispositivo sdb (resaltado en la explicación) es el nuevo disco de 100 GiB que hemos añadido.
Preparar el nuevo disco para LVM
Cree una tabla de particiones GPT y una sola partición que ocupe el 100% del espacio disponible, marcándola como tipo LVM.
parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart primary ext4 1MiB 100%
parted /dev/sdb set 1 lvm on
Notifique al núcleo sobre el cambio:
partprobe /dev/sdb
Crear un volumen físico e integrarlo al grupo existente
Cree el volumen físico sobre la nueva partición:
pvcreate /dev/sdb1
Verifique que el volumen físico se haya creado y observe el espacio libre actual del grupo de volúmenes almalinux (o el nombre de su VG):
pvdisplay /dev/sdb1
vgdisplay almalinux
Salida esperada de vgdisplay (resumen): Debe mostrar VG Size cercano a 39 GiB y poco o ningún Free PE / Size.
Extienda el grupo de volúmenes almalinux para incluir el nuevo volumen físico:
vgextend almalinux /dev/sdb1
Confirme la expansión del grupo. Salida esperada: VG Size debe aumentar en ~100 GiB y Free PE / Size reflejar ese nuevo espacio disponible.
vgdisplay almalinux
Expandir los volúmenes lógicos y sus sistemas de archivos
Compruebe el uso de espacio actual antes de realizar cambios:
df -h
Expanda el volumen lógico root en +10 GiB y luego su sistema de archivos:
lvresize -L +10G /dev/mapper/almalinux-root
resize2fs /dev/mapper/almalinux-root # o xfs_growfs si usa Xfs
df -h /
Expanda el volumen lógico home en +20 GiB:
lvresize -L +20G /dev/mapper/almalinux-home
resize2fs /dev/mapper/almalinux-home
df -h /home
Expanda el volumen lógico var en +20 GiB:
lvresize -L +20G /dev/mapper/almalinux-var
resize2fs /dev/mapper/almalinux-var
df -h /var
Verificación final
df -h y vgdisplay nuevamente para observar el estado final del sistema de archivos y confirmar que el espacio libre en el grupo de volúmenes se ha reducido según lo asignado.Resultado del ejercicio: Habrá expandido con éxito la capacidad de los tres volúmenes lógicos más importantes sin reiniciar el sistema, desmontar volúmenes o interrumpir servicios, demostrando la flexibilidad clave de LVM en un entorno práctico.