Un RAID (Redundant array of independent disks) de discos, traduciendo literalmente, es un array de discos redundantes e independientes. Redundantes porque van a guardar información redundante para asegurar la tolerancia a fallos y mejorar la disponibilidad. E independientes, porque no existe dependencia entre ellos, lo que nos permite sustituir cualquier disco del RAID por uno nuevo, y funcionará perfectamente con los discos que ya teníamos.

Este tipo de agrupaciones de discos, tiene como objetivo mejorar las prestaciones que podríamos alcanzar con un único disco. Dependiendo del tipo de combinación podremos mejorar la seguridad, la capacidad de almacenamiento o la disponibilidad de los datos. Y el controlador RAID se ocupará de que, para el servidor, esta combinación de discos aparezca como uno sólo, bajo la misma letra de unidad.

Niveles de RAID

Las distintas combinaciones de discos se les llama niveles de RAID, y están basados en dos mecanismos:

  • Stripping: consiste en el fragmentado de los ficheros, almacenando las distintas partes en distintos discos. Con esta practica mejoramos el rendimiento, ya que cuando queramos recuperar un fichero accederemos a la vez a los distintos discos donde hallamos guardado los fragmentos del fichero, mejorando sensiblemente la velocidad de acceso.
  • Mirroring: Con esta técnica guardamos cada fragmento de datos en varios discos, de manera redundante. A cambio obtenemos mejoras en la seguridad de los datos, y ante una perdida o corrupción eventual de los mismos, podremos fácilmente restaurarlos ya que tendremos copias en otros discos.

Podemos identificar 7 niveles RAID (0-6), siendo los más habituales el RAID 0, RAID 1 y RAID 5.

RAID 0

Conocido también como volumen de distribución. En este nivel, sencillamente vamos a fragmentar los datos, y enviaremos cada fragmento a un disco.

Obtenemos mayor velocidad de acceso a los datos, tanto de escritura como lectura, debido a que emplearemos acceso en paralelo a los discos en los que tengamos fragmentos. El inconveniente es que no tenemos redundancia, por lo que si un disco duro básico fallará, no tenemos manera de recuperar los datos, y perderíamos toda la información de la distribución.

Esquema del nivel RAID 0

RAID 1

Conocido también como volumen de espejo. En esta ocasión, guardamos los fragmentos de nuestros ficheros en dos discos, siendo uno una copia idéntica del otro.

Este sistema resulta muy seguro ya que tenemos una copia de seguridad en tiempo real. Si un disco falla, podemos remplazarlo fácilmente ya que en el otro tendremos toda la información.

El inconveniente es que se ralentiza considerablemente el sistema. La velocidad de acceso será la misma que la de un disco duro básico, ya que aunque usemos acceso paralelo, tenemos que escribir todos los datos duplicados en los dos discos.

Esquema del nivel RAID 1

RAID 2

En este nivel, hacemos stripping a nivel de bit y generamos también bits de paridad empleando el código de Hamming.

Cada bit se va guardando de forma secuencial en un disco. Y la paridad se guarda en un disco dedicado. La información de paridad nos permitiría recuperar los datos de un disco en caso de que este fallara.

Este nivel de RAID es teórico y no se utiliza en la práctica.

Esquema de nivel RAID 2

RAID 3

Similar a RAID 2, solo que hacemos la fragmentación a nivel de byte.

Como ahora tenemos que calcular la paridad a nivel de byte, los discos tienen que estar perfectamente sincronizados y se accederá a ellos de manera simultanea.

La implementación de este nivel de RAID es poco habitual.

Esquema de nivel RAID 3

RAID 4

En este caso hacemos stripping a nivel de bloque, pero además vamos a calcular la paridad de los distintos grupos de fragmentos y almacenarla en un disco dedicado. Es decir, es similar a RAID 3 pero funcionamos a nivel de bloque.

Cualquier fragmento puede ser generado a partir de los bits de paridad y los fragmentos restantes del grupo. Cada fragmento de cada grupo es grabado en un disco y los bits de paridad en otro, de tal forma que si fallara un disco, los datos de este podrían recuperarse a partir del resto de discos del RAID 4.

Esquema de nivel RAID 4

Como trabaja a nivel de bloques, esto hace que los discos puedan funcionar de manera independiente, permitiendo accesos simultáneos a fragmentos en distintos discos. Por ejemplo, en la imagen anterior, podríamos acceder a los fragmentos A1, A2 y A3, de manera simultanea, siempre que la controladora RAID lo permitiera.

El factor limitante de este nivel es el disco de paridad dedicado, que hace que siempre que queramos guardar algún dato, tengamos que escribir en él, convirtiéndose en el cuello de botella.

El RAID 4 es llamado también IDA (acceso independiente con discos dedicados a la paridad).

RAID 5

El nivel RAID 5 es similar al 4, la diferencia es que no guarda los bloques de paridad en un disco dedicado, sino que los distribuye entre los distintos discos. Por ello, el RAID 5 es conocido también como nivel distribuido con paridad.

Al guardar los bloques de paridad en distintos discos, eliminamos el cuello de botella que suponía el disco dedicado a paridad en el RAID 4.

Igual que el RAID 4, permite el acceso simultaneo a fragmentos de datos ubicados en distintos discos, con lo que mejora la eficiencia. Y también permite recuperar los datos perdidos en caso de fallo de un disco, a partir de la información de paridad y el resto de fragmentos del bloque.

Es uno de los niveles RAID de uso más habitual.

Esquema de nivel RAID 5

RAID 6

Un RAID 6 es muy similar al RAID 5, con la salvedad de que calcula dos bloques de paridad por cada grupo de fragmentos. Y estos dos bloques de paridad los guarda en discos diferentes.

Con ello conseguimos mayor seguridad que con RAID 5, ya que al tener dos bloques de paridad, podemos recuperarnos del fallo simultaneo de dos discos. Sin embargo, penalizamos el rendimiento y reducimos la capacidad de almacenamiento.

Esquema de nivel RAID 6

Combinación de niveles

En no pocas ocasiones, en lugar de trabajar con un nivel de RAID, emplearemos una combinación de ellos. De esta forma mejoraremos las características del conjunto.

Algunas de las combinaciones más habituales son las vistas a continuación.

RAID 0+1

Dos combinaciones RAID 0 (fragmentación) controladas por un RAID 1 (mirroring). Tendremos un controlador RAID 1 que envía los mismos datos a cada RAID 0, guardando la información por duplicado. Cada RAID 0 fragmenta los datos y los distribuye entre los distintos discos físicos.

Esquema de combinación de niveles RAID 0+1

Con esta combinación tenemos la ventaja del RAID 0 que mejora los tiempos de acceso y la ventaja de la tolerancia a fallos que proporciona la redundancia del RAID 1. Obviamente, estamos empleando el doble de discos que emplearíamos con un RAID 0.

RAID 1+0

Muy similar al anterior, sólo que ahora será un controlador RAID 0 quien controle a dos controladores RAID 1. Es decir, primero fragmentamos los datos y luego los duplicamos.

Esquema de combinación de niveles RAID 1+0

La ventaja de esta combinación es que soporta fallos simultáneos en más de un disco, siempre que esté cada uno en distinta combinación RAID 1.

RAID 5+0

En ocasiones llamada RAID 50. Primero un controlador RAID 0 fragmenta los datos y luego los controladores RAID 5, los distribuyen en los distintos discos de los volúmenes, generando el bloque de paridad.

Esquema de combinación de niveles RAID 5+0

Otras combinaciones RAID

Existen más combinaciones RAID, aunque las anteriores son probablemente las más habituales. También podemos encontrar: RAID 0+3, RAID 3+0, RAID 0+5, RAID 1+5 o RAID 5+1.

 

NOTA:

Este post es parte de la colección “Arquitectura de Datos” que reproduce los apuntes de la clase que imparto sobre el tema en ESIC. Puedes ver el índice de esta colección aquí.