Ir al contenido

Diferencia entre revisiones de «Volumen Lógico»

De La Wiki de KiVi
Sin resumen de edición
Sin resumen de edición
 
(No se muestran 4 ediciones intermedias del mismo usuario)
Línea 65: Línea 65:
Añadir el nuevo PV al grupo de volúmenes existente (fedora):
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"
  vgs #exploramos los grupos de volúmenes existentes, en nuestro caso, recordamos que el grupo por defecto en la instalación es "fedora"
VG    #PV #LV #SN Attr  VSize    VFree
fedora  1  0  0 wz--n- <111,75g <111,75g


vgextend fedora /dev/sdb1
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


Verificar el estado del grupo de volúmenes:


=== 4. Crear el volumen lógico ===


vgs
Crear un volumen lógico de 100 GB para '''/var/www''' con el nombre "lv_var_www":


vgdisplay fedora
lvcreate -L 100G -n lv_var_www fedora


vgcreate fedora /dev/sdb
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)
 
== Añadir un nuevo disco al volumen lógico ==
Vamos a seguir con el ejemplo práctico, vamos a añadir un nuevo disco, en este caso no será un disco sólido, sino un disco duro mecánico que teníamos en el almacén, por ejemplo de 2 TB. Primero hay que particionar:
parted /dev/sdc -- 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/sdc -- mkpart primary 0% 100%
Creamos el volúmen físico:
pvcreate /dev/sdc1
Lo añadimos al mismo grupo de volúmenes "fedora":
vgextend fedora /dev/sdc1
Y lo podemos comprovar con:
vgs
Ahora, creamos el volúmen lógico, por ahora de 200 GB:
lvcreate -L 200G -n lv_srv fedora
Es decir, del volumen ya creado y con dos discos, llamado fedora, creamos un volumen lógico de 200G, por lo que no va a importar la mecánica del disco, él solo escoge el volumen lógico y, por ejemplo, si teníamos un disco de 250 y otro de 2 TB, ahora tenemos uno de 2'250 TB.
Solo queda encriptar:
cryptsetup luksFormat /dev/fedora/lv_srv #recuerda poner la contraseña, la misma que el resto de encriptaciones si no quieres que la pida en cada inicio.
cryptsetup open /dev/fedora/lv_srv crypt_srv
cryptsetup status crypt_srv
Formatear el volumen:
mkfs.xfs /dev/mapper/crypt_srv
Y solo queda persistir, en '''/etc/crypttab''':
crypt_srv /dev/fedora/lv_srv none luks
Y en '''/etc/fstab''':
/dev/mapper/crypt_srv  /srv  xfs  defaults  0  2
 
Podemos comprobar con:
mount -a
O reiniciando.
 
== Borrando todo lo hecho ==
Ahora tenemos una noción de cómo trabajar con "PV", "VG" y "VL", pero cómo borrarlos?
 
Primero deberíamos de tener una [[copia de seguridad]], por ejemplo con [[Rsnapshot]], y entonces volvemos sobre nuestros pasos:
 
* Editar y comentar la correspondiente línea de '''/etc/fstab'''.
* Editar y comentar la correspondiente línea  de '''/etc/crypttab'''.
* Desmontar el directorio reiniciando el equipo o manualmente con: '''umount /var/www''' en el cao del primer ejemplo.
* Eliminado el volumen lógico: '''sudo lvremove /dev/fedora/lv_var_www'''
* Y ya, siendo muy destructivos, y si no tenemos ningún volumen montado y no queremos trabajar más con volúmenes, podemos eliminar el grupo con: '''sudo vgremove fedora.''' Esto no es nada recomendable, pero podríamos poner otro ejemplo: tenemos el grupo de volúmenes del sistema "fedora" y otro grupo para datos "vg_datos" y queremos borrar este último. Lo bueno de trabajar con diferentes grupos de volúmenes es que no afectan unos con otros.

Revisión actual - 09:33 16 dic 2025

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)

Añadir un nuevo disco al volumen lógico

Vamos a seguir con el ejemplo práctico, vamos a añadir un nuevo disco, en este caso no será un disco sólido, sino un disco duro mecánico que teníamos en el almacén, por ejemplo de 2 TB. Primero hay que particionar:

parted /dev/sdc -- 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/sdc -- mkpart primary 0% 100%

Creamos el volúmen físico:

pvcreate /dev/sdc1

Lo añadimos al mismo grupo de volúmenes "fedora":

vgextend fedora /dev/sdc1

Y lo podemos comprovar con:

vgs

Ahora, creamos el volúmen lógico, por ahora de 200 GB:

lvcreate -L 200G -n lv_srv fedora

Es decir, del volumen ya creado y con dos discos, llamado fedora, creamos un volumen lógico de 200G, por lo que no va a importar la mecánica del disco, él solo escoge el volumen lógico y, por ejemplo, si teníamos un disco de 250 y otro de 2 TB, ahora tenemos uno de 2'250 TB. Solo queda encriptar:

cryptsetup luksFormat /dev/fedora/lv_srv #recuerda poner la contraseña, la misma que el resto de encriptaciones si no quieres que la pida en cada inicio.
cryptsetup open /dev/fedora/lv_srv crypt_srv 
cryptsetup status crypt_srv

Formatear el volumen:

mkfs.xfs /dev/mapper/crypt_srv

Y solo queda persistir, en /etc/crypttab:

crypt_srv /dev/fedora/lv_srv none luks

Y en /etc/fstab:

/dev/mapper/crypt_srv  /srv  xfs  defaults  0  2

Podemos comprobar con:

mount -a

O reiniciando.

Borrando todo lo hecho

Ahora tenemos una noción de cómo trabajar con "PV", "VG" y "VL", pero cómo borrarlos?

Primero deberíamos de tener una copia de seguridad, por ejemplo con Rsnapshot, y entonces volvemos sobre nuestros pasos:

  • Editar y comentar la correspondiente línea de /etc/fstab.
  • Editar y comentar la correspondiente línea de /etc/crypttab.
  • Desmontar el directorio reiniciando el equipo o manualmente con: umount /var/www en el cao del primer ejemplo.
  • Eliminado el volumen lógico: sudo lvremove /dev/fedora/lv_var_www
  • Y ya, siendo muy destructivos, y si no tenemos ningún volumen montado y no queremos trabajar más con volúmenes, podemos eliminar el grupo con: sudo vgremove fedora. Esto no es nada recomendable, pero podríamos poner otro ejemplo: tenemos el grupo de volúmenes del sistema "fedora" y otro grupo para datos "vg_datos" y queremos borrar este último. Lo bueno de trabajar con diferentes grupos de volúmenes es que no afectan unos con otros.