Volumen Lógico
Introducción
Esta entrada no será una entrada detallada, intentaré resumir y explicar lo más sencillo posible qué son grupos de volúmenes, volúmenes físicos y volúmenes lógicos.
Gestión de almacenamiento con LVM en Linux
LVM (Logical Volume Manager) es un sistema de gestión de almacenamiento que permite administrar discos y particiones de forma flexible y dinámica en sistemas Linux. En lugar de trabajar directamente con particiones tradicionales, LVM introduce una capa de abstracción que facilita la ampliación y reorganización del espacio en disco.
Componentes principales
- Volúmenes físicos (PV - Physical Volumes):
Son los dispositivos de almacenamiento reales, como discos duros o particiones (por ejemplo, /dev/sda1). Estos discos pueden ser de distinta tecnología (HDD, SSD, NVMe) y tamaño.
- Grupos de volúmenes (VG - Volume Groups):
Agrupan uno o varios volúmenes físicos y forman un "pool" de almacenamiento unificado, independientemente de la mecánica de los discos que lo componen.
- Volúmenes lógicos (LV - Logical Volumes):
Son las unidades finales donde se crean los sistemas de archivos. Funcionan de forma similar a las particiones tradicionales, pero con mayor flexibilidad.
Beneficios de usar LVM
- Permite unificar varios discos físicos en un único espacio lógico, sin importar su tipo o tamaño.
- Facilita la ampliación o reducción de volúmenes sin necesidad de reinstalar el sistema.
- Posibilita modificar el tamaño de los volúmenes y de los puntos de montaje en caliente, en muchos casos sin interrumpir el servicio.
- Permite el uso de cifrado (por ejemplo, mediante LUKS) para proteger los datos almacenados en volúmenes lógicos.
- Facilita la creación de instantáneas (snapshots) para copias de seguridad o pruebas.
- Mejora la escalabilidad y el mantenimiento de servidores y sistemas de almacenamiento.
Ejemplo práctico: añadir un disco para /var/www (comandos reales)
Para simplificar su uso, vamos a trabajar con un ejemplo práctico, tengo un servidor Fedora al que le hice una instalación por defecto en un disco SSD de, por ejemplo, 120GB, éste se hizo en un LVM por defecto, con un Grupo de volúmenes llamado "fedora", encriptado con LUKS y en formato XFS.
En este caso, vamos a añadir un disco duro nuevo SSD de 500GB para el directorio "/var/www", es decir, el servicio web, también lo encriptaremos y sólo aprovecharemos 100GB, si es necesario, en un futuro, podemos ampliarlo o dedicar el espacio libre para otro punto de montaje.
1. Preparar el nuevo disco
Crear la tabla de particiones y una partición que ocupe todo el disco, a partir de ahora todo como usuario root:
parted /dev/sdb -- mklabel gpt #etiquetarà el disco y, en caso de tener datos, los borrará todos. A parte, pedirà confirmación por parte del usuario, y escribiremos "Yes"
parted /dev/sdb -- mkpart primary 0% 100%
Comprobar que el sistema ve el disco y la partición:
lsblk -f
2. Crear el volumen físico (PV)
Inicializar la partición como volumen físico de LVM:
pvcreate /dev/sdb1
Comprobar el volumen físico:
pvs #muestra datos básicos del volumen PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 --- <111,75g <111,75g
pvdisplay /dev/sdb1 #Muestra datos más extendidos. "/dev/sdb1" is a new physical volume of "<111,75 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size <111,75 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID l8bdAp-3biH-c7L0-O4bQ-QITU-FOnC-1RNwTe
3. Añadir el disco al grupo de volúmenes
Añadir el nuevo PV al grupo de volúmenes existente (fedora):
vgs #exploramos los grupos de volúmenes existentes, en nuestro caso, recordamos que el grupo por defecto en la instalación es "fedora"
Ahora añadimos al Grupo de Volúmenes la nueva partición:
vgextend fedora /dev/sdb1
Para verificar el estado del grupo de volúmenes:
vgs vgdisplay fedora
4. Crear el volumen lógico
Crear un volumen lógico de 100 GB para /var/www con el nombre "lv_var_www":
lvcreate -L 100G -n lv_var_www fedora
Comprobar el volumen lógico:
lvs lvdisplay /dev/fedora/lv_var_www
Es decir, recordemos que hemos creado el grupo de volúmenes "fedora" donde forma parte la partición "/dev/sdb1" y hemos creado, sobre este grupo, un volúmen lógico de 100G, es decir, a partir de ahora, puedo añadir más discos o más particiones a este grupo de volúmnes, pero por ahora sigamos con el ejemplo.
5. Cifrar el volumen lógico
Ahora sigamos con el cifrado del volumen lógico para aumentar su protección. Para cifrar el volumen lógico con LUKS:
cryptsetup luksFormat /dev/fedora/lv_var_www #para formatear la partición lógica, nos pedirá confirmación y lo haremos escribiendo "YES" (en mayúsculas) y le asignaremos una contraseña ( recomiendo poner la misma que la utilizada en la instalación del sistema operativo). cryptsetup open /dev/fedora/lv_var_www crypt_var_www # pedirá de nuevo la contraseña y esto abrirá el volumen para poder trabajar con el.
Verificar que el volumen cifrado está activo:
cryptsetup status crypt_var_www
NOTA - el volúmen está disponible en /dev/mapper/fedora-lv_var_www, estad muy atentos a "/dev/mapper", donde estarán disponibles los volúmenes, el resto es el grupo de volúmenes "fedora" y el nombre del volúmen lógico "lv_var_www".
6. Crear el sistema de archivos
Ahora que ya está creado y abierto, le damos formato a XFS:
mkfs.xfs /dev/mapper/crypt_var_www
Este procedimiento es rápido dependiendo del tamaño. Ahora,que ya está formateado, podemos montarlo, primero, por si no existe el directorio, lo creamos y lo montamos:
mkdir -p /var/www mount /dev/mapper/crypt_var_www /var/www
7. Persistencia del punto de montaje
Ahora entramos en la parte de montaje persistente, que en Linux con LVM y cifrado implica dos ficheros clave:
/etc/crypttab → para abrir volúmenes cifrados al inicio /etc/fstab → para montar los sistemas de archivos automáticamente
Te explico paso a paso para este caso (/var/www en un LV cifrado llamado crypt_var_www):
1. Configurar /etc/crypttab
crypttab indica al sistema como desbloquear volúmenes cifrados al inicio.
Añade una línea así en /etc/crypttab:
crypt_var_www /dev/fedora/lv_var_www none luks
Explicación de cada campo:
- crypt_var_www → nombre del dispositivo mapeado que aparecerá en /dev/mapper/crypt_var_www
- /dev/fedora/lv_var_www → volumen lógico cifrado
- none → indica que pedirá contraseña al inicio (o puedes usar un archivo de clave)
- luks → tipo de cifrado (LUKS)
Después de esto, al arrancar el sistema, te pedirá la contraseña para abrir el volumen, si la contraseña es la misma que el resto de sistema, no será necesaria volverla a poner.
2. Configurar /etc/fstab
fstab monta automáticamente el sistema de archivos en el punto deseado. Para /var/www editamos /etc/fstab:
/dev/mapper/crypt_var_www /var/www xfs defaults 0 2
Explicación de cada campo:
- /dev/mapper/crypt_var_www → dispositivo ya desbloqueado por crypttab
- /var/www → punto de montaje
- xfs → tipo de sistema de archivos
- defaults → opciones de montaje por defecto
- 0 → si se debe volcar con dump (normalmente 0)
- 2 → orden de chequeo por fsck (1 = root, 2 = otros)