Base de Conocimiento
Arreglos RAID
Sobre los arreglos RAID#
En informática, el acrónimo RAID (originalmente del inglés Redundant Array of Inexpensive Disks, «conjunto redundante de discos baratos», en la actualidad también de Redundant Array of Independent Disks, «conjunto redundante de discos independientes») hace referencia a un sistema de almacenamiento que usa múltiples discos duros entre los que distribuye o replica 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
- 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.
En el nivel más simple, un RAID combina varios discos duros en una sola unidad lógica. Así, en lugar de ver varios discos duros diferentes, el sistema operativo ve uno solo. Los RAID suelen usarse en servidores y normalmente (aunque no es necesario) se implementan con unidades de disco de la misma capacidad. Debido al decremento en el precio de los discos duros y la mayor disponibilidad de las opciones RAID incluidas en los chipsets de las placas base, los RAID se encuentran también como opción en los ordenadores personales más avanzados. Esto es especialmente frecuente en los computadores dedicados a tareas intensivas de almacenamiento, como edición de audio y vídeo.
La especificación RAID original sugería cierto número de «niveles RAID» o combinaciones diferentes de discos. Cada una tenía ventajas y desventajas teóricas. Con el paso de los años, han aparecido diferentes implementaciones del concepto RAID. La mayoría difieren sustancialmente de los niveles RAID idealizados originalmente, pero se ha conservado la costumbre de llamarlas con números. Esto puede resultar confuso, dado que una implementación RAID 5, por ejemplo, puede diferir sustancialmente de otra. Los niveles RAID 3 y RAID 4 son confundidos con frecuencia e incluso usados indistintamente.
La misma definición de RAID ha estado en disputa durante años. El uso de término «redundante» hace que muchos objeten sobre que el RAID 0 sea realmente un RAID. De igual forma, el cambio de «barato» a «independiente» confunde a muchos sobre el pretendido propósito del RAID. Incluso hay algunas implementaciones del concepto RAID que usan un solo disco. Pero en general, diremos que cualquier sistema que emplee los conceptos RAID básicos de combinar espacio físico en disco para los fines de mejorar la fiabilidad, capacidad o rendimiento es un sistema RAID.
Implementaciones RAID#
La distribución de datos en varios discos puede ser gestionada por hardware dedicado o por software. Además, existen sistemas RAID híbridos basados en software y hardware específico.
Con la implementación por software, el sistema operativo gestiona los discos del conjunto a través de una controladora de disco normal (IDE/ATA, Serial ATA, SCSI, SAS o Fibre Channel). Considerada tradicionalmente una solución más lenta, con el rendimiento de las CPUs modernas puede llegar a ser más rápida que algunas implementaciones hardware, a expensas de dejar menos tiempo de proceso al resto de tareas del sistema.
Una implementación de RAID basada en hardware requiere al menos una controladora RAID específica, ya sea como una tarjeta de expansión independiente o integrada en la placa base, que gestione la administración de los discos y efectúe los cálculos de paridad (necesarios para algunos niveles RAID). Esta opción suele ofrecer un mejor rendimiento y hace que el soporte por parte del sistema operativo sea más sencillo (de hecho, puede ser totalmente transparente para éste). Las implementaciones basadas en hardware suelen soportar sustitución en caliente (hot swapping), permitiendo que los discos que fallen puedan reemplazarse sin necesidad de detener el sistema.
En los RAID mayores, la controladora y los discos suelen montarse en una caja externa específica, que a su vez se conecta al sistema principal mediante una o varias conexiones SCSI, Fibre Channel o iSCSI. A veces el sistema RAID es totalmente autónomo, conectándose al resto del sistema como un NAS.
Los RAID híbridos se han hecho muy populares con la introducción de controladoras RAID hardware baratas. En realidad, el hardware es una controladora de disco normal sin características RAID, pero el sistema incorpora una aplicación de bajo nivel que permite a los usuarios construir RAID controlados por la BIOS. Será necesario usar un controlador de dispositivo específico para que el sistema operativo reconozca la controladora como un único dispositivo RAID. Estos sistemas efectúan en realidad todos los cálculos por software (es decir, los realiza la CPU), con la consiguiente pérdida de rendimiento, y típicamente están restringidos a una única controladora de disco.
Una importante característica de los sistemas RAID por hardware es que pueden incorporar un caché de escritura no volátil (con alimentación de respaldo por batería) que permite aumentar el rendimiento del conjunto de discos sin comprometer la integridad de los datos en caso de fallo del sistema. Esta característica no está obviamente disponible en los sistemas RAID por software, que suelen presentar por tanto el problema de reconstruir el conjunto de discos cuando el sistema es reiniciado tras un fallo para asegurar la integridad de los datos. Por el contrario, los sistemas basados en software son mucho más flexibles (permitiendo, por ejemplo, construir RAID de particiones en lugar de discos completos y agrupar en un mismo RAID discos conectados en varias controladoras) y los basados en hardware añaden un punto de fallo más al sistema (la controladora RAID).
Todas las implementaciones pueden soportar el uso de uno o más discos de reserva (hot spare), unidades pre-instaladas que pueden usarse inmediatamente (y casi siempre automáticamente) tras el fallo de un disco del RAID. Esto reduce el tiempo del período de reparación al acortar el tiempo de reconstrucción del RAID.
Tipos de configuración de arreglos RAID#
Los niveles RAID más comúnmente usados son:
- RAID 0: Conjunto dividido
- RAID 1: Conjunto en espejo
- RAID 5: Conjunto dividido con paridad distribuida
RAID 0#
Un RAID 0 (también llamado conjunto dividido o volumen dividido), distribuye los datos equitativamente entre dos o más discos sin información de paridad que proporcione redundancia. Es importante señalar que el RAID 0 no era uno de los niveles RAID originales y que no es redundante. El RAID 0 se usa normalmente para incrementar el rendimiento, aunque también puede utilizarse como forma de crear un pequeño número de grandes discos virtuales a partir de un gran número de pequeños discos físicos. Un RAID 0 puede ser creado con discos de diferentes tamaños, pero el espacio de almacenamiento añadido al conjunto estará limitado al tamaño del disco más pequeño (por ejemplo, si un disco de 300 GB se divide con uno de 100 GB, el tamaño del conjunto resultante será 200 GB). Una buena implementación de un RAID 0 dividirá las operaciones de lectura y escritura en bloques de igual tamaño y los distribuirá equitativamente entre los dos discos. También es posible crear un RAID 0 con más de un disco, si bien la fiabilidad del conjunto será igual a la fiabilidad media de cada disco entre el número de discos del conjunto; es decir, la fiabilidad total —medida como MTTF o MTBF— es (aproximadamente) inversamente proporcional al número de discos del conjunto. Esto se debe a que el sistema de ficheros se distribuye entre todos los discos sin redundancia, por lo que cuando uno de ellos falla se pierde una parte muy importante de los datos.
Con un RAID 0, si todos los sectores accedidos están en el mismo disco, entonces el tiempo de búsqueda será el de dicho disco. Si los sectores a acceder están distribuidos equitativamente entre los discos, entonces el tiempo de búsqueda aparente estará entre el más rápido y el más lento de los discos del conjunto, pues todos los discos necesitan acceder a su parte de los datos antes de que la operación pueda completarse. Esto podría llevar a tiempos de búsqueda cercanos al peor escenario para un único disco, salvo si los discos giran sincronizadamente, lo que daría tiempos de búsqueda sólo ligeramente superiores al de un único disco. La velocidad de transferencia del conjunto será la suma de la de todos los discos, limitada sólo por la velocidad de la controladora RAID.
El RAID 0 es útil para configuraciones tales como servidores NFS de solo lectura en las que montar muchos discos es un proceso costoso en tiempo y la redundancia es irrelevante. Otro uso es cuando el número de discos está limitado por el sistema operativo: por ejemplo, en Microsoft Windows el número de unidades lógicas (letras) está limitado a 24, por lo que el RAID 0 es una forma de usar más discos (en Windows 2000 Professional y posteriores es posible montar particiones en directorios, de forma parecida a Unix, eliminando así la necesidad de asignar una letra a cada unidad). El RAID 0 es también una opción popular para sistemas destinados a juegos en los que se desea un buen rendimiento y la integridad no es muy importante, si bien el coste es una preocupación para la mayoría de los usuarios.
RAID 1#
Un RAID 1 crea una copia exacta (o espejo) de un conjunto de datos en dos o más discos. Esto resulta útil cuando el rendimiento en lectura es más importante que la capacidad. Un conjunto RAID 1 sólo puede ser tan grande como el más pequeño de sus discos. Un RAID 1 clásico consiste en dos discos en espejo, lo que incrementa exponencialmente la fiabilidad respecto a un solo disco; es decir, la probabilidad de fallo del conjunto es igual al producto de las probabilidades de fallo de cada uno de los discos (pues para que el conjunto falle es necesario que lo hagan todos sus discos).
Adicionalmente, dado que todos los datos están en dos o más discos, con hardware habitualmente independiente, el rendimiento de lectura se incrementa aproximadamente como múltiplo lineal del número del copias; es decir, un RAID 1 puede estar leyendo simultáneamente dos datos diferentes en dos discos diferentes, por lo que su rendimiento se duplica. Para maximizar los beneficios sobre el rendimiento del RAID 1 se recomienda el uso de controladoras de disco independientes, una para cada disco (práctica que algunos denominan splitting o duplexing).
Como en el RAID 0, el tiempo medio de lectura se reduce, ya que los sectores a buscar pueden dividirse entre los discos, bajando el tiempo de búsqueda y subiendo la tasa de transferencia, con el único límite de la velocidad soportada por la controladora RAID. Sin embargo, muchas tarjetas RAID 1 IDE antiguas leen sólo de un disco de la pareja, por lo que su rendimiento es igual al de un único disco. Algunas implementaciones RAID 1 antiguas también leen de ambos discos simultáneamente y comparan los datos para detectar errores. La detección y corrección de errores en los discos duros modernos hacen esta práctica poco útil.
Al escribir, el conjunto se comporta como un único disco, dado que los datos deben ser escritos en todos los discos del RAID 1. Por tanto, el rendimiento no mejora.
El RAID 1 tiene muchas ventajas de administración. Por ejemplo, en algunos entornos 24/7, es posible «dividir el espejo»: marcar un disco como inactivo, hacer una copia de seguridad de dicho disco y luego «reconstruir» el espejo. Esto requiere que la aplicación de gestión del conjunto soporte la recuperación de los datos del disco en el momento de la división. Este procedimiento es menos crítico que la presencia de una característica de snapshot en algunos sistemas de ficheros, en la que se reserva algún espacio para los cambios, presentando una vista estática en un punto temporal dado del sistema de ficheros. Alternativamente, un conjunto de discos puede ser almacenado de forma parecida a como se hace con las tradicionales cintas.
RAID 5#
Un RAID 5 usa división de datos a nivel de bloques distribuyendo la información de paridad entre todos los discos miembros del conjunto. El RAID 5 ha logrado popularidad gracias a su bajo coste de redundancia. Generalmente, el RAID 5 se implementa con soporte hardware para el cálculo de la paridad.
Cada vez que un bloque de datos se escribe en un RAID 5, se genera un bloque de paridad dentro de la misma división (stripe). Un bloque se compone a menudo de muchos sectores consecutivos de disco. Una serie de bloques (un bloque de cada uno de los discos del conjunto) recibe el nombre colectivo de división (stripe). Si otro bloque, o alguna porción de un bloque, es escrita en esa misma división, el bloque de paridad (o una parte del mismo) es recalculada y vuelta a escribir. El disco utilizado por el bloque de paridad está escalonado de una división a la siguiente, de ahí el término «bloques de paridad distribuidos». Las escrituras en un RAID 5 son costosas en términos de operaciones de disco y tráfico entre los discos y la controladora.
Los bloques de paridad no se leen en las operaciones de lectura de datos, ya que esto sería una sobrecarga innecesaria y disminuiría el rendimiento. Sin embargo, los bloques de paridad se leen cuando la lectura de un sector de datos provoca un error de CRC. En este caso, el sector en la misma posición relativa dentro de cada uno de los bloques de datos restantes en la división y dentro del bloque de paridad en la división se utilizan para reconstruir el sector erróneo. El error CRC se oculta así al resto del sistema. De la misma forma, si falla un disco del conjunto, los bloques de paridad de los restantes discos son combinados matemáticamente con los bloques de datos de los restantes discos para reconstruir los datos del disco que ha fallado «al vuelo».
Lo anterior se denomina a veces Modo Interino de Recuperación de Datos (Interim Data Recovery Mode). El sistema sabe que un disco ha fallado, pero sólo con el fin de que el sistema operativo pueda notificar al administrador que una unidad necesita ser reemplazada: las aplicaciones en ejecución siguen funcionando ajenas al fallo. Las lecturas y escrituras continúan normalmente en el conjunto de discos, aunque con alguna degradación de rendimiento. La diferencia entre el RAID 4 y el RAID 5 es que, en el Modo Interno de Recuperación de Datos, el RAID 5 puede ser ligeramente más rápido, debido a que, cuando el CRC y la paridad están en el disco que falló, los cálculos no tienen que realizarse, mientras que en el RAID 4, si uno de los discos de datos falla, los cálculos tienen que ser realizados en cada acceso.
El RAID 5 requiere al menos tres unidades de disco para ser implementado. El fallo de un segundo disco provoca la pérdida completa de los datos. El número máximo de discos en un grupo de redundancia RAID 5 es teóricamente ilimitado, pero en la práctica es común limitar el número de unidades. Los inconvenientes de usar grupos de redundancia mayores son una mayor probabilidad de fallo simultáneo de dos discos, un mayor tiempo de reconstrucción y una mayor probabilidad de hallar un sector irrecuperable durante una reconstrucción. A medida que el número de discos en un conjunto RAID 5 crece, el MTBF (tiempo medio entre fallos) puede ser más bajo que el de un único disco. Esto sucede cuando la probabilidad de que falle un segundo disco en los N-1 discos restantes de un conjunto en el que ha fallado un disco en el tiempo necesario para detectar, reemplazar y recrear dicho disco es mayor que la probabilidad de fallo de un único disco. Una alternativa que proporciona una protección de paridad dual, permitiendo así mayor número de discos por grupo, es el RAID 6.
Las implementaciones RAID 5 presentan un rendimiento malo cuando se someten a cargas de trabajo que incluyen muchas escrituras más pequeñas que el tamaño de una división (stripe). Esto se debe a que la paridad debe ser actualizada para cada escritura, lo que exige realizar secuencias de lectura, modificación y escritura tanto para el bloque de datos como para el de paridad. Implementaciones más complejas incluyen a menudo cachés de escritura no volátiles para reducir este problema de rendimiento.
En el caso de un fallo del sistema cuando hay escrituras activas, la paridad de una división (stripe) puede quedar en un estado inconsistente con los datos. Si esto no se detecta y repara antes de que un disco o bloque falle, pueden perderse datos debido a que se usará una paridad incorrecta para reconstruir el bloque perdido en dicha división. Esta potencial vulnerabilidad se conoce a veces como «agujero de escritura». Son comunes el uso de caché no volátiles y otras técnicas para reducir la probabilidad de ocurrencia de esta vulnerabilidad.
Instalación y Configuración de RAID#
En este manual vamos a explicar como configurar un RAID a nivel software sobre CentOS.
Para ello partiremos de dos discos duros hipotéticos los cuales tendrán la siguiente disposición. RAID 1 que nos permitirá mantener los datos mas críticos en dos particiones en espejo, en el caso de fallar uno de los discos no perderíamos datos.
Instalación de paquetes#
Los paquetes necesarios para implementar un RAID en conjunción con un LVM serán los siguientes:
- mdadm
Para instalarlos teclee en una terminal de BASH lo siguiente:
[BASH]# yum install mdadm
Instalación y configuración del RAID#
El principal requisito para implementar un RAID sera disponer de dos discos duros de la misma capacidad. Estos discos duros deberán tener asignadas las siguientes particiones: El disco duro numero 1 contendrá dos particiones
- sda1 sera para la /
- sda2 sera para la SWAP
El disco duro numero 2 deberá contener igualmente dos particiones
- sdb1 del mismo tamaño que sda1
- sdb2 del mismo tamaño que sda2
Estas particiones pueden ser creadas con la ayuda de fdisk, comando del cual hemos hablado extensamente en capitulos anteriores. Una vez creadas las particiones solo restara asignar el identificador correspondiente a particiones tipo RAID, para hacerlo haga lo siguiente: Abra una terminal y teclee:
[BASH]# fdisk /dev/[h|s] d [a|b|c]
Donde :
h | La letra 'h' hace referencia a un disco duro PATA. Eje: hd | |
s | La letra 's' hace referencia a un disco duro SATA. Eje: sd | |
a | La letra 'a' hace referencia al primer disco duro del equipo | |
b | La letra 'b' hace referencia al segundo disco duro del equipo | |
c | La letra 'c' hace referencia al tercer disco duro del equipo |
En nuestro caso, contamos con un solo disco duro PATA en el equipo, por lo que ejecutaremos fdisk de la siguiente manera:
[BASH]# fdisk /dev/hdb
Una vez que la aplicación esta iniciada, se nos presenta el siguiente mensaje:
Command (m for help):
Si usted presiona la tecla 'm' se imprimirá el menú con las herramientas propias del comando fdisk. Estas herramientas son:
a | Conmuta el indicador de iniciable | |
b | Modifica la etiqueta de disco bsd | |
c | Conmuta el indicador de compatibilidad con DOS | |
d | Suprime una partición | |
l | Lista los tipos de particiones conocidos | |
m | Imprime este menú | |
n | Añade una nueva partición | |
o | Crea una nueva tabla de particiones DOS vacía | |
p | Imprime la tabla de particiones | |
q | Sale sin guardar los cambios | |
s | Crea una nueva etiqueta de disco Sun | |
t | Cambia el identificador de sistema de una partición | |
u | Cambia las unidades de visualización/entrada | |
v | Verifica la tabla de particiones | |
w | Escribe la tabla en el disco y sale | |
x | Funciones adicionales (sólo para usuarios avanzados) |
Como podemos notar, con la opción "m" podemos imprimir nuevamente este menú. Seleccione del menú, la opción “Cambiar el identificador de sistema de una partición”, para ello teclee la letra 't' , esto nos mostrara la distribución actual de nuestras particiones en nuestro disco duro.
Fdisk, nos preguntara a que partición queremos cambiar el ID, estas particiones serán:
- sdb1
- sdb2
Como no conocemos el código hexadecimal para las particiones RAID lanzamos la ayuda para poder visualizar todos los códigos hexadecimales disponibles, para ello teclee la letra 'L' y localiza el código hexadecimal para las particiones RAID. El código hexadecimal para las particiones RAID es el siguiente:
fd Linux raid autoUna vez localizado el código hexadecimal, solo restara teclearlo. Para guardar los cambios al disco teclee la letra 'w' El siguiente paso sera asignar y crear el RAID. En una terminal de BASH teclee lo siguiente:
[BASH]# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1[BASH]# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2 }}}
En donde:
| create /dev/md0 | Sera el nombre del RAID que estamos creando | |
| level=1 | Le indicamos que tipo de RAID estamos creando, en este caso RAID1 | |
| raid-disks=2 | El numero de dispositivos que forman el RAID | |
| /dev/sda [] /dev/sdb[] | La lista de dispositivos que forma parte del RAID |
Estos RAID los crearemos en modo degradado, de momento solo añadiremos al RAID los discos que hemos formateado, por lo que las entradas que corresponden al disco /dev/sda las dejamos en missing El siguiente paso sera darles formato a las particiones RAID, para ello teclee lo siguiente (Recuerde que esta acción debe hacerse en nivel de ejecución 1).
[BASH]# mkfs.ext3 /dev/md0[BASH]# mkswap /dev/md1}}}
Una vez hecho esto tenemos que modificar el fichero
/etc/mdadm.confpara ello ejecutaremos
[BASH]# mdadm --examine --scanQue nos devuelve información de nuestro RAID. De dicha información se deberá agregar las siguientes lineas al final del fichero mdadm.conf
ARRAY /dev/md0 level=raid1 num-devices=2 UUI...ARRAY /dev/md1 level=raid1 num-devices=2 UUI...}}}
Montaje del RAID#
La siguiente acción sera crear los puntos de montaje en donde serán alojadas nuestras particiones RAID. Para ello crearemos dos carpetas dentro de la ruta /mnt como se muestra a continuación.
[BASH]# mkdir /mnt/md0[BASH]# mkdir /mnt/md1}}} Y luego de crearlas monte sobre ellas las particiones RAID creadas anteriormente
[BASH]# mount /dev/md0 /mnt/md0[BASH]# mount /dev/md0 /mnt/md1}}} Ahora modificaremos el archivo
/etc/fstabpara que nos monte las particiones RAID como RAIZ y SWAP , para ello deberá sustituir las siguientes lineas:
/dev/sda1 / ext3 defaults,errors=remount-ro 0 1/dev/sda2 none swap sw 0 0}}} Por estas:
/dev/md0 / ext3 defaults,errors=remount-ro 0 1/dev/md1 none swap sw 0 0}}} También se debe modificar el fichero
/etc/mtabhacemos lo mismo, sustituimos dentro del fichero /dev/sda1 por /dev/md0
Modificando el boteo de Linux#
Ahora editaremos el menú del grub para que arranque el sistema operativo desde la partición RAID que hemos creado, para ello abra el fichero:
/boot/grub/menu.lstY duplica las lineas que hacen referencia a la partición en donde se encuentra los ficheros de boteo de linux, en nuestro caso debe ser algo similar a esto:
title Centos 5.3, kernel 2.6.24-17-genericroot (hd0,0) kernel /boot/vmlinuz-2.6.24-17-generic root=/dev/sda1 ro quiet splash initrd /boot/initrd.img-2.6.24-17-generic quiet}}}
Y modificamos el primero para que apunte a /dev/md0 en el disco (hd1,0). El segundo lo dejamos apuntando a nuestra partición raíz actual por si no arranca correctamente desde /dev/md0. Al final nuestro fichero deberá quedar de la siguiente manera:
title Centos 5.3, kernel 2.6.24-17-genericroot (hd1,0) kernel /boot/vmlinuz-2.6.24-17-generic root=/dev/md0 ro quiet splash initrd /boot/initrd.img-2.6.24-17-generic quiet
title Centos 5.3, kernel 2.6.24-17-generic root (hd0,0) kernel /boot/vmlinuz-2.6.24-17-generic root=/dev/sda1 ro quiet splash initrd /boot/initrd.img-2.6.24-17-generic quiet}}}
A continuación actualizaremos el ramdisk Ramdisk es una porción de memoria ram la cual se utiliza como si fuera un disco duro. Los discos RAM tienen tamaños establecidos que son como una partición de disco. Los tiempos de acceso para un disco RAM son mucho mas rápidos que en un disco físico Sin embargo, cualquier información guardad en un ram disk se pierde cuando el sistema se apaga o reinicia. Pero son un buen lugar para almacenamiento temporal de datos. Desde la versión 2.4 del kernel de linux se puede encontrar soporte para ramdisks, por lo cual se puede encontrar en cualquier distro moderna de linux Para hacer la actualización teclearemos lo siguiente en consola:
[BASH]# update-initramfs -uYa solo faltaría copiar todos los datos de / a la nueva partición desde la que va a arrancar ahora, para hacerlo teclee lo siguiente:
[BASH]# cp -dpRx / /mnt/md0Donde:
| dp | Preserva los los atributos de los ficheros (enlaces simbólicos,permisos, modos de lectura) | |
| R | Copia recursivamente el contenido de las carpetas | |
| x | Le indica que debe adaptarse al sistema de ficheros nuevo |
Ademas de todos los pasos antes descritos debemos activar el grub en los dos discos duros, para ello teclee lo siguiente en una terminal de BASH:
[BASH]# grubgrub> root (hd1,0) grub> setup (hd1)
grub> root (hd0,0) grub> setup (hd0) exit}}}
Los siguiente sera reiniciar el equipo el cual ya tiene que arrancar desde el RAID que como recordara se encuentra funcionando en modo degradado ya que solo dispone de un disco duro. Lo podemos verificar con el siguiente comando
[BASH]# df -h
Recuerde la partición /dev/md0 debe estar montada en /. Ahora que hemos conseguido arrancar el sistema desde el segundo disco duro es hora de preparar las particiones del primer disco para añadirlo al RAID, para hacerlo se tiene que modificar el identificador de estas particiones que al igual que lo hicimos con /dev/sdb1 y /dev/sdb2, se deberá hacer con /dev/sda1 y /dev/sda2. Luego de haber hecho el paso anterior añadiremos las particiones del disco duro 1 al RAID.
[BASH]# mdadm --add /dev/md0 /dev/sda1[BASH]# mdadm --add /dev/md1 /dev/sda2}}}
Si compruebas ahora el fichero /proc/mdstat veras que se esta sincronizando el RAID, hay que esperar hasta que finalice:
[BASH]# more /proc/mdstat------------------------------------------------------------------------ Personalities : [raid1] md2 : active raid1 sda1[2] sdb1[1] 8702093 blocks [2/1] [_U] [=====>...............] recovery = 37.3% (3245881/8702093) finish=2.4min speed=67433K/sec
md1 : active raid1 sda2[0] sdb2[1] 197920 blocks [2/2] [UU]}}} Al finalizar el proceso nos debería arrojar un resultado como este:
Personalities : [raid1]md2 : active raid1 sda1[0] sdb1[1] 8702093 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1] 197920 blocks [2/2] [UU]}}} Lo cual nos quiere decir que ya lo tenemos correctamente sincronizando Volveremos a modificar el fichero
/etc/mdadm.confal cual tendremos que eliminar las lineas que habíamos añadido anteriormente y sustituirlas por las que nos devuelve ahora la ejecución del siguiente comando:
[BASH]# mdadm --examine --scan
En particular las siguientes lineas:
...ARRAY /dev/md0 level=raid1 num-devices=2 UUI... ARRAY /dev/md1 level=raid1 num-devices=2 UUI...}}}
Debemos modificar de nuevo el grub para que la entrada que apunta todavía a /dev/sda1 apunte a /dev/md0 en el disco (hd0,0). Para hacerlo abra el fichero /boot/grub/menu.lst y cambie esta linea
kernel /boot/vmlinuz-2.6.24-17-generic root=/dev/sda1 ro quiet splashpor esta otra
kernel /boot/vmlinuz-2.6.24-17-generic root=/dev/md0 ro quiet splashal final deberá lucir de la siguiente manera
title Centos 5.3, kernel 2.6.24-17-genericroot (hd1,0) kernel /boot/vmlinuz-2.6.24-17-generic root=/dev/md0 ro quiet splash initrd /boot/initrd.img-2.6.24-17-generic quiet
title Centos 5.3, kernel 2.6.24-17-generic root (hd0,0) kernel /boot/vmlinuz-2.6.24-17-generic root=/dev/md0 ro quiet splash initrd /boot/initrd.img-2.6.24-17-generic quiet}}}
Con esto el sistema arrancara por defecto desde el disco hd1 y en el caso de que este disco falle deberemos indicarle manualmente que arranque desde la otra partición. Para que el sistema arranque automáticamente desde el segundo disco si falla el primero debemos añadir fallback justo debajo de default en el fichero /boot/grub/menu.lst
...default 0 fallback 1 ...}}} O sea, que arranque por defecto de la entrada 0 (la primera del listado) y en caso de error que arranque de la entrada 1 (la segunda del listado). Finalmente volvemos a actualizar el ramdisk
[BASH]# update-initramfs -uY por ultimo reiniciamos el equipo
Comprobación final del RAID#
Ahora el sistema debe ser capaz de arrancar desde cualquiera de los dos discos aunque falle uno de ellos, puedes hacer pruebas desconectando uno de los discos para ver si todo sigue funcionando correctamente. Si no quieres abrir el equipo puedes simular un fallo de discos de la siguiente manera:
[BASH]# mdadm --manage /dev/md0 --fail /dev/sdb1[BASH]# mdadm --manage /dev/md0 --remove /dev/sdb1}}} Reinicias y ahora el equipo deberá arrancar con el RAID en modo degradado.
| | Tweet | Este obra está bajo una licencia Creative Commons Atribución-NoComercial-CompartirIgual 2.5 México. | ![]() |
