Sistemas RAID¶
RAID (Redundant Array of Independent Disk), antes Redundant Array of Inexpensive Disk.
Niveles RAID¶
Los sistemas de discos tolerantes a fallos están normalizados y se clasifican en seis niveles diferentes, desde el 0 al 5. Cada uno de los niveles se diferencia de los demás por el rendimiento, la seguridad y el coste. Los tres niveles RAID más utilizados en la práctica son los niveles 0, 1 y 5.
Nivel 0 de RAID: conjunto de bandas¶
Ofrecen el mejor rendimiento de todas las opciones posibles. Por contra, no admiten tolerancia a fallos, es decir, si se daña una de las particiones, se perderán los datos de todo el conjunto.
Nivel 1 de RAID: conjunto de espejos¶
Un conjunto de espejos se crea duplicando una partición mediante la utilización del espacio libre de otro disco. Si el disco primario falla, el sistema empezará a funcionar con el secundario.
Éste es un sistema redundante (pues los datos están duplicados). Su principal ventaja es la fiabilidad que aporta ante posibles errores de disco.
Se duplica el coste de discos (es necesario uno de comprobación extra por cada disco de datos de usuario). El rendimiento en lectura es mejor que el de un solo disco, pero en escritura es peor..
Nivel 5 de RAID: conjunto de bandas con paridad¶
Se diferencia de los conjuntos de bandas (Nivel 0 de RAID) en que en este caso la redundancia de datos se proporciona mediante información de paridad. Entrelaza datos de comprobación con los datos de usuario a lo largo de toda la matriz de discos. Cuando uno de los discos falla, sus datos se regeneran a partir de la información de paridad y los datos de los otros discos.
Se adapta bien a las aplicaciones que principalmente hacen solicitudes de lectura (bases de datos, servidores de ficheros, procesamiento de transacciones). No es recomendable cuando las aplicaciones realizan muchas solicitudes de escritura.
Redundancia de datos y Reparto en bandas¶
Redundancia de datos¶
Se consigue mediante el uso de datos de comprobación que el controlador RAID graba a la vez que los primeros.
Reparto en bandas (striping)¶
Los datos de usuario se reparten entre varios discos en forma de bandas, lo que permite mejorar el rendimiento de E/S al balancear la carga entre todos los discos de la matriz.
Redundancia¶
Espejos¶
Los datos de un disco se copian en un segundo disco, así que si uno de los discos falla se puede acceder a los datos a través de otro.
Redundancia por paridad¶
Reduce el coste de protección (necesita menos discos extra), pero protege contra menos tipos de fallos. En vez de hacer una copia completa de cada bloque de datos, se calcula un bloque de comprobación en función de los contenidos de un grupo de datos de usuario; esta función permite regenerar los contenidos de cualquier bloque de datos del grupo a partir del contenido del resto de los bloques.
Las matrices se suelen hacer con un número de discos entre 4 y 6.
El cálculo de la paridad se realiza mediante una operación XOR bit a bit.
Reparto de bandas (Data Striping)¶
El subsistema RAID presenta cada matriz como un disco virtual para las aplicaciones. Cada bloque de disco virtual debe estar representado al menos una vez en un disco físico de la matriz:
- en un espejo, cada bloque virtual está representado en cada uno de los discos que forman el espejo,
- en un RAID de paridad, cada bloque de paridad está representado en uno de los discos de la matriz, y contribuye al cálculo de la paridad.
Concatenaciones y Bandas (Stripes)¶
El software de control del RAID es capaz de determinar el disco físico y el bloque físico que se corresponde con un bloque cualquiera del disco virtual (mapeo).
Para aumentar el rendimiento de la E/S, se reparten los bloques virtuales a lo largo de bloques físicos de varios discos (striped array), o se concatenan bloques virtuales (concatenated array).
El número de bloques virtuales consecutivos mapeados en un mismo disco se llama profundidad de banda. El resultado de multiplicar la profundidad de la banda por el número de discos de la matriz (anchura del stripe) es lo que se llama tamaño del stripe.
Aplicación de las bandas¶
La banda de datos basada en software puede ser muy útil para conjuntar la capacidad y el rendimiento de los discos virtuales instanciados por espejos o RAID con paridad de un controlador hardware.
Reparto en bandas con redundancia por paridad (Stripe + Parity)¶
El striping aumenta el rendimiento de la E/S, pero incrementa también el impacto causado por un fallo en un disco. Para solucionarlo se puede combinar el reparto de datos entre varios discos con el sistema de cálculo de paridad (Niveles RAID 3 y 4).
RAID Nivel 5¶
Con la paridad entrelazada se reduce el cuello de botella que provoca el disco de paridad. Ya que de esta forma se entrelaza la paridad con los discos del stripe, sin tener un disco exclusivo para la paridad.
Con la paridad entrelazada los bloques de paridad de la primera banda se almacenan en el último disco, los de la segunda en el penúltimo, etc.
Esta combinación de bandas y paridad se conoce como RAID 5. Se puede implementar RAID 5 a partir de tres discos.
Reparto en bandas con espejos (Stripe + Mirror)¶
RAID 0+1¶
Se tienen dos conjuntos de bandas y el software de control construye un disco virtual, que consiste en la creación de un espejo con las dos bandas, de forma que las escrituras se realizan de forma simultánea en ambas bandas, y para leer se puede hacer de cualquiera de ellas.
Ventajas¶
- Rendimiento de E/S alto.
- La penalización por la doble escritura es menor que en el caso del RAID con paridad, sobretodo si las dos bandas cuelgan de buses o controladores diferentes.
- La seguridad de los datos aumenta.
- Es la combinación ideal para sistemas RAID basados en software.
Inconvenientes¶
- El coste.
RAID 1+0¶
Consiste en crear bandas con pares de discos espejados. El rendimiento es como el 0+1, pero es más seguro.