RAID

Un RAID (Redundant array of independent disks) o Sistema RAID, es un conjunto 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 conjunto 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 del sistema se ocupará de que, para el servidor, esta combinación de discos aparezca como uno sólo, bajo la misma letra de unidad.

Ejemplo de RAID de discos duros
Ejemplo de RAID de discos duros

Niveles de RAID

Las distintas combinaciones de discos se les llama niveles de RAID, y existen ciertos mecanismos que debemos conocer para trabajar con los sistemas RAID:

  • Stripping: consiste en el fragmentado de los ficheros, almacenando las distintas partes en distintos discos. Con esta práctica 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.
  • Paridad: Empleando esta técnica se generan algunos datos extra que nos van a permitir recuperar los fragmentos de datos en caso de pérdida o corrupción de alguno de ellos. El sistema tiene redundancia, aporta seguridad, empleando menos datos que la técnica de Mirroring

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

Nivel 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.

Combinación de nivel 0
Combinación de nivel 0

Nivel 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.

Combinación de nivel 1
Combinación de nivel 1

Nivel 2

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

Empleando el mecanismo de paridad, se alcanza un compromiso entre seguridad y velocidad. La cantidad de datos originados por el mecanismo de paridad es inferior a la empleada en la técnica de Mirroring que sencillamente duplica todos los datos, por lo que resulta más rápido que el nivel 1. Por otra parte, al tener redundancia, también resulta más Seguro que el nivel 0. El inconveniente de esta técnica es el esfuerzo de computación requerido en la generación de los bits de paridad.

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 es teórico y no se utiliza en la práctica.

Combinación de nivel 2
Combinación de nivel 2

Nivel 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 es poco habitual.

Combinación de nivel 3
Combinación de nivel 3

Nivel 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.

Combinación de nivel 4
Combinación de nivel 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 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.

Este nivel es conocido también como IDA (acceso independiente con discos dedicados a la paridad).

Nivel 5

Este nivel 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 nivel 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 de uso más habitual.

Combinación de nivel 5
Combinación de nivel 5

Nivel 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 el nivel 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.

Combinación de nivel 6
Combinación de nivel 6

Combinación de niveles RAID

En no pocas ocasiones, en lugar de trabajar con un nivel en contreto, 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.

Nivel 0+1

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

Combinación de niveles 0+1
Combinación de niveles 0+1

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

Nivel 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.

Combinación de niveles 1+0
Combinación de niveles 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.

Nivel 5+0

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

Combinación de niveles 5+0
Combinación de niveles 5+0

Otras combinaciones RAID

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

NOTA:

Este post es parte de la colección “Sistemas de acceso y almacenamiento de datos”. Puedes ver el índice de esta colección aquí.