¿RAID5 es más robusto que RAID1?

12

Estoy a punto de reemplazar una matriz RAID5 de hardware antigua con una matriz RAID1 de software de Linux. Estaba hablando con un amigo y afirmó que RAID5 era más robusto que RAID1.

Su afirmación fue que con RAID5, al leer, se leían los datos de paridad para asegurarse de que todas las unidades devolvieran los datos correctos. Afirmó además que en RAID1 los errores que ocurren en una unidad pasarán desapercibidos porque no se realiza dicha verificación con RAID1.

Puedo ver cómo esto podría ser cierto, pero también puedo ver que todo depende de cómo se implementen los sistemas RAID en cuestión. Seguramente, un sistema RAID5 no tiene que leer y verificar los datos de paridad en una lectura y un sistema RAID1 podría leer con la misma facilidad desde todas las unidades en lectura para verificar que todos tenían los mismos datos y, por lo tanto, alcanzar el mismo nivel de robustez ( con una pérdida de rendimiento correspondiente).

Entonces la pregunta es, ¿qué hacen realmente los sistemas RAID5 / RAID1 en el mundo real? ¿Los sistemas RAID5 verifican los datos de paridad en las lecturas? ¿Existen sistemas RAID1 que leen desde todas las unidades y comparan los datos en lectura?

andynormancx
fuente

Respuestas:

22

RAID-5 es una solución de tolerancia a fallas, no una solución de integridad de datos .

Recuerde que RAID significa Matriz redundante de discos de bajo costo . Los discos son la unidad atómica de redundancia: a RAID realmente no le importan los datos. Usted compra soluciones que emplean sistemas de archivos como WAFL o ZFS para abordar la redundancia e integridad de los datos.

El controlador RAID (hardware o software) no verifica la paridad de los bloques en el momento de la lectura. Este es un riesgo importante de ejecutar RAID-5: si encuentra una falla parcial de los medios en una unidad (una situación en la que un bloque defectuoso no está marcado como "defectuoso"), ahora se encuentra en una situación en la que sus datos han estado en silencio corrompido

El RAID-Z / ZFS de Sun en realidad proporciona integridad de datos de extremo a extremo , y sospecho que otros sistemas de archivos y sistemas RAID proporcionarán esta característica en el futuro a medida que el número de núcleos disponibles en las CPU continúe aumentando.

Si está utilizando RAID-5, está siendo barato, en mi opinión. RAID 1 funciona mejor, ofrece mayor protección y no afecta la producción cuando falla una unidad, por una diferencia de costo marginal.

duffbeer703
fuente
6

Creo que la respuesta depende del controlador / software, por ejemplo, es bastante común que los sistemas de duplicación solo lean un disco de un par y, por lo tanto, sean capaces de entregar los datos incorrectos. Observo que si sus resultados dependen de esos datos, cuando los datos se escriben en ambos discos, se corrompe en ambos discos .....

Del pdf bajo SATAssure (tm) Plus:

"La revolucionaria tecnología SATAssure brinda protección y confiabilidad de datos de clase empresarial utilizando unidades de disco SATA económicas y de gran capacidad. SATAssure opera en todas las operaciones de lectura, asegurando la integridad de los datos y corrige automáticamente los problemas en tiempo real, todo sin la penalización de rendimiento o capacidad que se encuentra en el tradicional sistemas de almacenamiento. Reduzca las RMA de la unidad con una nueva capacidad para apagar y encender las unidades individuales ".

Es interesante que algunos fabricantes se preocupen por el hecho de que siempre calculan la paridad, esto me lleva a pensar que es relativamente poco común en los controladores de hardware. También es de notar que los sistemas como ZFS y WAFL (netapp) hacen cálculos de paridad para cada lectura.

James
fuente
Ese enlace parece interesante, pero ¿en realidad dice explícitamente en alguna parte de esa página o folleto que vuelven a calcular la paridad en todas las lecturas?
andynormancx
Agregué una cita del pdf. Tenga en cuenta que las cajas S2A son silenciosas de gama alta.
James el
3

Con RAID-5, la paridad generalmente solo se lee en la reconstrucción de la matriz, no en la lectura general. Esto es para que las lecturas puedan ser más aleatorias y más rápidas (ya que no tiene que leer y calcular la paridad para una franja completa cada vez que desee 1K de datos de la matriz).

Con RAID-1, en general, las lecturas se avanzan a través de las unidades siempre que sea posible para proporcionar un mayor rendimiento de lectura. Como notó, si el subsistema RAID intenta leer ambas unidades y difieren, el subsistema no tiene forma de saber qué unidad estaba mal.

La mayoría de los subsistemas RAID dependen de la unidad para informar al controlador o la computadora cuando va mal.

Entonces, ¿RAID-5 es "más robusto"? La respuesta es, depende. RAID-5 le permite obtener un almacenamiento más efectivo para un número determinado de discos que RAID-1; aunque para proporcionar un almacenamiento efectivo más allá de un disco, RAID-1 debe combinarse con RAID-0, ya sea como una banda de matrices RAID-1, o como un RAID-1 en dos bandas RAID-0.

(Prefiero lo primero, ya que un solo fallo de unidad eliminará un solo elemento RAID-1, lo que significa que solo una sola unidad requerirá reconstrucción. los discos estarán involucrados en la reconstrucción cuando la unidad sea reemplazada).

Esto también lleva a discusiones sobre "escrituras fantasmas", donde una escritura es reportada como exitosa por la electrónica de la unidad, pero por cualquier razón la escritura nunca llega al disco. Esto sucede Tenga en cuenta que para una matriz RAID-5, cuando tiene una falla en la unidad, la matriz DEBE leer TODOS LOS sectores en TODAS las unidades supervivientes PERFECTAMENTE para poder recuperarse. NetApp afirma que el gran tamaño de las unidades más el gran tamaño de los grupos de incursiones significa que, en algunos casos, sus posibilidades de fallar durante una reconstrucción pueden ser tan malas como una de cada diez. Por lo tanto, recomiendan que los discos grandes en grandes grupos RAID utilicen la paridad dual (que creo que está relacionada con RAID-6).

Aprendí esto en una discusión técnica de NetApp dada por un par de sus ingenieros.

David Mackintosh
fuente
No usaría el término "más eficaz" ... "más capacidad" sería más apropiado. En mi opinión, una solución que hace que sea más probable que pierda mis datos no es más efectiva.
duffbeer703
Todo es una relación costo-valor. RAID-5 es más rentable en almacenamiento, mientras que RAID-1 o RAID-1 + 0 (0 + 1) es más robusto.
David Mackintosh
La otra razón para preferir 1 + 0 sobre 0 + 1 es que 1 + 0 puede sobrevivir a 4 de los 6 posibles "un segundo disco falla antes de que se reemplace el primer disco fallido y se reconstruya la matriz" donde 0 + 1 puede sobrevivir solo 2 de los 6. Aunque 0 + 1 puede sobrevivir a una falla del controlador en un brazo (donde 0 + 1 no puede), esto es mucho más raro que la falla de la unidad (incluso la falla de varias unidades).
David Spillett el
RAID-DP (implementación de paridad dual de NetApp) es un RAID-6. RAID-6 (a diferencia de RAID-5) se define funcionalmente como un RAID que puede sobrevivir a dos fallas de disco. RAID-DP se diferencia del RAID-6 típico en que no distribuye la paridad: WAFL no escribe aleatoriamente las escrituras aleatorias, por lo que distribuir la paridad no proporciona ningún beneficio.
Capitán Segfault
3

Ninguna implementación RAID común generalmente verifica la paridad en el acceso a datos. Nunca he visto uno. Algunas implementaciones de RAID5 leen datos de paridad para lecturas de transmisión para evitar búsquedas innecesarias (es más barato desechar cada enésimo bloque que hacer que la unidad busque en cada enésimo bloque). Las implementaciones de RAID1 no pueden comprobarse porque leen el rendimiento de ambos discos (bueno, en la gran mayoría de las implementaciones de RAID1. Un puñado le permite elegir, lo que puede ser útil si un disco es mucho más lento que el otro y no requiere mucha escritura carga.)

Algunos lo comprueban con un "fregado" de fondo. En ese caso, RAID6 gana, ya que puede recuperar los datos, y RAID5 y RAID1 están en la misma situación, puede identificar pero no corregir. (Esto no es estrictamente cierto ya que la unidad podría detectar un CRC defectuoso, devolver un error y permitirle reescribir el bloque desde la paridad. Esto sucede con bastante frecuencia).

Si desea la integridad de los datos, almacene un hash con cada bloque (o registro, o como quiera que esté dividido) en la capa de aplicación. Sybase y Oracle hacen esto (creo que a nivel de página) y lo he visto en muchas ocasiones guardar una base de datos gigantesca. (por ejemplo, el controlador comienza a devolver datos incorrectos, sybase se bloquea con un error claro, por lo tanto, no se realizaron escrituras cuando la base de datos se estaba ejecutando en hardware defectuoso con un estado inconsistente).

La única solución de sistema de archivos y la única solución RAID que hace esto por usted es ZFS.

carlito
fuente
0

¿Está hablando su amigo sobre el bit de paridad que está involucrado en algunos niveles RAID , o la suma de verificación de los datos escritos en el disco?

Si están interesados ​​en la paridad, RAID1 no tiene un bit de paridad: tiene dos copias de los mismos datos. Debe haber una suma de verificación realizada por el disco para garantizar que lo que se escribió en el disco coincida con lo que salió del cable

RAID5 tiene un bit de paridad. Esto significa que puede perder un disco en su conjunto RAID y continuar como si nada hubiera pasado. Aún así, debe realizarse una suma de verificación de los datos escritos en el disco para asegurarse de que coincida con lo que salió del cable

En este caso, las sumas de verificación son totalmente independientes de RAID que pueden o no realizarse con un montón de discos

Editado para agregar: Usted mencionó pasar de RAID de hardware a RAID de software. La preferencia es siempre RAID de hardware sobre RAID de software. Si puede comprar el hardware requerido para proporcionar el nivel RAID que desea implementar, le sugiero que lo haga. Esto permitirá que todos los cálculos de paridad sean realizados por la tarjeta RAID, en lugar del host. Por lo tanto, libera recursos en el host. No hay duda de otros beneficios, pero se me escapan en este momento.

Ben Quick
fuente
Estaba hablando de paridad. Afirmaba que en RAID5 se recuperó la información de paridad en una lectura y se comparó con los datos procedentes de los otros discos para verificar que no hubo errores de lectura.
andynormancx
55
No estoy de acuerdo con su recomendación de RAID de hardware sobre software en todos los casos. Con el hardware moderno, el RAID de software puede ser tan rápido como el hardware si su servidor tiene suficiente CPU de repuesto (que el mío siempre tendrá). Además, el RAID de hardware tiene algunas desventajas, siendo la principal en una situación de recuperación que necesita una tarjeta RAID coincidente. Con el software RAID, puede extraer un disco de una máquina, pegarlo en otro y listo sin obtener una nueva tarjeta RAID que coincida exactamente con la anterior.
andynormancx
Estaba tratando de llegar al fondo de qué contexto estaba hablando. Según tengo entendido, las sumas de verificación se utilizan en la escritura en disco (independientemente de RAID). La paridad se utiliza para colocar fragmentos de datos en diferentes discos y para reconstruir una matriz en caso de falla del disco. La paridad no se usa en todos los niveles RAID
Ben Quick
1
Consulte en.wikipedia.org/wiki/… para obtener más información sobre RAID de software contra hardware. Obviamente, la implementación que elija depende de su entorno y sus requisitos. Mi preferencia es RAID de hardware sobre RAID de software
Ben Quick
Entiendo, olvide que alguna vez mencioné sumas de comprobación. He actualizado la pregunta para aclarar la confusión. La pregunta es si los sistemas RAID5 generalmente verifican los datos de paridad en las lecturas.
andynormancx
0

Estoy a punto de reemplazar una matriz RAID5 de hardware antigua con una matriz RAID1 de software de Linux. Estaba hablando con un amigo y afirmó que RAID5 era más robusto que RAID1.

Eso dependería del tipo de implementación de incursión (hw / sw), los discos, el controlador de incursión, si lo hay, y sus características.

Su afirmación fue que con RAID5, al leer, se leían los datos de paridad para asegurarse de que todas las unidades devolvieran los datos correctos. Afirmó además que en RAID1 los errores que ocurren en una unidad pasarán desapercibidos porque no se realiza dicha verificación con RAID1.

tiene un poco de sentido, pero en realidad no :) lo que sucede es que, si se escriben datos incorrectos, en un espejo se enviarán a ambas unidades, y en raid5 la paridad se generará y se extenderá por las unidades. La comprobación de lectura / escritura de datos la realiza el disco y el firmware del controlador, y no tiene nada que ver con los niveles de incursión.

So the question is, what do RAID5/RAID1 systems in the real world

en realidad hacer? ¿Los sistemas RAID5 verifican los datos de paridad en las lecturas? ¿Existen sistemas RAID1 que leen desde todas las unidades y comparan los datos en lectura?

Como dije, las comprobaciones no son parte del algoritmo de incursión, aunque algunos controladores pueden tener algo adicional implementado.

la robustez de la matriz depende de la calidad de las unidades (las unidades de 2.5 "tienden a vivir más de 3.5" debido a la disminución de las tasas de RV; en mi experiencia NUNCA compre unidades SCSI / SAS maxtor, tienen fallas de firmware horribles), el medio ambiente (control de temperatura y humedad), el controlador en sí (¿tiene una BBU? ¿El firmware está actualizado? ¿Es una incursión real o falso?), la cantidad de PSU en el servidor, la calidad del UPS, etc.

dyasny
fuente
Me temo que no ha respondido la pregunta, que es muy precisa sobre lo que hacen las implementaciones reales reales de RAID5 con respecto a la verificación de los datos de paridad en una lectura.
andynormancx
0

No esto, pero me parece poco probable que lo haga. Recuerde que para calcular la paridad, tendrá que leer el bloque de todas las unidades en su conjunto RAID y luego hacer cálculos matemáticos para determinar la corrección, mientras que si no lo hace, solo hace la lectura de una unidad.

Además, si su lectura es de menos de un bloque, una lectura de verificación de paridad tendría que expandirla a un bloque completo, mientras que una lectura regular no lo haría. (Suponiendo, por supuesto, que el bloque RAID es más grande que los bloques de los discos. Creo que las lecturas del disco deben ser de bloques completos. Si no, mi punto es aún más válido).

Entonces, desde mi punto de vista, sí, podría hacer eso, pero si lo hiciera, sería ineficiente, y dudo que alguno se implemente de esa manera.

De nuevo, sin embargo, no tengo conocimiento personal de implementaciones reales.

wfaulk
fuente
0

¿Los sistemas RAID5 verifican los datos de paridad en las lecturas?

Realmente no tiene sentido. ¿Qué haces cuando encuentras un desajuste de paridad? (¿Cómo sabes qué bloque está mal?)

Para lecturas aleatorias, verificar la paridad sería costoso. Normalmente, puede realizar una lectura aleatoria con solo mirar un solo disco, pero si desea verificar la paridad necesitaría leer todos los discos en cada lectura. (¡Eso podría tener sentido si hubiera algo que pudieras hacer al respecto!)

Tenga en cuenta que RAID-1 también tiene este problema, lo que tiene sentido cuando mira un RAID-1 como un RAID-5 de dos discos.

Capitán Segfault
fuente
0

He estado pensando un poco en la afirmación de que RAID-1 debería ser más rápido en lecturas que RAID-5, ya que lee en ambas unidades a la vez.

Ahora, dado que la paridad no se lee en RAID-5 a menos que la matriz necesite una reconstrucción, en realidad es igual a una matriz RAID-0 en términos de lectura, ¿estoy en lo cierto?

RAID-0 generalmente se considera el nivel más rápido (aunque debería llamarse "AID", ya que no hay redundancia alguna). :-RE

Hablando del software RAID de Linux, una prueba simple, usando hdparm, confirma esta teoría: mis matrices RAID-5 siempre muestran una velocidad de lectura más alta que mis matrices RAID-1.

PERO: ¡Parece que un conjunto degradado funciona mucho más lento que un conjunto normal en ejecución! Acabo de probar esto con Fedora 9, ejecutándose en 4 discos WD de 1 TB con diferentes niveles de RAID. Aquí están los resultados:

RAID-5 degradado: velocidad de lectura 43 MB / seg RAID-5 normal: velocidad de lectura 240 MB / seg (!) RAID-1: velocidad de lectura 88 MB / seg

Dado que la pérdida permitida de discos es la misma en RAID-1 y RAID-5 (es decir, uno), creo que RAID-5 debería superar a RAID-1 en todos los aspectos, dando más capacidad en relación con el número de discos utilizados en la matriz y el mismo Tolerancia a fallos. Esto lleva a una conclusión que establece que RAID-6 supera a todos los demás niveles de RAID, ya que es tan rápido como RAID-0 en lectura normal (sin lectura de paridad de los dos discos de paridad), y aún tolera fallas en caso de pérdida de un miembro de la matriz. ;-)


fuente
Algunas cosas interesantes, pero has repetido la falacia RAID1 que escucho todo el tiempo. RAID1 no tiene que significar que solo puede sobrevivir a un solo fallo de disco. No tiene que tener solo dos discos en su matriz RAID1. Por ejemplo, si tiene una matriz RAID1 con 3 discos, sobrevivirá a dos fallas de disco y también el rendimiento de lectura debería aumentar ( si su sistema RAID está leyendo desde múltiples unidades en una lectura).
andynormancx
-1

Personalmente, creo que la prueba final de un sistema RAID es qué tan bien puede soportar fallas. En este caso, tanto RAID5 como RAID1 pueden manejar fallas de unidades individuales, pero ninguna sobrevivirá más que eso.

En cuanto a su pregunta sobre el bit de paridad, creo que depende de los controladores RAID. Definitivamente se leerá durante la reconstrucción, pero en el uso normal, no tendría mucho sentido hacerlo, ya que se desperdiciaría el ancho de banda.

sybreon
fuente
Me temo que su respuesta equivale a "No sé si alguna implementación de RAID5 verifica la paridad en una lectura" y, por lo tanto, no responde la pregunta.
andynormancx
Es una respuesta válida porque nadie lo sabrá con certeza, excepto la persona que realmente escribió el controlador.
sybreon
-2

afaik, no soy un profesional de almacenamiento 24/7, el controlador siempre verifica lo que está escrito y leído en los discos. es decir, con raid1 tiene escrituras ligeramente peores que en un solo disco pero sus lecturas son un poco más rápidas (tiene que escribir un archivo en dos discos pero puede leer una parte del disco uno y la otra parte del disco dos).

Tal vez pueda deshabilitar la verificación de datos para un nivel de incursión, pero cuál es el punto de esto, todos los niveles de incursión (excepto 0) están ahí para brindarle redundancia de datos, entonces, ¿por qué obstaculizarse?

Con raid 5 necesitas al menos 3 discos y puedes usar discos N-1 para datos. Con la incursión 1 siempre necesita un número par de discos y puede usar discos N / 2 para datos.

Entonces, en las incursiones más grandes, el nivel 5 le brinda más almacenamiento, mientras que la incursión 1 le brinda más redundancia.

Si por más robusto quieres decir cuál ofrece más redundancia, entonces es incursión 1.

Dependiendo del tamaño de la incursión, también debe considerar los tiempos de reconstrucción en caso de error (cuántos discos hay, qué tan grande es un disco, qué tipo de incursión (suave, falso, hardware), qué nivel, etc. )

Por lo tanto, no es realmente posible decir que una incursión es más robusta que otra (quizás la incursión 6 siempre es más robusta que la incursión 5 a costa de que pierdas espacio de almacenamiento)

mrt181
fuente
1
Me temo que esto realmente no responde a mi pregunta, mi pregunta es muy precisa sobre si las implementaciones RAID5 típicas verifican o no los datos de paridad en la lectura. Y para el registro RAID1 no necesita un número par de discos. Puede tener una matriz RAID1 con más de dos discos, lo que aumenta la redundancia y reduce la velocidad de escritura.
andynormancx
1
"el controlador siempre verifica lo que se escribe y lee en los discos". Este no es el caso de que el controlador pueda leer de ambos discos, pero algunos controladores devuelven los primeros datos que obtienen.
James el
Creo que es posible decir que RAID1 necesita un número par de discos, y que un tercer espejo no es RAID1. Tan pocas implementaciones admiten un tercer espejo que la terminología nunca se ha estandarizado.
carlito