Ir al contenido

Volumen Lógico

De La Wiki de KiVi

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".