RAID por software en Linux | mdadm

Vamos a ver cómo crear un RAID por software en Linux con mdadm.

 

La configuración RAID realiza combinaciones entre discos para mejorar el funcionamiento y la fiabilidad.
 


Nosotros vamos a crear ficheros como si fueran discos duros, y los vamos a utilizar para practicar el RAID.
 


Para este ejercicio con MDADM, vamos a utilizar pseudo-discos (dispositivos de bloque) y el comando losetup para asociar dispositivos de bucle (Loop) a esos dispositivos de bloque creados para la práctica.

 

 
Contenidos de este artículo:

 

 

1. MODOS DE RAID

Existen 8 modos básicos RAID.

  • RAID0
  • RAID1
  • RAID2
  • RAID3
  • RAID4
  • RAID5
  • RAID6
  • RAID5E y RAID6E

 

Los conjuntos RAID más utilizados, y en los que nos centraremos, son :

  • RAID 0: Data Stripping o Volumen dividido. Se distribuyen los datos entre los discos (dos o más). No proporciona paridad (corrección de errores). Su característica princial es que proporciona un alto rendimiento de escritura, al escribir los datos en dos o más discos de forma paralela.

 

  • RAID 1: Mirrioring (Espejo). Usa dos discos mínimo. Crea una copia exacta del disco. Usa dos o más discos. Si un disco falla, se pone en acción el segundo disco, que tiene la misma información.

 

  • RAID 5: Distribuido con paridad. Es popular debido a su bajo coste de redundancia. Necesita un mínimo de 3 discos.

 

 
Como en esta práctica vamos a trabajar el RAID en una máquina virtual, realizaremos las pruebas sobre pseudo-discos (dispositivos de bloque habilitados sobre dispositivos Loop) que crearemos con el comando dd.
 

 

1.1 RESUMEN: Creación de RAID por Software con MDADM

 
Tras preparar las particiones o discos que incluiremos en el conjunto RAID, ejecutaremos el comando mdadm, con las opciones:

[modo] dispositivo-raid [opciones] dispositivos-integrantes

 
–> Creación básica de un sistema RAID:

mdadm --create dispositivo-raid nivel-raid numero-dispositivos-raid nombres-archivo-dispositivos-integrantes

 
–> Opciones level mdadm:

--level=
opciones: linear, raid0, 0, stripe, raid1, 1, mirror, raid4, 4, raid5, 5, raid6, 6, raid10, 10, multipath, mp, faulty, container

 

–> Si deseamos hacer la práctica sobre discos virtuales o pseudo-discos, los crearemos con el comando dd.

–> Luego asociaremos los nuevos discos virtuales a dispositivos Loop, con el comando losetup.

–> Y después crearemos el RAID con esos pseudo-discos.

 

 

2. Instalación de mdadm

 

Primero Instalaremos el paquete mdadm

 

apt install mdadm
 
o
 
apt-get install mdadm

 

Después, aparecerá la configuración de mdadm

configuracion de mdadm linux raid

 

mdadm nos preguntará sobre los Arrays MD necesarios para el sistema de ficheros raíz.

Podemos elegir entre todos (all), ninguno (none) o los dispositivos separados por espacios, por ejemplo “md0 md1”

mdadm arrays md necesarios para el sistema de ficheros raiz
 

 

A continuación veremos el paquete mdadm instalándose:

apt install mdadm
 

 

Preconfigurando paquete mdadm:

preconfigurando paquete mdadm linux
 

 

Al haber instalado el paquete mdadm, ya podremos ver que se ha creado el fichero /etc/mdstat

mdadm instalado archivo mdstat

 

 

3. creamos pseudo-discos (ficheros como dispositivos de bloque) en dispositivos loop

 
con el comando dd, crearemos los pseudo-discos que utilizaremos en el sistema RAID.
 
Ya sabemos que con el comando dd podemos ejecutar muchas tareas, como por ejemplo borrar el contenido de una partición. Así:

dd if=/dev/zero of=/dev/sdb2

 
De esta forma borraríamos el contenido de la partición /dev/sdb2

 

Pero en este caso vamos a crear unos ficheros .raw, que serán tratados como un dispositivo de bloques; y utilizaremos el comando losetup para asociar el fichero a un dispositivo loop (Los dispositivos Loop son pseudo-dispositivos que precisamente facilitan el poder acceder a ficheros como si fueran dispositivos de bloques, es decir, un disco duro).

 

 
Para que el sistema trate el fichero como un dispositivo de bloques y no como un fichero normal, vamos a utilizar la instrucción losetup que asocia el fichero que le demos al dispositivo Loop elegido.
 

 

Crearemos 2 pseudo-discos (dispositivos de bloque); y los asociamos a los dispositivos Loop (dispositivos de bucle) lo haremos con :

dd if=/dev/zero of=/srv/disk1.raw bs=1M count=512 ; losetup /dev/loop1 /srv/disk1.raw
 
dd if=/dev/zero of=/srv/disk2.raw bs=1M count=512 ; losetup /dev/loop2 /srv/disk2.raw

 
En este caso estamos creando pseudo-discos de 512 MB.

 

Creando los pseudo-discos ficheros como dispositivos de bloque linux:

crear pseudo discos ficheros como dispositivos de bloque linux

 

 

3.1 mostramos dispositivos Loop creados, y dónde están montados

 
Mostraremos los dispositivos Loop montados, con el comando losetup;
 
en la captura de pantalla vemos que además de los dispositivos disk1.raw y disk2.raw, tenemos otros dispositivos más que por ahora no usaremos.
 
losetup mostramos dispositivos loop y punto montaje
 
losetup dispositivos loop linux

 

 

4. Asociar con el comando losetup los dispositivos Loop a los pseudo-discos creados anteriormente

 
Con losetup asociaremos los dispositivos Loop a los dispositivos de bloque creados anteriormente en srv/
 
Aunque ya lo hemos hecho a la vez que creábamos los dispositivos de bloque con el comando dd, está bien que lo tengamos en cuenta por si debemos asociar los dipositivos de bloque a los dispositivos de bucle (Loop) de nuevo.
 
losetup asociar dispositivos loop a dispositivos de bloque
 

 

5. Crear RAID

 

5.1 Crear RAID 0

 

Si deseamos crear un RAID 0, ejecutaremos estos comandos MDADM:

mdadm --create /dev/md0 --raid-devices=2 --level=0 /dev/loop1 /dev/loop2

es decir, creamos el dispositivo raid /dev/md0, con los dispositivos /dev/loop1 y /dev/loop2, usando un raid 0 (–level=0).
 

 

5.2 Crear RAID 1

 

Si deseamos crear un RAID 1, ejecutaremos:

mdadm --create /dev/md0 --raid-devices=2 --level=1 /dev/loop1 /dev/loop2

 
mdadm create raid-1

 

Aparecerá el mensaje:

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

 
Continue creating array?

Pulsamos y (yes)

 

 

5.3 Comprobamos el RAID activado y los discos asociados: Vemos que el RAID 1 está activado y sincronizando (resync)

 
Podemos ver que se ha creado un raid, llamado md0, con los dispositivos loop1 y loop2, y que el raid se encuentra sincronizando de disco a disco (puesto que RAID 1 utiliza la configuración Mirroring)
 

root@debian:/#cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 loop2[1] loop1[0]
523712 blocks super 1.2 [2/2] [UU]
[==>..................]   resync = 12.5% (65536/523712) finish=0.2min speed
= 32768K/sec

 
linux raid cat /proc/mdstat/ comprobar raid discos
Vemos que la información entre los discos se está sincronizando (resync = 12.5 %), ya que se trata de un RAID 1, y los discos funcionan en modo espejo (el uno es una copia del otro).
 

 

Un tiempo después, ejecutamos de nuevo el comando, y veremos el RAID 1 ya sincronizado totalmente:

root@debian:/#cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 loop2[1] loop1[0]
523712 blocks super 1.2 [2/2] [UU]
 
unused devices : <none>

mdstat raid1 sincronizado

 

 

6. Usar el sistema RAID

 
Utilizamos el dispositivo raid como si fuera un archivo de dispositivo.
 
Primero ejecutamos mkfs y luego montamos el dispositivo con mount.

mkfs -t ext4/ dev/md0
 
mount /dev/md0 /mnt

 

Si queremos que el sistema RAID se monte en cada inicio, debemos añadir entradas en /etc/fstab (sustituyendo /dev/md0 por nombres de archivo de partición como /dev/sda1)

 

 

7. Posible error: error al configurar dispositivo de bucle: dispositivo o recurso ocupado

 
Puede ocurrir que al intentar asociar un dispositivo loop a uno de los pseudo-discos (o disco virtual) creado, recibamos el mensaje:
 

root@debian:/home# losetup /dev/loop1 /srv/hdd1.raw
losetup: /srv/hdd1.raw: error al configurar dispositivo de bucle: Dispositivo o recurso ocupado

error al configurar el dispositivo de bucle: Dispositivo o recurso ocupado

error al configurar dispositivo de bucle dispositivo o recurso ocupado
 
En caso de recibir dicho mensaje, realizaremos una desasociación de los dispositivos Loop, para después volver a realizar la asociación.
 

 

7.1.  desasociar todos dispositivos loop

 

para desasociar todos los dispositivos Loop, ejecutaremos:

losetup -D

 
losetup-d desasociar todos dispositivos loop

 

Hemos visto cómo crear RAID por software con mdadm, cómo crear dispositivos virtuales o pseudo-discos, y utilizarlos para el RAID por medio de su asociación a dispositivos Loop o dispositivos de bucle, con el comando losetup.

 

 

Fuentes y agradecimientos: