Configuración de Almacenamiento RAID y LVM en Linux

CompTIABeginner
Practicar Ahora

Introducción

En esta práctica de laboratorio, aprenderás a configurar y gestionar soluciones de almacenamiento avanzado en un entorno Linux. Trabajarás con dos herramientas potentes: el Administrador de Volúmenes Lógicos (LVM) para una gestión flexible de volúmenes, y mdadm para la creación de Matrices Redundantes de Discos Independientes (RAID) basadas en software. Esta práctica proporciona experiencia directa en la configuración de una infraestructura de almacenamiento robusta y escalable desde la línea de comandos, utilizando dispositivos de bucle (loop devices) para simular discos físicos.

Comenzarás inicializando volúmenes físicos de LVM y creando un grupo de volúmenes. A continuación, crearás, formatearás, montarás y redimensionarás un volumen lógico para comprender su naturaleza dinámica. Luego, procederás a construir y montar una matriz RAID 1 (espejo) para la redundancia de datos. Para concluir la práctica, te asegurarás de que estas configuraciones de almacenamiento sean persistentes tras los reinicios del sistema modificando los archivos /etc/fstab y mdadm.conf.

Esta es una Práctica Guiada, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y ganar experiencia práctica. Los datos históricos muestran que esta es una práctica de nivel principiante con una tasa de finalización del 88%. Ha recibido una tasa de valoraciones positivas del 99% por parte de los alumnos.

Inicializar LVM con pvcreate y vgcreate

En este paso, comenzarás a trabajar con el Administrador de Volúmenes Lógicos (LVM). LVM es una herramienta potente para gestionar dispositivos de almacenamiento en Linux. Añade una capa de abstracción entre tus discos duros físicos y los sistemas de archivos, lo que permite configuraciones más flexibles, como el redimensionamiento de volúmenes sobre la marcha.

Los bloques de construcción básicos de LVM son:

  • Volúmenes Físicos (PVs): Son tus dispositivos de bloque, como particiones de disco duro o, en nuestro caso, discos simulados.
  • Grupos de Volúmenes (VGs): Son depósitos de almacenamiento creados al agrupar uno o más Volúmenes Físicos.
  • Volúmenes Lógicos (LVs): Son las "particiones virtuales" que creas a partir del espacio disponible en un Grupo de Volúmenes. Crearás sistemas de archivos sobre estos LVs.

Primero, aseguremonos de que las herramientas necesarias, lvm2 y mdadm, estén instaladas.

sudo apt-get update && sudo apt-get install -y lvm2 mdadm

Dado que no disponemos de discos duros físicos adicionales en este entorno, los simularemos utilizando dispositivos de bucle. Un dispositivo de bucle permite tratar un archivo como si fuera un dispositivo de bloque. Comencemos creando dos archivos de 256MB en tu directorio de proyecto que actuarán como nuestras imágenes de disco.

truncate -s 256M disk1.img disk2.img

Ahora, verifica que los archivos se hayan creado con el tamaño correcto.

ls -lh

Deberías ver una salida similar a esta:

total 0
-rw-r--r-- 1 labex labex 256M Jan 1 12:00 disk1.img
-rw-r--r-- 1 labex labex 256M Jan 1 12:00 disk2.img

A continuación, asocia estos archivos de imagen con dispositivos de bucle. Utilizaremos /dev/loop20 y /dev/loop21.

sudo losetup /dev/loop20 disk1.img
sudo losetup /dev/loop21 disk2.img

Ahora que tenemos nuestros "discos" (/dev/loop20 y /dev/loop21), podemos inicializarlos como Volúmenes Físicos de LVM utilizando el comando pvcreate.

sudo pvcreate /dev/loop20 /dev/loop21

La salida confirma que los PVs se crearon correctamente:

  Physical volume "/dev/loop20" successfully created.
  Physical volume "/dev/loop21" successfully created.

Puedes mostrar un resumen de los Volúmenes Físicos con pvs o ver detalles más específicos con pvdisplay.

sudo pvs
  PV           VG   Fmt  Attr PSize   PFree
  /dev/loop20       lvm2 ---  256.00m 256.00m
  /dev/loop21       lvm2 ---  256.00m 256.00m

Con nuestros Volúmenes Físicos listos, el siguiente paso es crear un Grupo de Volúmenes llamado labvg que combine el almacenamiento de ambos PVs. Usaremos el comando vgcreate para esto.

sudo vgcreate labvg /dev/loop20 /dev/loop21

La salida de éxito será:

  Volume group "labvg" successfully created

Finalmente, inspeccionemos nuestro nuevo Grupo de Volúmenes usando vgs para un resumen o vgdisplay para ver los detalles.

sudo vgs

La salida muestra nuestro grupo labvg, que tiene un tamaño total de aproximadamente 512MB (256MB de cada PV).

  VG    #PV #LV #SN Attr   VSize   VFree
  labvg   2   0   0 wz--n- 512.00m 512.00m

Has inicializado correctamente dos dispositivos como Volúmenes Físicos y los has combinado en un solo Grupo de Volúmenes, preparando el terreno para crear Volúmenes Lógicos flexibles.

Crear y Montar un Volumen Lógico con lvcreate y mkfs

En este paso, utilizarás el Grupo de Volúmenes labvg que creaste anteriormente para generar un Volumen Lógico (LV). Un LV es el equivalente en LVM a una partición. Una vez creado, puedes formatearlo con un sistema de archivos y montarlo para que sea accesible para almacenar datos.

Primero, vamos a crear un Volumen Lógico de 200MB llamado lablvm a partir del depósito de almacenamiento labvg. Usamos el comando lvcreate, especificando el tamaño con el modificador -L y el nombre con el modificador -n.

sudo lvcreate -L 200M -n lablvm labvg

Verás un mensaje de confirmación:

  Logical volume "lablvm" created.

Ahora puedes ver tu nuevo LV con el comando lvs, que proporciona un resumen de todos los Volúmenes Lógicos.

sudo lvs

La salida mostrará tu nuevo lablvm dentro del grupo labvg.

  LV     VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lablvm labvg -wi-a----- 200.00m

El nuevo LV, que es accesible como un dispositivo en /dev/labvg/lablvm, es actualmente un dispositivo de bloque bruto sin formato. Para almacenar archivos en él, primero debes crear un sistema de archivos. Utilizaremos el comando mkfs.ext4 para formatearlo con el sistema de archivos común ext4.

sudo mkfs.ext4 /dev/labvg/lablvm

El comando mostrará detalles sobre el sistema de archivos que ha creado:

mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 51200 4k blocks and 51200 inodes
Filesystem UUID: 28796151-bd37-4cae-a17f-071db8795919
Superblock backups stored on blocks:
        32768

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

A continuación, necesitas un directorio que sirva como "punto de montaje". Este es un directorio vacío donde el sistema de archivos del LV se conectará al árbol de directorios principal. Vamos a crear un directorio llamado /lablvm en el directorio raíz.

sudo mkdir /lablvm

Finalmente, usa el comando mount para conectar el sistema de archivos de tu LV (/dev/labvg/lablvm) al punto de montaje (/lablvm).

sudo mount /dev/labvg/lablvm /lablvm

Para confirmar que el volumen se ha montado correctamente y para comprobar su espacio disponible, utiliza el comando df -h (disco libre, en formato legible para humanos).

df -h /lablvm

La salida muestra que el dispositivo está montado y tiene aproximadamente 200MB de espacio disponible.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  172M   24K  158M   1% /lablvm

Has creado, formateado y montado con éxito un Volumen Lógico, dejándolo listo para su uso.

Redimensionar un Volumen Lógico LVM con lvresize

En este paso, explorarás una de las características más potentes de LVM: la capacidad de redimensionar un volumen lógico y su sistema de archivos mientras está en línea y en uso. Esta flexibilidad es una gran ventaja sobre las particiones estáticas tradicionales.

Primero, volvamos a confirmar el tamaño actual de tu volumen lógico montado usando el comando df -h.

df -h /lablvm

Verás que el volumen tiene un tamaño aproximado de 200MB.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  194M  2.6M  179M   2% /lablvm

Ahora, imagina que tu aplicación ejecutándose en /lablvm se está quedando sin espacio. Necesitas aumentar su capacidad de 200MB a 300MB. Puedes hacerlo con el comando lvresize. Utilizaremos el modificador -r, que es muy importante ya que le indica a lvresize que también redimensione el sistema de archivos contenido dentro del volumen lógico. Sin él, el sistema de archivos mantendría su tamaño original y el nuevo espacio sería inutilizable.

sudo lvresize -r -L 300M /dev/labvg/lablvm

La salida muestra que tanto el volumen lógico como el sistema de archivos están siendo redimensionados.

  Size of logical volume labvg/lablvm changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
  Logical volume labvg/lablvm successfully resized.
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/labvg-lablvm is mounted on /lablvm; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/labvg-lablvm is now 76800 (4k) blocks long.

Comprueba de nuevo el espacio en disco con df -h para verificar el cambio.

df -h /lablvm

El volumen tiene ahora aproximadamente 300MB.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  293M  2.6M  275M   1% /lablvm

A veces, no quieres establecer un nuevo tamaño absoluto, sino añadir una cierta cantidad de espacio. Vamos a añadir otros 100MB al volumen. Puedes hacerlo usando el signo + antes del tamaño. Para esta demostración, seguiremos usando el método de tamaño absoluto para asegurar la fiabilidad.

sudo lvresize -r -L 400M /dev/labvg/lablvm

Si encuentras un error del sistema de archivos durante las operaciones de redimensionamiento, no te preocupes; esto puede ocurrir ocasionalmente con redimensionamientos consecutivos rápidos. En tales casos, puedes recuperarte desmontando el sistema de archivos, ejecutando una comprobación del mismo y volviendo a montar:

## Si obtienes un error del sistema de archivos, ejecuta estos comandos de recuperación:
## sudo umount /lablvm
## sudo e2fsck -f /dev/labvg/lablvm
## sudo mount /dev/labvg/lablvm /lablvm

Finalmente, ejecuta df -h una última vez para ver el resultado final.

df -h /lablvm

El volumen tiene ahora aproximadamente 400MB, y el espacio libre en tu Grupo de Volúmenes labvg se ha reducido en consecuencia.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  392M  2.7M  369M   1% /lablvm

Has redimensionado con éxito un volumen LVM activo dos veces, demostrando con qué facilidad puedes gestionar la asignación de almacenamiento sin tiempo de inactividad.

Construir y Montar una Matriz RAID 1 con mdadm

En este paso, cambiarás tu enfoque de LVM a otra potente tecnología de almacenamiento: RAID (Matriz Redundante de Discos Independientes). Utilizarás la utilidad mdadm para crear una matriz RAID 1, también conocida como espejo (mirror). En una configuración RAID 1, los datos se escriben de forma idéntica en dos discos, proporcionando redundancia. Si un disco falla, los datos siguen seguros en el otro.

Primero, necesitamos dos discos simulados más para nuestra matriz RAID. Vamos a crear dos nuevos archivos de imagen de disco de 256MB, disk3.img y disk4.img, en tu directorio ~/project.

truncate -s 256M disk3.img disk4.img

A continuación, asocia estos nuevos archivos de imagen con dispositivos de bucle no utilizados, /dev/loop22 y /dev/loop23.

sudo losetup /dev/loop22 disk3.img
sudo losetup /dev/loop23 disk4.img

Ahora estás listo para construir la matriz RAID 1. Usaremos el comando mdadm para crear un nuevo dispositivo RAID llamado /dev/md0 utilizando nuestros dos dispositivos de bucle.

  • --create /dev/md0: Crea un nuevo dispositivo RAID llamado /dev/md0.
  • --level=1: Especifica el nivel de RAID, en este caso, RAID 1 (espejo).
  • --raid-disks=2: Especifica que la matriz constará de dos discos.
  • /dev/loop22 /dev/loop23: Los dispositivos componentes de la matriz.

Ejecuta el siguiente comando:

sudo mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/loop22 /dev/loop23

El sistema pedirá confirmación antes de proceder. Escribe y y presiona Enter para continuar.

mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Puedes comprobar el estado de tu nueva matriz RAID visualizando el archivo /proc/mdstat.

cat /proc/mdstat

La salida muestra que /dev/md0 está activo y utilizando /dev/loop23 y /dev/loop22. Es posible que también veas que la matriz se está sincronizando (resync), lo cual es normal. La matriz es utilizable incluso mientras este proceso se completa.

Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 loop13[1] loop12[0]
      261120 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.4% (1088/261120) finish=0.1min speed=21760K/sec

unused devices: <none>

Al igual que el volumen LVM, el nuevo dispositivo RAID /dev/md0 necesita un sistema de archivos. Vamos a formatearlo con ext4.

sudo mkfs.ext4 /dev/md0

A continuación, crea un punto de montaje para la matriz RAID.

sudo mkdir /labraid

Finalmente, monta el dispositivo RAID en el nuevo directorio.

sudo mount /dev/md0 /labraid

Verifica que la matriz RAID esté montada correctamente usando df -h.

df -h /labraid

La salida confirma que el dispositivo /dev/md0, con un tamaño total de unos 256MB (ya que es un espejo), está montado y listo para su uso.

Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        249M  2.6M  234M   2% /labraid

Has creado y montado con éxito una matriz RAID 1, proporcionando redundancia de datos para el punto de montaje /labraid.

Persistir Montajes y Configuración RAID con /etc/fstab y mdadm.conf

En este paso final, harás que tus configuraciones de LVM y RAID sean permanentes. Actualmente, si reiniciaras el sistema, la matriz RAID no se ensamblaría automáticamente, y ni el volumen LVM ni la matriz RAID se montarían. Para solucionar esto, necesitas actualizar dos archivos de configuración clave: /etc/mdadm/mdadm.conf para la matriz RAID y /etc/fstab para los puntos de montaje.

Primero, ocupémonos de la matriz RAID. El sistema necesita saber cómo reensamblar /dev/md0 en el momento del arranque. La utilidad mdadm puede generar la línea de configuración necesaria por ti.

Ejecuta el siguiente comando para escanear la matriz activa e imprimir su configuración:

sudo mdadm --detail --scan

La salida es una sola línea que describe tu matriz.

ARRAY /dev/md0 metadata=1.2 name=<hostname>:0 UUID=<some-uuid>

Ahora, vamos a añadir esta configuración al archivo de configuración de mdadm, que se encuentra en /etc/mdadm/mdadm.conf. Enviaremos la salida del comando de escaneo directamente al archivo usando tee.

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Puedes verificar que la línea se añadió visualizando el contenido del archivo:

cat /etc/mdadm/mdadm.conf

A continuación, debes indicarle al sistema que monte automáticamente tus sistemas de archivos al arrancar. Esto se hace añadiendo entradas a /etc/fstab (la tabla de sistemas de archivos). Cada línea en este archivo define un punto de montaje.

Añadamos primero la entrada para tu volumen LVM. Usaremos echo para crear la línea y tee -a para añadirla a /etc/fstab con sudo.

echo '/dev/labvg/lablvm /lablvm ext4 defaults 0 0' | sudo tee -a /etc/fstab

Ahora, haz lo mismo para el punto de montaje de la matriz RAID.

echo '/dev/md0 /labraid ext4 defaults 0 0' | sudo tee -a /etc/fstab

Puedes comprobar que ambas líneas se añadieron correctamente visualizando las dos últimas líneas del archivo /etc/fstab.

tail -n 2 /etc/fstab

Deberías ver las dos líneas que acabas de añadir:

/dev/labvg/lablvm /lablvm ext4 defaults 0 0
/dev/md0 /labraid ext4 defaults 0 0

Para probar que tus entradas en /etc/fstab son correctas sin reiniciar, puedes desmontar los sistemas de archivos y luego usar el comando mount -a, que monta todos los sistemas de archivos listados en /etc/fstab.

Primero, desmonta ambos volúmenes:

sudo umount /lablvm
sudo umount /labraid

Ahora, ejecuta mount -a para que el sistema lea /etc/fstab y lo monte todo.

sudo mount -a

Finalmente, verifica que estén montados de nuevo usando df -h.

df -h /lablvm /labraid

La salida debería mostrar ambos sistemas de archivos montados, tal como estaban antes.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  392M  2.7M  369M   1% /lablvm
/dev/md0                  249M  2.6M  234M   2% /labraid

¡Felicidades! Has configurado con éxito tu sistema para ensamblar automáticamente tu matriz RAID y montar tanto tus sistemas de archivos LVM como RAID al arrancar.

Resumen

En esta práctica de laboratorio, has aprendido los fundamentos de la gestión avanzada de almacenamiento en Linux utilizando LVM y RAID por software. Comenzaste simulando discos físicos con truncate y losetup, para luego proceder a inicializarlos como Volúmenes Físicos (PVs) de LVM con pvcreate. Estos PVs se agruparon posteriormente en un Grupo de Volúmenes (VG) mediante vgcreate. A partir de este depósito de almacenamiento, creaste un Volumen Lógico (LV) flexible con lvcreate, lo formateaste con un sistema de archivos ext4 usando mkfs y lo montaste en el sistema. Se demostró una característica clave de LVM al redimensionar dinámicamente el LV con lvresize y expandir el sistema de archivos para utilizar el nuevo espacio con resize2fs.

Además, configuraste una matriz RAID 1 (espejo) por software utilizando la utilidad mdadm para proporcionar redundancia de datos. Tras construir la matriz a partir de dos discos simulados, la formateaste y montaste de forma similar al volumen LVM. La práctica concluyó asegurando la persistencia de estas configuraciones tras los reinicios. Esto se logró añadiendo los puntos de montaje tanto para el volumen LVM como para la matriz RAID a /etc/fstab, y guardando los detalles de configuración de la matriz RAID en /etc/mdadm/mdadm.conf.