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 las técnicas de striping , mirroring o paridad para crear grandes almacenes de datos fiables a partir de múltiples unidades de disco duro (HDD) de ordenador de uso general . Los tipos más comunes son RAID 0 (striping), RAID 1 (mirroring) y sus variantes, RAID 5 (paridad distribuida) y RAID 6 (paridad dual). También se pueden combinar o anidar varios niveles RAID , por ejemplo RAID 10 (striping de espejos) o RAID 01 (mirroring stripe sets). Los niveles 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, fiabilidad, generación, jerarquía ni ninguna otra métrica.
Si bien la mayoría de los niveles RAID pueden brindar una buena protección y recuperación contra defectos de hardware o sectores defectuosos o errores de lectura ( errores graves ), no brindan 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. En el caso de datos valiosos, RAID es solo un componente 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 bandas o volumen en bandas ) divide (" bandas ") 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 hará que falle toda la matriz, debido a que los datos se distribuyen en bandas en todos los discos. Esta configuración generalmente se implementa teniendo como objetivo la velocidad. [2] [3] RAID 0 se usa normalmente 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 distintos tamaños, pero el espacio de almacenamiento que cada disco agrega a la matriz está limitado al tamaño del disco más pequeño. Por ejemplo, si se une un disco de 120 GB con un disco de 320 GB, el tamaño de la matriz será 120 GB × 2 = 240 GB. Sin embargo, algunas implementaciones RAID permitirían que los 200 GB restantes se usen 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 la primera franja, A3:A4 como la segunda, etc. Una vez que se define el tamaño de la franja durante la creación de una matriz RAID 0, es necesario mantenerlo en todo momento. Dado que se accede a las franjas en paralelo, una matriz RAID 0 de n unidades aparece como un solo 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 cada unidad individual, pero sin redundancia de datos. Como resultado, RAID 0 se utiliza principalmente en aplicaciones que requieren un alto rendimiento y pueden tolerar una menor confiabilidad, como en la informática científica [5] o en los juegos de computadora . [6]
Algunas pruebas comparativas de aplicaciones de escritorio muestran que el rendimiento de RAID 0 es ligeramente 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 determinadas situaciones, de hecho, será más lenta que una configuración sin RAID), pero en la mayoría de las situaciones producirá una mejora significativa del rendimiento". [9] [10] Las pruebas comparativas sintéticas muestran diferentes niveles de mejoras de rendimiento cuando se utilizan varios discos duros o SSD en una configuración RAID 0, en comparación con el rendimiento de una sola unidad. Sin embargo, algunas pruebas comparativas sintéticas también muestran una caída del rendimiento para 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 en franjas ni 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 continuará funcionando mientras al menos una unidad miembro esté operativa. [15]
Cualquier solicitud de lectura puede ser atendida y manejada por cualquier unidad en la matriz; 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 al 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 benchmarks sintéticos muestran distintos niveles de mejora del rendimiento cuando se utilizan varios discos duros o SSD en una configuración RAID 1, en comparación con el rendimiento de una sola unidad. Sin embargo, algunos benchmarks sintéticos también muestran una caída del rendimiento en la misma comparación. [11] [12]
RAID 2 , que rara vez se utiliza en la práctica, divide los datos en bandas a nivel de bits (en lugar de bloques) y utiliza un código Hamming para la corrección de errores . Los discos están sincronizados por el controlador para girar en 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 funcionarían en paralelo para transferir datos simultáneamente, de modo que son posibles "velocidades de transferencia de datos muy altas" [19] como, por ejemplo, en el DataVault de Thinking Machines, donde se transmitían 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 la corrección de errores interna, la complejidad de un código Hamming externo ofrecía pocas ventajas sobre la paridad, por lo que RAID 2 rara vez se implementó; 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 distribución a nivel de bytes con un disco de paridad dedicado . Una de las características de RAID 3 es que, por lo general, no puede atender varias solicitudes simultáneamente, lo que sucede porque cualquier bloque de datos individual, 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, por lo general, requiere husillos 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 lecturas y escrituras pequeñas desde ubicaciones de disco aleatorias obtendrán el peor rendimiento con este nivel. [18]
El requisito de que todos los discos giraran de forma sincronizada (a paso de un disco ) añadió consideraciones de diseño que no ofrecían ventajas significativas sobre otros niveles RAID. Tanto RAID 3 como RAID 4 fueron rápidamente reemplazados por RAID 5. [21] RAID 3 se implementaba generalmente en hardware y los problemas de rendimiento se solucionaban mediante el uso de grandes cachés de disco. [18]
RAID 4 consiste en una distribución a nivel de bloques 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 compense.
Una ventaja de RAID 4 es que se puede ampliar rápidamente en línea, sin necesidad de recálculo de 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 consiste en una distribución a nivel de bloques con paridad distribuida. A diferencia de RAID 4, la información de paridad se distribuye entre las unidades. Requiere que todas las unidades, excepto 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 según 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 de la banda y 3) el primer bloque de la siguiente banda que no está en el mismo disco que el bloque de paridad de la banda anterior. Puede designarse como un diseño RAID 5 asíncrono izquierdo [24] y este es el único diseño identificado en la última edición de The Raid Book [25] publicado por el extinto Raid Advisory Board. [26] En un diseño síncrono, el primer bloque de datos de la siguiente banda se escribe en la misma unidad que el bloque de paridad de la banda anterior.
En comparación con RAID 4, la paridad distribuida de RAID 5 equilibra la presió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 entrega de solicitudes de escritura. Aunque no será tan eficiente como una configuración de distribució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, pequeños cambios en la matriz experimentan amplificación de escritura [ cita requerida ] : en el peor de los casos, cuando se debe escribir un solo sector lógico, se deben leer el sector original y el sector de paridad correspondiente, se eliminan los datos originales de la paridad, se calculan los nuevos datos en la paridad y se escriben tanto el nuevo sector de datos como el nuevo sector de paridad.
RAID 6 extiende RAID 5 agregando un segundo bloque de paridad ; por lo tanto, utiliza una distribución a nivel de bloque con dos bloques de paridad distribuidos entre todos los discos miembro. [28] RAID 6 requiere al menos cuatro discos.
Al igual que en RAID 5, existen muchos diseños de matrices de discos RAID 6 según 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 el primer bloque de datos de una banda posterior se escribe o no en la misma unidad que el último bloque de paridad de la banda anterior. La figura de la derecha es solo uno de los 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 pueda continuar ejecutando solicitudes de lectura y escritura a todos los discos virtuales de una matriz RAID en presencia de dos fallas de disco simultáneas. Se han utilizado varios métodos, incluidos los cálculos de datos de verificación dual (paridad y Reed–Solomon ), datos de verificación de paridad dual ortogonal y paridad diagonal, para implementar RAID Nivel 6". [29]
El segundo bloque suele estar etiquetado como Q, y el primer bloque como P. 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 los códigos Reed Solomon, EVENODD, Row Diagonal Parity (RDP), Mojette o 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 en gran medida según 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 de paridad intensivos. RAID 6 puede leer hasta 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 CPU para las escrituras RAID-6, en comparación con los niveles RAID de paridad simple. Cuando se utiliza un código Reed Solomon, el segundo cálculo de paridad es innecesario. [ cita requerida ] Reed Solomon tiene la ventaja de permitir que toda la información de redundancia esté contenida dentro de una franja determinada. [ aclaración necesaria ]
Es posible admitir una cantidad mucho mayor de unidades eligiendo la función de paridad con más cuidado. El problema al que nos enfrentamos es asegurar que un sistema de ecuaciones sobre el cuerpo finito tenga una solución única. Para ello, podemos utilizar la teoría de ecuaciones polinómicas sobre cuerpos finitos.
Consideremos el campo de Galois con . Este campo es isomorfo a un campo polinómico para un polinomio irreducible adecuado de grado sobre . Representaremos los elementos de datos como polinomios en el campo de Galois. Sea que correspondan a las franjas de datos en los discos duros codificados como elementos de campo de esta manera. Usaremos para denotar la adición en el campo y la concatenación para denotar la multiplicación. La reutilización de es intencional: esto se debe a que la adición 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 del polinomio.
Un generador de un campo es un elemento del campo que es diferente para cada valor 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 tiene 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 produzca funciones invertibles únicas, lo que permitirá que una longitud de fragmento de admita hasta fragmentos de datos.
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 de forma algebraica. Supongamos que y son los valores perdidos con , luego, utilizando los otros valores de , encontramos constantes y :
Podemos resolver en la segunda ecuación y sustituirlo en la primera para encontrar , y luego .
A diferencia de P , el cálculo de Q requiere un uso relativamente intensivo de la 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 un FPGA .
La solución de la matriz de Vandermonde anterior se puede extender a la paridad triple, 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 de la matriz se proporciona como una expresión en términos de la cantidad 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 del espacio de 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 solo de 500 GB. Diferentes configuraciones RAID también pueden detectar fallas durante la denominada depuración de datos .
Históricamente, los discos estaban sujetos a una menor confiabilidad y los niveles RAID también se usaban para detectar qué disco en la matriz había fallado además de que un disco había fallado. Sin embargo, como lo señaló Patterson et al. incluso en el inicio de RAID, muchos discos (aunque no todos) ya eran capaces de encontrar errores internos utilizando códigos de corrección de errores. En particular, es/era suficiente tener un conjunto reflejado de discos 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 a sí mismo como defectuoso, lo que se puede detectar 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 han fallado si experimentan un error de lectura irrecuperable , que ocurre después de que una unidad ha reintentado muchas veces leer datos y ha fallado. 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]
En la medición del rendimiento de E/S de cinco sistemas de archivos con cinco configuraciones de almacenamiento (una SSD, 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 en 5 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 conocen con términos y acrónimos similares, en particular JBOD ("just a bunch of disks"), SPAN/BIG y MAID ("massive array of idle disks").
{{cite journal}}
: Requiere citar revista |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 un disco falló, 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 )