Configurar RAID

Imagen de marlinux

Forums: 

RAID son las siglas en inglés de Redundant Array of Inexpensive Disks, usease Array Redundante de discos baratos, aunque a veces ni tan redundante, ni tan barato ;-)

Para poder configurar un RAID por software en Linux necesitaremos de un kernel 2.4.x 2.6.x(es posible configurarlo en un kernel 2.2.x pero se sale del objetivo de este articulo) y las raidtools ( apt-get install raidtools2 en Debian o aqui ).

Necesitamos habilitar el soporte de RAID en el núcleo, para esto debemos activar el soporte RAID marcando como módulo o directamente en el kernel las siguientes opciones del apartado "Multi-device support (RAID and LVM)":

Multiple devices driver support (RAID and LVM)
Raid Support
Linear (append) mode
RAID-0 (striping mode)
RAID-1 (mirroring mode)
RAID-4/RAID-5 mode

Cualquiera de las dos opciones es correcta, como módulo o directamente en el kernel, únicamente debemos compilar directamente en kernel el soporte RAID cuando queramos arrancar desde un dispositivo RAID.

Una vez configurado y compilado el núcleo instalaremos las raidtools apropiadas a nuestro kernel ( las que vienen en las distribuciones valen perfectamente ) y reiniciaremos. En el momento del arranque o en el momento de insertar los módulos en el núcleo, veremos como se inicializa el driver md, multi-devices y se inician cada uno de los niveles RAID a los que tendremos acceso (0,1,5). A partir de la carga en el núcleo de la parte de RAID, se disponen de los dispositivos /dev/mdx que representan dispositivos raid.

En Linux la composicion de RAID se hace a nivel de partición, por lo que podremos montar por ejemplo un RAID 5 con 3 particiones en 3 discos diferentes ( realmente pueden ser el mismo disco, pero no tendría sentido y perderíamos las capacidades de redundancia y rendimiento de los dispositivos RAID ).

Como no hay nada mejor que un ejemplo, vamos directamete a configurar un RAID, como recordatorio esto es el significado de los niveles RAID mas utilizados:

RAID-0: Une dos o mas particiones en un dispositivo con la capacidad de las particiones que se unen. No es redundante.
RAID-1: El resultado de utilizar dos o mas particiones en este nivel de RAID es un dispositivo con el tamaño de la menor de las particiones, es el modo espejo, todas las particiones contienen la misma información y es tolerante a fallos, soporta el fallo de todos los dispositivos menos 1.
RAID-5: Se necesitan 3 o mas particiones, en todas se guardan datos e información de paridad para poder reconstruir el sistema en caso de fallo de alguno de los discos.

Este resumen ha sido muy por encima, para mas información consultar http://www.smdata.com/NivelesRAID.htm.

RAID-0

Configuraremos ahora un RAID 0 con las particiones hda1 y hdb1 que han sido creadas previamente y ambas tienen como tipo de particion fd, Linux Raid Auto, para que el sistema las detecte automáticamente.

Debemos configurar el archivo raidtab que utiliza las raidtools para crear los RAID. Este seria el archivo:

raiddev /dev/md0
raid-level 0
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
device /dev/hda2
raid-disk 0
device /dev/hdb2
raid-disk 1

En este fichero definimos que queremos un RAID de nivel 0 en el dispositivo /dev/md0, formado por 2 discos (nr-raid-disks) y que no tiene discos de sobra (nr-spare disks, un disco de sobra entra en funcionamiento cuando falla alguno de los pertenecientes al array y ocupa su lugar), le decimos que el tamaño de bloque contiguo al escribir en el array es de 32 KB y que tenemos dos discos, /dev/hda2, el numero 0 y /dev/hdb2, el numero 1.

Para crear el RAID solo nos queda ejecutar el comando mkraid, que leerá la configuración del fichero anterior y configurará el array de acuerdo a él. Las particiones deben estar vacías o mkraid no creará el array. Si las parciones no estan vacias y se quiere crear el array de todas maneras, se debe utilizar la opcion --really-force teniendo en cuenta que borrará todo el contenido de las particiones.

mkraid /dev/md0

Con esto el dispositivo quedará creado y disponible para formatearlo con vuestro sistema de ficheros favorito y montarlo para su uso, por ejemplo con ext2:

mke2fs /dev/md0
mount -t ext2 /dev/md0 /mnt

Desde ahora todos los archivos en /mnt formaran parte del array. El dispositivo /dev/md0 tiene la capacidad resultado de sumar las capacidades de los dos discos que participan en el array (no es una suma exacta, siempre se reserva algun espacio para tareas administrativas del sistema RAID). Cabe recordar que en el nivel 0 de RAID no se toleran fallos de discos, si falla uno de los discos, se perderá inexorablemente información.

RAID 1

Si tenemos las dos particiones anteriores y queremos crear un dispositivo RAID 1 donde una sea copia de la otra, solo tenemos que cambiar el nivel de RAID del archivo de configuración de raid-level 0 a raid-level 1:
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
device /dev/hda2
raid-disk 0
device /dev/hdb2
raid-disk 1

Crearemos y formatearemos el dispostivo exactamente igual que en el caso anterior.

RAID 5

En el caso de que tengamos 3 o mas particiones podemos configurar un RAID de nivel 5 añadiendo discos al archivo de configuración y modificando el nivel de RAID, por ejemplo:

raiddev /dev/md0
raid-level 5
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
device /dev/hda2
raid-disk 0
device /dev/hdb2
raid-disk 1
device /dev/hdc2
raid-disk 2

La creación y formateo del dispositivo es igual en todos los casos.

Si quisiesemos añadir a cualquiera de las configuraciones un disco de sobra para que reemplace al posible disco defectuoso, solo tendremos que indicar en la propiedad nr-spare-disks el numero de discos ( particiones ) que añadimos y colocarlos al final del archivo igual que si fueran discos pertenecientes al array.

En caso de fallo de uno de los discos del array, en los niveles RAID 1 y 5, el sistema seguirá funcionando correctamente en modo degradado. El subsistema RAID de Linux marcará el disco que falla como defectuoso y seguirá funcionando con los discos que le quedan. Cuando tengamos entre manos un disco defectuoso lo que debemos hacer es desconectar el array, apagar el equipo, colocar un disco nuevo o reconfigurar el array y reiniciar.

NOTA: Para simular un fallo de disco, no hay nada mejor que desenchufar uno de los discos del array y arrancar Linux ;-), veras como funciona correctamente, yo ya he tenido la "suerte" de asistir a fallos hardware en un RAID-5 y el sistema funcionó a la perfección.

Herramientas

Las raid tools incluyen una serie de herramientas:

raidstart: inicia un array RAID
raidstop: se utiliza para detener un array y poder hacer modificaciones en él.
raidhotadd: se utiliza para añadir discos en caliente a un array, el RAID actuará en consecuencia ampliando la capacidad o incluyendo el disco en el array redundante.
raidhotremove: es el contrario del anterior, para elminar discos del array

Perfecto, ya tendras ahora un dispositivo RAID funcionando en tu equipo, en el nivel que hayas escogido. Ahora bien, un par de matices, RAID es tolerante a fallos hardware, no software y RAID no elimina la necesidad de hacer copias de seguridad.

Otra cosa, recuerda que todos, *TODOS* los discos duros acaban fallando con el tiempo, es bueno estar preparado...

Imagen de marlinux

Quien ha logrado hacer el nivel 1 de RAID mirrow haciendo que las imagenes se hagan en 2 discos de diferente tamaño, claro esta que este nivel soporta dos o mas discos que puedan utiliza acceso paralelo que funciones independientemente para proporcionar mas alta tarifa de transaccion de I/O, me gustaria leer sus experiencias con RAID level 1

"Linux es Infinito"

Imagen de marlinux

El RAID nivel 1 tiene un alto coste ya que escribe la misma información en todos los discos del array, malgastando de este modo el espacio del disco. Por ejemplo: Ha configurado el RAID nivel 1 de manera que su partición "/" (root) se expanda a traves de dos discos de 40G. Tiene un total de 80G pero sólo puede acceder a 40 de los 80G. Los otros 40G se comportan como un espejo de los primeros 40G

"Linux es Infinito"

Imagen de Epe

Un comentario, he instalado raid en varios linux, y el raid por software, definitivamente no es el más recomendado, porque si falla el SO o las herramientas de RAID, se te queda desincronizado.

Por eso prefiero siempre tener raid por hardware para que quede a cargo de un hard y dejar un poco más libre al SO.

Pero sí, funcionan muy bien, en cuenca tengo instalado un raid-1 por soft y trabaja bien hasta el momento (dos discos idénticos).

El RAID 1 tiene un alto costo financiero pero un buen resultado a la hora de la verdad, cuando el disco X se rompe, el otro queda con todita la información por eso es para empresas que pueden manejar tener información totalemnte duplicada de un disco en otro.

saludos
ernesto

Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre