En informática, el acrónimo RAID (del inglés Redundant Array
of Independent Disks, originalmente Redundant Array Inexpensive Disks),
traducido como «conjunto redundante de discos independientes», hace referencia
a un sistema de almacenamiento de datos que usa múltiples unidades de
almacenamiento de datos (discos duros o SSD) entre los que se distribuyen o
replican 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) y 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.
RAID 0 (Data Striping)[editar]
Diagrama de una configuración RAID 0.
Un RAID 0 (también llamado conjunto dividido, volumen
dividido, volumen seccionado) 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 por el
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á sólo de 200 GB, ya que
cada disco aporta 100GB). Una buena implementación de un RAID 0 dividirá las
operaciones de lectura y escritura en bloques de igual tamaño, por lo que distribuirá
la información equitativamente entre los dos discos. También es posible crear
un RAID 0 con más de dos discos, 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 (pues para que el
conjunto falle es suficiente con que lo haga cualquiera de sus discos).
RAID 1 (Mirroring)[editar]
Diagrama de una configuración 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.
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 archivos, en la que se reserva algún espacio
para los cambios, presentando una vista estática en un punto temporal dado del
sistema de archivos. Alternativamente, un conjunto de discos puede ser
almacenado de forma parecida a como se hace con las tradicionales cintas.
RAID 2[editar]
Diagrama de una configuración RAID 2. Cada número representa
un byte de datos; cada columna, un disco.
Un RAID 2 usa división a nivel de bits con un disco de
paridad dedicado y usa un código de Hamming para la corrección de errores. El
RAID 2 se usa rara vez en la práctica. Uno de sus efectos secundarios es que
normalmente no puede atender varias peticiones simultáneas, debido a que por
definición cualquier simple bloque de datos se dividirá por todos los miembros
del conjunto, residiendo la misma dirección dentro de cada uno de ellos. Así,
cualquier operación de lectura o escritura exige activar todos los discos del
conjunto, suele ser un poco lento porque se producen cuellos de botella. Son
discos paralelos pero no son independientes (no se puede leer y escribir al
mismo tiempo).
RAID 3[editar]
Diagrama de una configuración RAID 3. Cada número representa
un byte de datos; cada columna, un disco.
Un RAID 3 divide los datos a nivel de bytes en lugar de a
nivel de bloques . Los discos son sincronizados por la controladora para
funcionar al unísono. Éste es el único nivel RAID original que actualmente no
se usa. Permite tasas de transferencias extremadamente altas.
Teóricamente, un RAID 3 necesitaría 39 discos en un sistema
informático moderno: 32 se usarían para almacenar los bits individuales que
forman cada palabra y 7 se usarían para la corrección de errores.
En el ejemplo del gráfico, una petición del bloque «A»
formado por los bytes A1 a A6 requeriría que los tres discos de datos buscaran
el comienzo (A1) y devolvieran su contenido. Una petición simultánea del bloque
«B» tendría que esperar a que la anterior concluyese.
RAID 4[editar]
Diagrama de una configuración RAID 4. Cada número representa
un bloque de datos; cada columna, un disco.
Un RAID 4, también conocido como IDA (acceso independiente
con discos dedicados a la paridad) usa división a nivel de bloques con un disco
de paridad dedicado. Necesita un mínimo de 3 discos físicos. El RAID 4 es
parecido al RAID 3 excepto porque divide a nivel de bloques en lugar de a nivel
de bytes. Esto permite que cada miembro del conjunto funcione
independientemente cuando se solicita un único bloque. Si la controladora de
disco lo permite, un conjunto RAID 4 puede servir varias peticiones de lectura
simultáneamente. En principio también sería posible servir varias peticiones de
escritura simultáneamente, pero al estar toda la información de paridad en un
solo disco, éste se convertiría en el cuello de botella del conjunto.
En el gráfico de ejemplo anterior, una petición del bloque
«A1» sería servida por el disco 0. Una petición simultánea del bloque «B1»
tendría que esperar, pero una petición de «B2» podría atenderse
concurrentemente.
RAID 5[editar]
Diagrama de una configuración RAID 5.
Un RAID 5 (también llamado distribuido con paridad) es una
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. RAID 5 necesitará un mínimo
de 3 discos para ser implementado.
En el gráfico de ejemplo anterior, una petición de lectura
del bloque «A1» sería servida por el disco 0. Una petición de lectura
simultánea del bloque «B1» tendría que esperar, pero una petición de lectura de
«B2» podría atenderse concurrentemente ya que seria servida por el disco 1.
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 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.
Algunos vendedores RAID evitan montar discos de los mismos
lotes en un grupo de redundancia para minimizar la probabilidad de fallos
simultáneos al principio y el final de su vida útil.
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.
RAID 6[editar]
Diagrama de una configuración RAID 6. Cada número representa
un bloque de datos; cada columna, un disco; p y q, códigos Reed-Solomon.
Un RAID 6 amplía el nivel RAID 5 añadiendo otro bloque de
paridad, por lo que divide los datos a nivel de bloques y distribuye los dos
bloques de paridad entre todos los miembros del conjunto. El RAID 6 no era uno
de los niveles RAID originales.
El RAID 6 puede ser considerado un caso especial de código
Reed-Solomon.1 El RAID 6, siendo un caso degenerado, exige sólo sumas en el
Campo de galois. Dado que se está operando sobre bits, lo que se usa es un
campo binario de Galois (GF\left(2^m\right)). En las representaciones cíclicas
de los campos binarios de Galois, la suma se calcula con un simple XOR.
Tras comprender el RAID 6 como caso especial de un código
Reed-Solomon, se puede ver que es posible ampliar este enfoque para generar
redundancia simplemente produciendo otro código, típicamente un polinomio en
GF\left(2^8\right) (m = 8 significa que estamos operando sobre bytes). Al
añadir códigos adicionales es posible alcanzar cualquier número de discos
redundantes, y recuperarse de un fallo de ese mismo número de discos en
cualquier punto del conjunto, pero en el nivel RAID 6 se usan dos únicos
códigos.
Al igual que en el RAID 5, en el RAID 6 la paridad se
distribuye en divisiones (stripes), con los bloques de paridad en un lugar
diferente en cada división.
El RAID 6 es ineficiente cuando se usa un pequeño número de
discos, pero a medida que el conjunto crece y se dispone de más discos la
pérdida en capacidad de almacenamiento se hace menos importante, creciendo al
mismo tiempo la probabilidad de que dos discos fallen simultáneamente. El RAID
6 proporciona protección contra fallos dobles de discos y contra fallos cuando
se está reconstruyendo un disco. En caso de que sólo tengamos un conjunto puede
ser más adecuado que usar un RAID 5 con un disco de reserva (hot spare).
La capacidad de datos de un conjunto RAID 6 es n-2, siendo n
el número total de discos del conjunto.
Un RAID 6 no penaliza el rendimiento de las operaciones de
lectura, pero sí el de las de escritura debido al proceso que exigen los
cálculos adicionales de paridad. Esta penalización puede minimizarse agrupando
las escrituras en el menor número posible de divisiones (stripes), lo que puede
lograrse mediante el uso de un sistema de archivos WAFL.
