En el almacenamiento informático , los niveles RAID estándar comprenden un conjunto básico de configuraciones RAID ("matriz redundante de discos independientes" o "matriz redundante de discos económicos") que emplean técnicas de división , duplicación o paridad para crear grandes almacenes de datos confiables a partir de múltiples unidades de disco duro (HDD) de computadora de uso general . Los tipos más comunes son RAID 0 (striping), RAID 1 (duplicación) y sus variantes, RAID 5 (paridad distribuida) y RAID 6 (paridad dual). También se pueden combinar o anidar varios niveles de RAID , por ejemplo RAID 10 (separación de espejos) o RAID 01 (espejado de conjuntos de bandas). Los niveles de RAID y sus formatos de datos asociados están estandarizados por la Storage Networking Industry Association (SNIA) en el estándar Common RAID Disk Drive Format (DDF). [1] Los valores numéricos solo sirven como identificadores y no significan rendimiento, confiabilidad, generación, jerarquía ni ninguna otra métrica.
Si bien la mayoría de los niveles RAID pueden proporcionar una buena protección y recuperación contra defectos de hardware o sectores defectuosos/errores de lectura (errores duros ), no brindan ninguna protección contra la pérdida de datos debido a fallas catastróficas (incendio, agua) o errores leves como errores del usuario. , mal funcionamiento del software o infección de malware. Para datos valiosos, RAID es sólo un componente básico de un esquema más amplio de prevención y recuperación de pérdida de datos; no puede reemplazar un plan de respaldo .
RAID 0 (también conocido como conjunto de franjas o volumen seccionado ) divide (" seccionados ") los datos de manera uniforme en dos o más discos, sin información de paridad , redundancia o tolerancia a fallas . Dado que RAID 0 no proporciona tolerancia a fallas ni redundancia, la falla de una unidad provocará que falle toda la matriz, debido a que los datos se distribuyen en todos los discos. Esta configuración normalmente se implementa teniendo como objetivo la velocidad. [2] [3] RAID 0 normalmente se usa para aumentar el rendimiento, aunque también se puede usar como una forma de crear un gran volumen lógico a partir de dos o más discos físicos. [4]
Se puede crear una configuración RAID 0 con discos de diferentes tamaños, pero el espacio de almacenamiento agregado a la matriz por cada disco está limitado al tamaño del disco más pequeño. Por ejemplo, si un disco de 120 GB se divide junto con un disco de 320 GB, el tamaño de la matriz será 120 GB × 2 = 240 GB. Sin embargo, algunas implementaciones de RAID permitirían utilizar los 200 GB restantes para otros fines.
El diagrama de esta sección muestra cómo se distribuyen los datos en franjas en dos discos, con A1:A2 como primera franja, A3:A4 como segunda, etc. Una vez definido el tamaño de la franja durante la creación de una matriz RAID 0 , es necesario darle mantenimiento en todo momento. Dado que se accede a las franjas en paralelo, una matriz RAID 0 de n unidades aparece como un único disco grande con una velocidad de datos n veces mayor que la velocidad de un solo disco.
Una matriz RAID 0 de n unidades proporciona velocidades de transferencia de lectura y escritura de datos hasta n veces más altas que las velocidades de las unidades individuales, pero sin redundancia de datos. Como resultado, RAID 0 se utiliza principalmente en aplicaciones que requieren un alto rendimiento y son capaces de tolerar una menor confiabilidad, como en la informática científica [5] o los juegos de computadora . [6]
Algunas pruebas comparativas de aplicaciones de escritorio muestran que el rendimiento de RAID 0 es marginalmente mejor que el de una sola unidad. [7] [8] Otro artículo examinó estas afirmaciones y concluyó que "la creación de bandas no siempre aumenta el rendimiento (en ciertas situaciones, en realidad será más lenta que una configuración sin RAID), pero en la mayoría de las situaciones producirá una mejora significativa en el rendimiento". ". [9] [10] Los puntos de referencia sintéticos muestran diferentes niveles de mejoras de rendimiento cuando se utilizan varios HDD o SSD en una configuración RAID 0, en comparación con el rendimiento de una sola unidad. Sin embargo, algunos puntos de referencia sintéticos también muestran una caída en el rendimiento en la misma comparación. [11] [12]
RAID 1 consiste en una copia exacta (o espejo ) de un conjunto de datos en dos o más discos; un par reflejado RAID 1 clásico contiene dos discos. Esta configuración no ofrece paridad, división o distribución del espacio en disco entre varios discos, ya que los datos se reflejan en todos los discos que pertenecen a la matriz, y la matriz solo puede ser tan grande como el disco miembro más pequeño. Este diseño es útil cuando el rendimiento de lectura o la confiabilidad son más importantes que el rendimiento de escritura o la capacidad de almacenamiento de datos resultante. [13] [14]
La matriz seguirá funcionando mientras al menos una unidad miembro esté operativa. [15]
Cualquier solicitud de lectura puede ser atendida y manejada por cualquier unidad del conjunto; por lo tanto, dependiendo de la naturaleza de la carga de E/S, el rendimiento de lectura aleatoria de una matriz RAID 1 puede ser igual a la suma del rendimiento de cada miembro, [a] mientras que el rendimiento de escritura permanece en el nivel de un solo disco. Sin embargo, si se utilizan discos con diferentes velocidades en una matriz RAID 1, el rendimiento de escritura general es igual a la velocidad del disco más lento. [14] [15]
Los puntos de referencia sintéticos muestran distintos niveles de mejoras de rendimiento cuando se utilizan varios HDD o SSD en una configuración RAID 1, en comparación con el rendimiento de una sola unidad. Sin embargo, algunos puntos de referencia sintéticos también muestran una caída en el rendimiento en la misma comparación. [11] [12]
RAID 2 , que rara vez se utiliza en la práctica, divide los datos a nivel de bits (en lugar de bloques) y utiliza un código Hamming para la corrección de errores . El controlador sincroniza los discos para que giren con la misma orientación angular (alcanzan el índice al mismo tiempo [16] ), por lo que generalmente no puede atender múltiples solicitudes simultáneamente. [17] [18] Sin embargo, dependiendo de un código Hamming de alta velocidad , muchos husillos operarían en paralelo para transferir datos simultáneamente, de modo que son posibles "tasas de transferencia de datos muy altas" [19] como por ejemplo en el DataVault de Thinking Machines donde Se transmitieron 32 bits de datos simultáneamente. El IBM 353 [20] también observó un uso similar del código Hamming y fue capaz de transmitir 64 bits de datos simultáneamente, junto con 8 bits ECC.
Dado que todas las unidades de disco duro implementan corrección de errores interna, la complejidad de un código Hamming externo ofrecía poca ventaja sobre la paridad, por lo que rara vez se implementó RAID 2; es el único nivel original de RAID que no se utiliza actualmente. [17] [18]
RAID 3 , que rara vez se utiliza en la práctica, consiste en una división a nivel de bytes con un disco de paridad dedicado . Una de las características de RAID 3 es que generalmente no puede atender múltiples solicitudes simultáneamente, lo que sucede porque cualquier bloque de datos, por definición, se distribuirá entre todos los miembros del conjunto y residirá en la misma ubicación física en cada disco. Por lo tanto, cualquier operación de E/S requiere actividad en cada disco y normalmente requiere ejes sincronizados.
Esto lo hace adecuado para aplicaciones que exigen las tasas de transferencia más altas en lecturas y escrituras secuenciales largas, por ejemplo, edición de video sin comprimir . Las aplicaciones que realizan pequeñas lecturas y escrituras desde ubicaciones aleatorias del disco obtendrán el peor rendimiento en este nivel. [18]
El requisito de que todos los discos giren sincrónicamente (al unísono ) agregó consideraciones de diseño que no proporcionaron ventajas significativas sobre otros niveles de RAID. Tanto RAID 3 como RAID 4 fueron rápidamente reemplazados por RAID 5. [21] RAID 3 generalmente se implementaba en hardware y los problemas de rendimiento se solucionaban mediante el uso de grandes cachés de disco. [18]
RAID 4 consta de segmentación a nivel de bloque con un disco de paridad dedicado . Como resultado de su diseño, RAID 4 proporciona un buen rendimiento de lecturas aleatorias, mientras que el rendimiento de escrituras aleatorias es bajo debido a la necesidad de escribir todos los datos de paridad en un solo disco, [22] a menos que el sistema de archivos sea compatible con RAID-4. y lo compensa.
Una ventaja de RAID 4 es que se puede ampliar rápidamente en línea, sin volver a calcular la paridad, siempre que los discos recién agregados estén completamente llenos con 0 bytes.
En el diagrama 1, una solicitud de lectura para el bloque A1 sería atendida por el disco 0. Una solicitud de lectura simultánea para el bloque B1 tendría que esperar, pero una solicitud de lectura para B2 podría ser atendida simultáneamente por el disco 1.
RAID 5 consta de bandas a nivel de bloque con paridad distribuida. A diferencia de RAID 4, la información de paridad se distribuye entre las unidades. Requiere que todas las unidades menos una estén presentes para funcionar. En caso de falla de una sola unidad, las lecturas posteriores se pueden calcular a partir de la paridad distribuida de modo que no se pierdan datos. [5] RAID 5 requiere al menos tres discos. [23]
Hay muchos diseños de datos y paridad en una matriz de unidades de disco RAID 5 dependiendo de la secuencia de escritura en los discos, [24] es decir:
La figura muestra 1) bloques de datos escritos de izquierda a derecha, 2) el bloque de paridad al final del tramo y 3) el primer bloque del siguiente tramo que no está en el mismo disco que el bloque de paridad del tramo anterior. Puede designarse como un diseño RAID 5 asincrónico izquierdo [24] y este es el único diseño identificado en la última edición de The Raid Book [25] publicado por el desaparecido Consejo Asesor de Raid. [26] En un diseño síncrono, el primer bloque de datos del siguiente tramo se escribe en la misma unidad que el bloque de paridad del tramo anterior.
En comparación con RAID 4, la paridad distribuida de RAID 5 nivela la tensión de un disco de paridad dedicado entre todos los miembros de RAID. Además, el rendimiento de escritura aumenta ya que todos los miembros de RAID participan en la atención de las solicitudes de escritura. Aunque no será tan eficiente como una configuración de segmentación (RAID 0), debido a que aún se debe escribir la paridad, esto ya no es un cuello de botella. [27]
Dado que el cálculo de paridad se realiza en la franja completa, los pequeños cambios en la matriz experimentan amplificación de escritura [ cita necesaria ] : en el peor de los casos, cuando se debe escribir un único sector lógico, es necesario leer el sector original y el sector de paridad correspondiente. , los datos originales se eliminan de la paridad, los nuevos datos se calculan en la paridad y se escriben tanto el nuevo sector de datos como el nuevo sector de paridad.
RAID 6 extiende RAID 5 agregando otro bloque de paridad ; por lo tanto, utiliza segmentación a nivel de bloque con dos bloques de paridad distribuidos en todos los discos miembros. [28] RAID 6 requiere al menos cuatro discos.
Al igual que en RAID 5, existen muchos diseños de matrices de discos RAID 6 dependiendo de la dirección en la que se escriben los bloques de datos, la ubicación de los bloques de paridad con respecto a los bloques de datos y si se escribe o no el primer bloque de datos de una franja posterior. a la misma unidad que el último bloque de paridad de la franja anterior. La figura de la derecha es sólo uno de muchos diseños de este tipo.
Según la Storage Networking Industry Association (SNIA), la definición de RAID 6 es: "Cualquier forma de RAID que puede continuar ejecutando solicitudes de lectura y escritura en todos los discos virtuales de una matriz RAID en presencia de dos fallas de disco simultáneas. Para implementar RAID Nivel 6 se han utilizado varios métodos, incluidos cálculos de datos de verificación dual (paridad y Reed-Solomon ), datos de verificación de paridad dual ortogonal y paridad diagonal. [29]
Los 2 bloques adicionales generalmente se denominan P y Q. Normalmente, el bloque P se calcula como la paridad (XORing) de los datos, al igual que RAID 5. Las diferentes implementaciones de RAID 6 utilizan diferentes códigos de borrado para calcular el bloque Q, a menudo uno. de Reed Solomon, EVENODD, Row Diagonal Parity (RDP), Mojette o códigos Liberation. [30] [31] [32] [33]
RAID 6 no tiene una penalización de rendimiento para las operaciones de lectura, pero sí tiene una penalización de rendimiento para las operaciones de escritura debido a la sobrecarga asociada con los cálculos de paridad. El rendimiento varía mucho dependiendo de cómo se implemente RAID 6 en la arquitectura de almacenamiento del fabricante: en software, firmware o mediante el uso de firmware y ASIC especializados para cálculos intensivos de paridad. RAID 6 puede leer a la misma velocidad que RAID 5 con la misma cantidad de unidades físicas. [34]
Cuando se utiliza paridad dual diagonal u ortogonal, es necesario un segundo cálculo de paridad para las operaciones de escritura. Esto duplica la sobrecarga de la CPU para escrituras RAID-6, en comparación con los niveles RAID de paridad única. Cuando se utiliza un código Reed Solomon, el segundo cálculo de paridad es innecesario. [ cita necesaria ] Reed Solomon tiene la ventaja de permitir que toda la información de redundancia esté contenida dentro de una franja determinada. [ se necesita aclaración ]
Es posible admitir un número mucho mayor de unidades eligiendo la función de paridad con más cuidado. El problema al que nos enfrentamos es garantizar que un sistema de ecuaciones sobre un campo finito tenga una solución única. Para hacer esto, podemos usar la teoría de ecuaciones polinómicas sobre cuerpos finitos.
Considere el campo de Galois con . Este campo es isomorfo a un campo polinómico para un polinomio irreducible adecuado de grado superior a . Representaremos los elementos de datos como polinomios en el campo de Galois. Correspondamos a las franjas de datos en los discos duros codificados como elementos de campo de esta manera. Usaremos para denotar suma en el campo y concatenación para denotar multiplicación. La reutilización de es intencional: esto se debe a que la suma en el campo finito representa al operador XOR, por lo que calcular la suma de dos elementos es equivalente a calcular XOR en los coeficientes polinomiales.
Un generador de un campo es un elemento del campo tal que es diferente para cada no negativo . Esto significa que cada elemento del campo, excepto el valor , se puede escribir como una potencia de. Se garantiza que un campo finito tendrá al menos un generador. Elija uno de esos generadores y defina y de la siguiente manera:
Como antes, la primera suma de comprobación es simplemente el XOR de cada franja, aunque ahora se interpreta como un polinomio. El efecto de puede considerarse como la acción de un registro de desplazamiento de retroalimentación lineal cuidadosamente elegido sobre el fragmento de datos. [35] A diferencia del desplazamiento de bits en el ejemplo simplificado, que solo se podía aplicar veces antes de que la codificación comenzara a repetirse, se garantiza que la aplicación del operador varias veces producirá funciones invertibles únicas, lo que permitirá que una longitud de fragmento admita hasta datos. piezas.
Si se pierde un fragmento de datos, la situación es similar a la anterior. En el caso de dos fragmentos de datos perdidos, podemos calcular las fórmulas de recuperación algebraicamente. Supongamos que y son los valores perdidos con , luego, usando los otros valores de , encontramos constantes y :
Podemos resolver la segunda ecuación y conectarla a la primera para encontrar , y luego .
A diferencia de P , el cálculo de Q requiere relativamente mucha CPU, ya que implica la multiplicación de polinomios en . Esto se puede mitigar con una implementación de hardware o mediante el uso de una FPGA .
La solución de matriz de Vandermonde anterior se puede ampliar a triple paridad, pero para más allá se requiere una construcción de matriz de Cauchy . [36]
La siguiente tabla proporciona una descripción general de algunas consideraciones para los niveles RAID estándar. En cada caso, la eficiencia del espacio del arreglo se expresa como una expresión en términos del número de unidades, n ; esta expresión designa un valor fraccionario entre cero y uno, que representa la fracción de la suma de las capacidades de las unidades que está disponible para su uso. Por ejemplo, si se organizan tres unidades en RAID 3, esto da una eficiencia de espacio en la matriz de 1 − 1/ n = 1 − 1/3 = 2/3 ≈ 67% ; por lo tanto, si cada unidad en este ejemplo tiene una capacidad de 250 GB, entonces la matriz tiene una capacidad total de 750 GB pero la capacidad que se puede utilizar para el almacenamiento de datos es de solo 500 GB. Diferentes configuraciones de RAID también pueden detectar fallas durante la llamada depuración de datos .
Históricamente, los discos estaban sujetos a una confiabilidad más baja y los niveles de RAID también se usaban para detectar qué disco de la matriz había fallado además de qué disco había fallado. Aunque, como señalaron Patterson et al. Incluso en los inicios de RAID, muchos (aunque no todos) los discos ya eran capaces de encontrar errores internos utilizando códigos de corrección de errores. En particular, es/era suficiente tener un conjunto de discos reflejados para detectar una falla, pero dos discos no eran suficientes para detectar cuál había fallado en una matriz de discos sin funciones de corrección de errores. [37] Las matrices RAID modernas dependen en su mayor parte de la capacidad de un disco para identificarse como defectuoso, lo que puede detectarse como parte de una limpieza. La información redundante se utiliza para reconstruir los datos faltantes, en lugar de identificar la unidad defectuosa. Se considera que las unidades tienen fallas si experimentan un error de lectura irrecuperable , que ocurre después de que una unidad ha reintentado muchas veces leer datos y falla. Las unidades empresariales también pueden informar fallas en muchos menos intentos que las unidades de consumo como parte de TLER para garantizar que una solicitud de lectura se cumpla de manera oportuna. [38]
Al medir el rendimiento de E/S de cinco sistemas de archivos con cinco configuraciones de almacenamiento: SSD único, RAID 0, RAID 1, RAID 10 y RAID 5, se demostró que F2FS en RAID 0 y RAID 5 con ocho SSD supera a EXT4 cinco veces. y 50 veces, respectivamente. Las mediciones también sugieren que el controlador RAID puede ser un cuello de botella importante en la construcción de un sistema RAID con SSD de alta velocidad. [40]
Combinaciones de dos o más niveles RAID estándar. También se conocen como RAID 0+1 o RAID 01, RAID 0+3 o RAID 03, RAID 1+0 o RAID 10, RAID 5+0 o RAID 50, RAID 6+0 o RAID 60 y RAID 10+0. o RAID 100.
Además de los niveles RAID estándar y anidados, las alternativas incluyen niveles RAID no estándar y arquitecturas de unidades no RAID . Las arquitecturas de unidades no RAID se denominan con términos y acrónimos similares, en particular JBOD ("sólo un montón de discos"), SPAN/BIG y MAID ("matriz masiva de discos inactivos").
{{cite journal}}
: Citar diario requiere |journal=
( ayuda )Un solo disco de paridad puede detectar un solo error, pero para corregir un error necesitamos suficientes discos de verificación para identificar el disco con el error. [...] La mayoría de los discos de verificación en el RAID de nivel 2 se utilizan para determinar qué disco falló, ya que solo se necesita un disco de paridad redundante para detectar un error. Estos discos adicionales son realmente "redundantes", ya que la mayoría de los controladores de disco ya pueden detectar si falla un anochecer, ya sea a través de señales especiales proporcionadas en la interfaz del disco o la información de verificación adicional al final de un sector.
{{cite book}}
: |journal=
ignorado ( ayuda )