En informática, el acrónimo RAID (del inglés Redundant Array of Independent Disks, originalmente Redundant Array Inexpensive Disks), traducido como «conjunto redundante de discos independientes», hace referencia a un sistema de almacenamiento de datos que usa múltiples discos duros o SSD entre los que se distribuyen o replican los datos. Dependiendo de su configuración (a la que suele llamarse «nivel»), los beneficios de un RAID respecto a un único disco son uno o varios de los siguientes: mayor integridad, mayor tolerancia a fallos, mayor throughput (rendimiento) y mayor capacidad. En sus implementaciones originales, su ventaja clave era la habilidad de combinar varios dispositivos de bajo coste y tecnología más antigua en un conjunto que ofrecía mayor capacidad, fiabilidad, velocidad o una combinación de éstas que un solo dispositivo de última generación y coste más alto.
Antes de comenzar te recomiendo que visiones estos 2 vídeos (en el segundo se pierde el sonido pero se ve perfectamente cómo se hace). Al principio del primero se cuenta un poco de teoría para tener una idea clara del concepto y tipos de RAID y en el resto del metraje se explica paso por paso el montaje de un RAID5 por software en Ubuntu, práctica que luego tendrás que reproducir y entregar.
|
|
Principalmente veremos estos 4 niveles de RAID:
- RAID 0: proporciona mayor velocidad de lectura/escritura dado que distribuye los datos equitativamente entre dos o más discos a la vez. La desventaja es que si un disco acaba fallando se pierde la información.
- RAID 1: crea una copia exacta (o espejo) de un conjunto de datos en dos o más discos a la vez. Ventajas: mejora el rendimiento en lectura y mayor seguridad en caso de que un disco falle. Desventaja: el tamaño de un disco está desaprovechado.
- RAID 5: también llamado distribuido con paridad, ventajas: ofrece tolerancia al fallo, pero además, optimiza la capacidad del sistema permitiendo una utilización de hasta el 80% de la capacidad del conjunto de discos. Lo consigue mediante el cálculo de información de paridad y su almacenamiento alternativo por bloques en todos los discos del conjunto, de esta manera, si cualquiera de las unidades de disco falla, se puede recuperar la información en tiempo real, sobre la marcha, a partir de esa información.
- RAID 6: igual que RAID5 pero con un disco más de tolerancia a fallos, es decir, pueden fallar hasta 2 discos a la vez y no se perdería la información. Por lo tanto el mínimo de discos para crear un RAID6 sería uno más, es decir 4. RAID5 cuando hay fallos, sobrecarga mucho los discos que se reponen con la nueva información hasta el punto de reducir su vida útil o hacer que vuelvan a fallar, RAID6 además de ser más seguro es más eficiente en este sentido y por tanto muy utilizado en sector empresarial.
Para que te hagas una idea precisa de cómo funcionan estos 3 niveles te dejo esta simulación (zip - 1.04 MB) que utilizo en el segundo vídeo.
mdadm para crear RAIDs por software
Para la creación y administración de una RAID por software necesitaremos el paquete mdadm. La antigua colección de utilidades para RAID de los paquetes raidtools y raidtools2 se ha dejado de usar. Desde agosto de 2001, existe la herramienta mdadm (multiple devices admin), éste paquete nos permite gestionar las RAIDs por software de una manera mucho más simple y robusta. Actualmente se ha convertido en un estándar.
$ sudo aptitude install mdadm
Preparación de los discos o particionamiento
Debemos tener en cuenta, que puesto que vamos a crear un RAID por software vamos a utilizar particiones en lugar de discos. Sin perjuicio que cada disco contenga una sola partición con la totalidad del tamaño del disco, como de hecho es recomendado.
Para esto antiguamente se utilizaba una herramienta de particionamiento donde además de crear la partición se activaba un flag/bandera/bit que indicaba que ese disco formaba parte de un RAID. Ahora ya no es necesario, el programa mdadm es capaz de coger los discos en crudo (recién comprados) y prepararlos para funcionar como un array de discos sin hacer nada previo. No obstante, se incluye esta información en el apartado siguiente como histórico y para entender qué es lo que hace mdadm cuando prepara los discos, es importante porque cuando el disco deja de pertenecer a un RAID hay que quitarle esa bandera de pertenencia al mismo para poder usarlo de manera independiente.
Preparación de discos con Gparted (obsoleto)
En nuestro caso vamos a utilizar GParted, una herramienta gráfica de fácil uso. Puesto que Ubuntu no la lleva instalada por defecto la instalaremos mediante el Gestor de paquetes Synaptic, o bien con aptitude mediante comandos:
$ sudo aptitude install gparted
Una vez instalado GParted, procedemos a crear una partición para la totalidad de cada uno de los discos idénticos de los que disponemos para crear la RAID. Debemos crear una partición sin formato, puesto que el formato de la RAID lo daremos cuando esta esté construida. A parte del formato debemos indicar que se tratará de un disco para crear una RAID. Esto lo podemos hacer de manera fácil con GParted, seleccionando la partición con el botón derecho del ratón y elegir "Gestionar opciones" y marcando la bandera "RAID":
Con fdisk veremos este hecho marcado como "Autodetección Linux raid" (Linux raid autodetect). Una vez acabado el proceso podemos ver con fdisk -l un listado de las particiones. Podemos observar que la columna "Id" muestra el valor "fd" esto es debido a que lo hemos marcado como "Autodetección Linux raid" (Linux raid autodetect).
Creación del RAID
Primeramente antes de crear la RAID podemos ver en el fichero /proc/mdstat si hay algún otro array:
cat /proc/mdstat
Luego vamos a crear el raid
$ sudo mdadm --create /dev/md/pcdelarioja:raid5 --level=raid5 --raid-devices=3 /dev/sdc /dev/sdd /dev/sde
Detalles del comando mdadm:
- En --create /dev/md/pcdelarioja:raid5 le indicaremos el identificador con el que vamos a designar el array. Tiene que ser un nombre compuesto con el caracter dos puntos en medio (p. ej. fernando:0, raid5:grande, raid5:0, raid5:1, etc.). El sistema crea un enlace simbólico con ese nombre en la carpeta /dev/md/ que apunta al dispositivo real que maneja mdadm en la carpeta /dev con nombre md# (siendo # un número) de manera que el primer Raid que se crea es /dev/md127. De esta manera, cuando queramos monitorizarlo podemos utilizar: mdadm -D /dev/md/pcdelarioja:raid5 o también mdadm -D /dev/md127
- En --level=raid5 indicaremos el tipo de raid que queremos que sea. Los valores validos aquí son: raid0, raid1, raid5 …
- Como vemos debemos indicarle los discos o particiones con las que hacer el RAID, así como el número de discos/particiones (en el ejemplo hemos utilizado el tercer, cuarto y quinto discos duros SATA/SCSI): --raid-devices=3 /dev/sdc /dev/sdd /dev/sde
Una vez ha terminado el proceso de construcción de la raid podemos ver de nuevo en el fichero /proc/mdstat el estado de nuestro array. O también con el comando:
Montar el RAID
Lo podemos montar como un dispositivo más. Para ello, habrá que formatearlo con un sistema de ficheros, por ejemplo ext4.
$ sudo mkfs.ext4 /dev/md/pcdelarioja:raid5
Después ya lo podremos montar como un dispositivo más.
$ sudo mount –t ext4 /dev/md/pcdelarioja:raid5 /media/raid5
Montaje de RAID en el arranque
Para ello, habrá que poner la línea de montaje en el fichero /etc/fstab
/dev/md/pcdelarioja:raid5 /media/raid5 ext4 defaults 0 0
Y además hay que configurar un fichero especial, el fichero /etc/mdadm/mdadm.conf
Tenemos que escribir en él los dispositivos que se utilizan para el RAID así como el resultado del comando: mdadm --detail --scan
Podemos hacerlo, empezando una Shell de root (sudo -i) y añadiendo esta información con la redirección >> por si hubiera una configuración previamente establecida:
# echo "DEVICE /dev/sdc /dev/sdd /dev/sde" >> /etc/mdadm/mdadm.conf
# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Para darle una etiqueta al raid puedes utilizar el comando:
# e2label /dev/md/pcdelarioja:raid5 vol.RAID5
Monitorización del RAID
Una vez montado podremos escribir en él normalmente. Para observar su funcionamiento: cat /proc/mdstat
o mejor por ser más detallados:
mdadm --query /dev/md/pcdelarioja:raid5
mdadm --detail /dev/md/pcdelarioja:raid5
Administración de un RAID
Podemos realizar muchas funciones con un raid, dos son básicas. Establecer un disco como fallo y eliminarlo:
$ sudo mdadm --fail /dev/md/pcdelarioja:raid5 /dev/sdd1
Podemos comprobar como lo marca como "con fallo" y lo deja en reserva (faulty spare), es decir, todavía no lo ha eliminado, procedamos:
$ sudo mdadm --remove /dev/md/pcdelarioja:raid5 /dev/sdd1
Añadir un disco Nuevo:
$ sudo mdadm --add /dev/md/pcdelarioja:raid5 /dev/sdf
Nota importante: Usando VMware, no detecta la inserción de un disco duro en caliente, así que hay forzar la detección de un disco nuevo poniendo esta línea como root:
# echo "- - -" > /sys/class/scsi_host/host2/scan
# cat /proc/scsi/scsi
# umount /dev/md/pcdelarioja:raid5
# umount -l /dev/md/pcdelarioja:raid5
-l Lazy unmount. Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem
as soon as it is not busy anymore. (Requires kernel 2.4.11 or later.)
# mdadm --stop /dev/md/pcdelarioja:raid5
# mdadm --remove /dev/md127
# mdadm --zero-superblock /dev/sdc /dev/sdd /dev/sde
$ sudo mdadm --add /dev/md/pcdelarioja:raid5 /dev/sdf
$ sudo mdadm --grow --raid-devices=4 /dev/md/pcdelarioja:raid5