SISTEMAS RAID
Un grupo/matriz redundante de discos independientes (también, RAID, del
inglés redundant array of independent disks) hace referencia a un sistema de
almacenamiento de datos que utiliza múltiples unidades (discos duros o SSD),
entre las cuales 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, tolerancia frente a fallos, tasa de transferencia y capacidad. En sus
implementaciones originales, su ventaja clave era la habilidad de combinar varios
dispositivos de bajo coste y tecnología más vieja 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.
En el nivel más simple, un RAID combina varios discos duros en una sola unidad
lógica. Así, en lugar de ver varios discos duros diferentes, el sistema operativo ve
uno solo. Los RAID suelen usarse en servidores y normalmente (aunque no es
necesario) se implementan con unidades de disco de la misma capacidad. Debido
al descenso en el precio de los discos duros y la mayor disponibilidad de las
opciones RAID incluidas en los chipsets de las placas base, los RAID se encuentran
también como opción en las computadoras personales más avanzadas. Esto es
especialmente frecuente en las computadoras dedicadas a tareas intensivas y que
requiera asegurar la integridad de los datos en caso de fallo del sistema. Esta
característica está disponible en los sistemas RAID por hardware (dependiendo de
que estructura elijamos). Por el contrario, los sistemas basados en software son
mucho más flexibles y los basados en hardware añaden un punto de fallo más al
sistema (la controladora RAID).
Todas las implementaciones pueden soportar el uso de uno o más discos de
reserva (hot spare), unidades preinstaladas que pueden usarse inmediatamente (y
casi siempre automáticamente) tras el fallo de un disco del RAID. Esto reduce el
tiempo del período de reparación al acortar el tiempo de reconstrucción del RAID.
RAID 0 (Data Striping, Striped Volume)
Un RAID 0 (también llamado conjunto dividido, volumen dividido, volumen
seccionado) distribuye los datos equitativamente entre dos o más discos
(usualmente se ocupa el mismo espacio en 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
habitualmente para proporcionar un alto rendimiento de escritura ya que los datos
se escribe en dos o más discos de forma paralela, aunque un mismo fichero solo
está presente una vez en el conjunto. RAID 0 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 450 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 100
GB). 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). No debe confundirse RAID 0 con un Volumen Distribuido (Spanned
Volume) en el cual se agregan múltiples espacios no usados de varios discos para
formar un único disco virtual. Es posible que en un Volumen Distribuido el fichero a
recuperar esté presente en un solo disco del conjunto, debido a que aquí no hay
una distribución equitativa de los datos (como se mencionó, para RAID 0); por lo
tanto, en ese caso no sería posible la recuperación paralela de datos y no
mejoraría el rendimiento de lectura.
RAID 1 (espejo)
Un RAID 1 crea una copia exacta (o espejo) de un conjunto de datos en dos o más
discos. Esto resulta útil cuando queremos tener más seguridad desaprovechando
capacidad, ya que si perdemos un disco, tenemos el otro con la misma
información. 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).
Además, 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 de 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 de
escritura 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 5
Un RAID 5 (también llamado distribuido con paridad) es una división de datos a
nivel de bloques que distribuye 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 sería 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.