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?
fuente
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.
fuente
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.
fuente
¿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.
fuente
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.
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.
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.
fuente
No sé 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.
fuente
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.
fuente
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
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.
fuente
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)
fuente