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:
- 3.creación de pseudo-discos (dispositivos de bloque) en dispositivos de bucle (Dispositivos Loop)
- 3.1 mostramos dispositivos Loop creados, y dónde están montados
- 5. Crear RAID
- 7. Posible error: error al configurar dispositivo de bucle: dispositivo o recurso ocupado
- 7.1. losetup -D desasociar todos los dispositivos loop
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
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”
A continuación veremos el paquete mdadm instalándose:
Preconfigurando paquete mdadm:
Al haber instalado el paquete mdadm, ya podremos ver que se ha creado el fichero /etc/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:
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.
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.
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 |
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 |
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:
[email protected]:/#cat /proc/mdstat Personalities : [raid1] md0 : active raid1 loop2[1] loop1[0] 523712 blocks super 1.2 [2/2] [UU] unused devices : <none> |
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
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 |
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: