1.3. RAID

publicado a la‎(s)‎ 22 may 2012, 15:19 por Hernan Nina Hanco

Muchas aplicaciones necesitan un gran numero de discos para almacenar mayores cantidadades de datos, y así mismo, aprovechar el funcionamiento en paralelo de los discos para mejorar la velocidad de lectura y escritura de datos, o realizar varias operaciones de lectura o escritura independientes simultáneamente, también es posible una mejora de la fiabilidad del almacenamiento de datos puesto que se puede guardar información repetida en varios discos.


Entonces la finalidad de usar varios discos es también lograr un mayor rendimiento y fiabilidad, para lo cual se pueden usar varias técnicas de organización de los discos, que conjuntamente lo denominados disposición redundante de discos independientes (RAID, Redundant Array of Independent Disks). Por el abaratamiento de costos de almacenamiento los sistemas RAID enfatizan mas el trabajo de una buena confiabilidad y mejor rendimiento que los motivos económicos. Así mismo, RAID ofrece mayor facilidad de administración y de operación.


Mejora de la fiabilidad mediante la redundancia.

La probabilidad de que falle un disco de un conjunto de N discos es mucho mayor que un único disco en concreto. Por ejemplo, para 100 discos con tiempo medio entre fallas de 100000 horas, la probabilidad de fallo resulta 100000/100 = 1000 horas o 42 días ¡lo cual no es mucho! si sólo se guarda una copia de los datos. este caso resulta inaceptable.  

La solución al problema de la fiabilidad es la redundancia, con esto el tiempo medio efectivo entre fallos aumenta.

Una forma sencilla de redundancia es duplicar todos los discos, esto se conoce como la creación de imágenes, para este caso, los procesos de escritura se lleva a cabo por duplicado. En este sistemas los datos solo se perderán cuando falle el segundo disco antes de que se recupere el primero.

Un disco con imagen es más fiable que un único disco. Por ejemplo, el tiempo medio entre fallos de un disco con imagen# es determinado por tiempo medio entre fallos de los discos y el tiempo medio de reparación calculando los valores resultara (100000 - Tiempo medio entre fallos de un disco) 1000002 / (2*10) = 500*106 horas o ¡57 000 años!. la probabilidad de fallo es mayor.

Si consideramos, las fallas en el suministro eléctrico, desastres naturales, no se toma en cuenta la independencia de los fallos de un disco porque la la probabilidad de fallo es común. Los problemas de fallo de suministro eléctrico son los de mayor preocupación que otros desastres.

En los discos con imágenes, si se hallan en curso procesos de escritura en el mismo bloque en ambos discos y el suministro eléctrico falla antes de que se haya acabado de escribir en ambos bloques, los dos pueden quedar en un estado inconsistente. La solución a este problema es escribir primero una copia y luego la otra, de modo que una de las copias siempre sea consistente.


Mejora del rendimiento mediante el paralelismo
En discos con imagen la velocidad de las solicitudes de lectura se duplican. Se mejora la velocidad de transferencia, sin embargo, el tiempo de acceso es el mismo que un único disco, pero por cada unidad de tiempo el número de procesos se duplica.

Con varios discos también se puede mejorar la velocidad de transferencia distribuyendo los datos en varios discos por ejemplo se puede dividir los bits de un bytes entre varios discos, a esto se conoce como la distribución en el nivel de bits, por ejemplo si se dispone de 8 discos se puede escribir el bit i en el disco i. la disposición de 8 discos puede tratarse como un solo disco con sectores que tienen 8 veces el tamaño normal, y mas interesante aun, que tiene 8 veces la velocidad de acceso. En una organización así cada disco toma participación en todos los accesos (de lectura o escritura) por lo que el número de accesos que pueden procesarse por segundo es aproximadamente el mismo que en un solo disco, pero cada acceso puede leer 8 veces tantos datos por unidad de tiempo como con un solo disco. La distribución a nivel de bit puede generalizarse a cualquier numero de discos que sea múltiplo o divisor de 8.  

La distribución en el nivel de bloques reparte los bloques entre varios disco. Trata la disposición de discos como un único y gran disco, proporciona números lógicos a los bloques; se asume que los números de bloque comienzan en 0. Con un disposición de n discos, la disposición en el nivel de bloque asigna el bloque lógico i de la disposición del disco al disco (i mod n) + 1; y usa el bloque físico [i/n]-ésimo del disco para almacenar el bloque lógico i. Al leer un archivo grande, la distribución en el nivel de bloque busca n bloques en un instante en paralelo en los n discos dando una gran velocidad de transferencia para grandes lecturas.Cuando se lee un único bloque, la velocidad de transferencia de datos es igual que un disco, pero los restantes n-1 discos están libres de realizar cualquier otra acción.

La distribución en el nivel bloques es la forma de distribución de datos ma utilizada. También son posibles la distribución a nivel de bytes de un sector, o a nivel de sectores de un bloque.

El Objetivos del paralelismo de un sistema de discos es equilibrar la carga de varios accesos de pequeño tamaño (accesos a bloque) de manera que la productividad de ese tipo de accesos aumente. Convertir en paralelos los accesos de gran tamaño para que su tiempo de respuesta se reduzca.


Niveles de RAID

La creación de imágenes resulta costosa y la distribución de datos no es fiable, en tal sentido se han diseñado una serie de alternativas para realizar redundancia a bajo costo utilizando la idea de distribución combinada con los bits de paridad.

Estos esquema tiene diferentes compromisos entre el coste y el rendimiento.

A continuación se muestra los esquemas como Niveles de RAID donde las P indica los bits para la corrección de errores y C indica una segunda copia de datos. También se utilizan 4 discos para datos y cuatro discos restantes para información redundante para la recuperación en caso de fallo.


RAID de Nivel 0

Se refiere a disposiciones de discos con distribución en el nivel de bloque pero sin redundancia (como la creación de imágenes o los bits de paridad).

RAID de Nivel 1
Se refiere a la creación de imágenes del disco con distribución de bloques.
RAID de Nivel 2

También se conoce como organización de códigos de corrección de errores tipo memoria (memory-style error-correcting-code organization, ECC). Los sistemas de memoria hace tiempo que realizan la detección de errores utilizando los bits de paridad. Cada byte del sistema de memoria puede tener asociado un bit de paridad que registra si el número de bits del byte que valen uno es par (paridad = 0) o impar (paridad = 1). Si uno de los bits del byte se deteriora (un uno se transforma en cero o viceversa) la paridad del byte se modifica y, por tanto, no coincidirá con la paridad guardada. De manera parecida, si el bit de paridad guardado se deteriora no coincidirá con la paridad calculada. Por tanto, todos los errores de un bit son detectados por el sistema de memoria. Los esquemas de corrección de errores guardan dos o más bits adicionales y pueden reconstruir los datos si se deteriora un solo bit. La idea de los códigos para la corrección de errores puede utilizarse directamente en los conjuntos de discos mediante la distribución de los bytes entre los discos. Por ejemplo, el primer bit de cada byte puede guardarse en el disco uno, el segundo en el disco dos, etcétera, hasta que se guarde el octavo bit en el disco ocho y los bits para la corrección de errores se guardan en los demás discos. Este esquema se muestra gráficamente en la Figura anterior. Los discos marcados como P guardan los bits para la corrección de errores. Si uno de los discos falla, los bits restantes del byte y los bits para la corrección de errores asociados pueden leerse de los demás discos y utilizarse para reconstruir los datos deteriorados. En la Figura anterior se muestra una disposición de tamaño cuatro; obsérvese

que RAID de nivel 2 sólo necesita la sobrecarga de tres discos para cuatro discos de datos, a diferencia de RAID de nivel 1, que necesitaba la sobrecarga de cuatro discos.
RAID de Nivel 3

También conocido como organización de paridad con bits entrelazados, mejora respecto al nivel 2 destacando que, a diferencia de los sistemas de memoria, los controladores de disco pueden detectar si un sector se ha leído correctamente, por lo que se puede utilizar un solo bit de paridad para la corrección y la detección de los errores. La idea es la siguiente. Si uno de los sectores se deteriora, se sabe exactamente el sector que es y para cada bit del mismo se puede determinar si es un uno o un cero calculando la paridad de los bits correspondientes a partir de los sectores de los demás discos.

Si la paridad de los bits restantes es igual que la paridad guardada, el bit ausente es un cero; en caso contrario, es un uno.

RAID de nivel 3 es tan bueno como el nivel 2, pero resulta menos costoso en cuanto al número de discos adicionales (sólo tiene la sobrecarga de un disco), por lo que el nivel 2 no se utiliza en la práctica. Este esquema se muestra gráficamente en la Figura.

RAID de nivel 3 tiene dos ventajas respecto al nivel 1. Sólo se necesita un disco de paridad para varios discos normales, en comparación con un disco imagen por cada disco en el nivel 1, por lo que se reduce la sobrecarga de almacenamiento. Dado que los procesos de lectura y de escritura de un byte se extienden en varios discos, con la distribución de datos en N vías, la velocidad de transferencia es N veces tan rápida como con un solo disco. Por otro lado, RAID de nivel 3 permite un menor número de operaciones de E/S por segundo, dado que todos los discos tienen que participar en cada solicitud de E/S.

RAID de nivel 4

También conocido como organización de paridad con bloques entrelazados, usa distribución de bloques, y además guarda un bloque de paridad en un disco aparte para los bloques correspondientes de los otros N discos. Este esquema se muestra gráficamente en la Figura. Si uno de los discos falla puede utilizarse el bloque de paridad con los bloques correspondientes de los demás discos para restaurar los bloques del disco averiado.

La lectura de un bloque sólo accede a un disco, lo que permite que los demás discos procesen otras solicitudes. Por tanto, la velocidad de transferencia de datos de cada acceso es menor, pero se pueden ejecutar en paralelo varios accesos de lectura, lo que produce una mayor velocidad global de E/S. Las velocidades de transferencia para los procesos de lectura de gran tamaño son elevadas, dado que se pueden leer todos los discos en paralelo; los procesos de escritura de gran tamaño también tienen velocidades de transferencia elevadas, dado que los datos y la paridad pueden escribirse en paralelo.

Los procesos de escritura independientes de pequeño tamaño, por otro lado, no pueden realizarse en paralelo. La escritura de un bloque tiene que tener acceso al disco en el que se guarda ese bloque, así como al disco de paridad, dado que hay que actualizar el bloque de paridad. Además, hay que leer tanto el valor anterior del bloque de paridad como el del bloque que se escribe para calcular la nueva paridad. Por tanto, un solo proceso de escritura necesita cuatro accesos a disco: dos para leer los dos bloques antiguos y otros dos para escribir los dos nuevos.

RAID de nivel 5

También conocido como paridad distribuida con bloques entrelazados, mejora respecto al nivel 4 dividiendo los datos y la paridad entre los N + 1 discos en vez de guardar los datos en N discos y la paridad en uno. En el nivel 5 todos los discos pueden participar en la atención a las solicitudes de lectura, a diferencia de RAID de nivel 4, en que el disco de paridad no puede participar, por lo que el nivel 5 aumenta el número total de solicitudes que pueden atenderse en una cantidad de tiempo dada. Para cada conjunto de N bloques lógicos, uno de los discos guarda la paridad y los otros N guardan los bloques.

Esta configuración se muestra gráficamente en la Figura, en la que las P están distribuidas entre todos los discos. Por ejemplo, con una disposición de cinco discos el bloque de paridad, marcado como Pk para los bloques lógicos 4k, 4k+1, 4k+2, 4k+3 se guardan en el disco (k mod 5) + 1; los bloques correspondientes de los otros cuatro discos guardan los cuatro bloques de datos 4k a 4k+3

La siguiente tabla muestra cómo se disponen los primeros veinte bloques, numerados de 0 a 19, y sus bloques de paridad. El patrón mostrado se repite para los siguientes bloques.

Obsérvese que un bloque de paridad no puede guardar la paridad de los bloques del mismo disco, dado que entonces un fallo del disco supondría la pérdida de datos además de la paridad y, por tanto, no sería recuperable. El nivel 5 incluye al nivel 4, dado que ofrece mejor rendimiento de lectura y de escritura por el mismo coste, por lo que el nivel 4 no se utiliza en la práctica.


RAID de nivel 6

También denominado esquema de redundancia P+Q, es muy parecido a RAID de nivel 5 pero guarda información redundante adicional para protección contra fallos de disco múltiples. En lugar de utilizar la paridad se utilizan códigos para la corrección de errores como los de Reed-Solomon. En el esquema mostrado en la Figura de RAID se guardan dos bits de datos redundantes por cada cuatro bits de datos (en comparación con un bit de paridad del nivel 5) y el sistema puede tolerar dos fallos del disco.

Elección del nivel RAID adecuado
Los factores a tener en cuenta al elegir un nivel RAID son:
  • Costo económico extra de los requisitos de almacenamiento en disco.
  • Requisitos de rendimiento en términos del número de operaciones E/S.
  • Rendimiento cuando falla un disco.
  • Rendimiento durante la reconstrucción (esto es, mientras los datos del disco averiado se reconstruyen en un nuevo disco).

Si un disco falla, el tiempo que se tarda en reconstruir los datos que contenía puede ser significativo, y variará con el nivel RAID utilizado. La reconstrucción resulta más sencilla para RAID de nivel 1, dado que los datos pueden copiarse de otro disco; para los otros niveles hay que tener acceso a todos los demás discos de la disposición para reconstruir los datos del disco averiado. El rendimiento en la reconstrucción de un sistema RAID puede ser un factor importante si se necesita un aporte continuo de datos, como ocurre en los sistemas de bases de datos de alto rendimiento. Además, dado que el tiempo de reconstrucción puede formar parte del tiempo de reparación, el rendimiento de la reconstrucción influye en el tiempo medio entre fallos.

RAID de nivel 0 se usa en aplicaciones de alto rendimiento donde la seguridad de los datos no es crítica. Dado que los niveles 2 y 4 de RAID se incluyen en los niveles 3 y 5 de RAID, la elección de los niveles RAID se limita a los niveles restantes. La distribución de bits (nivel 3) se usa raramente, dado que la distribución de bloques (nivel 5) da buenas velocidades de transferencia de datos para grandes transferencias. Para pequeñas transferencias, el tiempo de acceso a disco es el factor dominante, así que el beneficio de las lecturas paralelas disminuye. De hecho, el nivel 3 puede funcionar peor que el nivel 5 para una pequeña transferencia, ya que la transferencia sólo se completa cuando los sectores correspondientes en todos los discos se hayan encontrado; la latencia media de la disposición de discos se comporta de forma muy parecida a la latencia en el caso peor para un único disco, descartando los beneficios de las mayores velocidades de transferencia. El nivel 6 no se soporta actualmente en muchas implementaciones RAID, pero ofrece una mejor fiabilidad que el nivel 5 y se puede usar en aplicaciones donde la seguridad de datos es muy importante. La elección entre RAID de nivel 1 y de nivel 5 es más difícil de tomar. RAID de nivel 1 es popular para las aplicaciones como el almacenamiento de archivos de registro histórico en un sistema de bases de datos, ya que ofrece el mejor rendimiento en escritura. RAID de nivel 5 tiene una menor sobrecarga de almacenamiento que el nivel 1, pero tiene una mayor sobrecarga en las escrituras. Para las aplicaciones donde los datos se

leen frecuentemente y se escriben raramente, el nivel 5 es la elección adecuada.

Las capacidades de almacenamiento en disco han estado aumentando a una velocidad sobre el 50 por ciento al año durante muchos años, y el costo por byte ha estado decreciendo a la misma velocidad. Como resultado, para muchas aplicaciones existentes de bases de datos con requisitos moderados de almacenamiento, el costo económico del almacenamiento extra en disco necesario para la creación de imágenes ha sido relativamente pequeño (sin embargo, el costo económico extra, sigue siendo un aspecto significativo para las aplicaciones de almacenamiento intensivo como el almacenamiento de datos de vídeo). Las velocidades de acceso se han mejorado a una velocidad mucho menor (cerca de un factor 3 durante 10 años), mientras que el número de operaciones E/S requeridas por segundo se han incrementado enormemente, particularmente en los servidores de aplicaciones Web.

El nivel 5 de RAID, que incrementa el número de operaciones E/S necesarias para escribir un único bloque lógico, sufre una penalización de tiempo significativa en términos del rendimiento en escritura. El nivel 1 de RAID es, por tanto, la elección adecuada para muchas aplicaciones con requisitos moderados de almacenamiento y altos requisitos de E/S.

Los diseñadores de sistemas RAID tienen también que hacer otras decisiones. Por ejemplo, la cantidad de discos que habrá en la disposición y los bits que debe proteger cada bit de paridad. Si hay más discos en la disposición, las velocidades de transferencia de datos son mayores pero el sistema sería más caro. Si hay más bits protegidos por cada bit de paridad, la sobrecarga de espacio debida a los bits de paridad es menor, pero hay más posibilidades de que falle un segundo disco antes de que el primer disco en averiarse esté reparado y que

eso dé lugar a la pérdida de datos.

Aspectos hardware

Otro aspecto en la elección de implementaciones RAID se encuentra en el nivel hardware. RAID se puede implementar sin cambios en el nivel hardware modificando sólo el software. Tales implementaciones se conocen como RAID software. Sin embargo, hay beneficios significativos al construir hardware de propósito especial para dar soporte a RAID, que se describen a continuación; los sistemas con soporte hardware especial se denominan sistemas RAID hardware.

Las implementaciones RAID hardware pueden usar RAM no volátil para registrar las escrituras que es necesario ejecutar; en caso de fallo de corriente antes de que se complete una escritura, el sistema se restaura recuperando información acerca de las escrituras incompletas de la memoria RAM no volátil y entonces completa las escrituras. Sin el soporte hardware, se necesita trabajo extra para detectar los bloques que se hayan escrito parcialmente antes del fallo de corriente.

Algunas implementaciones RAID permiten el intercambio en caliente; esto es, los discos averiados se pueden eliminar y reemplazar por otros nuevos sin desconectar la corriente. El intercambio en caliente reduce el tiempo medio de reparación, ya que el cambio de un disco no debe esperar hasta que se pueda apagar el sistema. De hecho, muchos sistemas críticos actuales se ejecutan con una planificación 24 × 7; esto es, se ejecutan 24 horas al día y 7 días a la semana, sin proporcionar ningún momento para apagar el sistema y cambiar el disco averiado. Como resultado, el tiempo medio de reparación se reduce en gran medida, minimizando la posibilidad de pérdida de datos. El disco averiado se puede reemplazar en los ratos libres.

La fuente de alimentación, o el controlador de disco, o incluso la interconexión del sistema en un sistema RAID podría llegar a ser un punto de fallo que detendría el funcionamiento del sistema RAID. Para evitar esta posibilidad, las buenas implementaciones RAID tienen varias fuentes de alimentación (con baterías de respaldo que les permiten continuar funcionando aunque se corte la corriente). Tales sistemas RAID tienen varios controladores de disco y varias interconexiones para conectarlos con el sistema informático (o a la red de los sistemas informáticos). Así, el fallo de cualquier componente no detendrá el funcionamiento del sistema RAID.


Otras aplicaciones de RAID

Los conceptos de RAID se han generalizado a otros dispositivos de almacenamiento, incluyendo los conjuntos de cintas, e incluso a la transmisión de datos por sistemas de radio. Cuando se aplican a los conjuntos de cintas, las estructuras RAID pueden recuperar datos aunque se deteriore una de las cintas de la disposición. Cuando se aplican a la transmisión de datos, cada bloque de datos se divide en unidades menores y se transmite junto con una unidad de paridad; si por algún motivo no se recibe alguna de las unidades, se puede reconstruir a partir del resto.

Comments