Rendimiento RAID de software frente a hardware y uso de caché

73

He estado leyendo mucho sobre controladores / configuraciones RAID y una cosa que surge mucho es cómo los controladores de hardware sin caché ofrecen el mismo rendimiento que el software RAID. ¿Es este realmente el caso?

Siempre pensé que las tarjetas RAID de hardware ofrecerían un mejor rendimiento incluso sin caché. Quiero decir, tienes hardware dedicado para realizar las tareas. Si ese es el caso, ¿cuál es el beneficio de obtener una tarjeta RAID que no tiene caché, algo como un LSI 9341-4i que no es exactamente barato?

Además, si una ganancia de rendimiento solo es posible con la memoria caché, ¿hay una configuración de memoria caché que escriba en el disco de inmediato pero mantenga los datos en la memoria caché para las operaciones de lectura, lo que hace que una BBU no sea una prioridad?

Sólo soy yo
fuente
Algo que he notado que favorece la incursión de HW: en mi experiencia, si está ejecutando una incursión de SW y el sistema hace algo más que un apagado limpio, fallará la matriz y tendrá que reconstruirla. La incursión de HW no falla si no estaba escribiendo cuando el sistema dejó de funcionar.
Loren Pechtel el

Respuestas:

146

En resumen: si usa una tarjeta RAID de gama baja (sin caché), hágase un favor y cambie a RAID de software. Si usa una tarjeta de gama media a alta (con BBU o NVRAM), entonces el hardware es a menudo (¡pero no siempre!) A continuación, una buena opción.

Respuesta larga: cuando el poder de cómputo era limitado, las tarjetas RAID de hardware tenían la ventaja significativa de descargar el cálculo de paridad / síndrome para los esquemas RAID que las involucraban (RAID 3/4/5, RAID6, ecc).

Sin embargo, con el rendimiento cada vez mayor de la CPU, esta ventaja básicamente desapareció: incluso la CPU antigua de mi computadora portátil (Core i5 M 520, generación Westmere) tiene un rendimiento XOR de más de 4 GB / sy un rendimiento del síndrome RAID-6 de más de 3 GB / s en un núcleo de ejecución única .

La ventaja que mantiene RAID de hardware hoy en día es la presencia de una memoria caché DRAM protegida contra pérdida de energía, en forma de BBU o NVRAM. Esta memoria caché protegida proporciona una latencia muy baja para el acceso de escritura aleatorio (y las lecturas acertadas) y básicamente transforma las escrituras aleatorias en escrituras secuenciales. Un controlador RAID sin tal caché es casi inútil . Además, algunos controladores RAID de gama baja no solo vienen sin un caché, sino que deshabilitan por la fuerza el caché DRAM privado del disco, lo que conduce a un rendimiento más lento que sin la tarjeta RAID. Un ejemplo son las tarjetas PERC H200 y H300 de DELL: si el firmware más reciente no ha cambiado eso, deshabilitan totalmente la caché privada del disco (y no se puede volver a habilitar mientras los discos están conectados al controlador RAID). Hazte un favor y hazlonunca, nunca, compre tales controladores. Si bien incluso los controladores de gama alta a menudo deshabilitan la caché privada del disco, al menos tienen su propia caché protegida, lo que hace que la caché privada de HDD (¡pero no SSD!) Sea algo redundante.

Sin embargo, este no es el final. Incluso los controladores capaces (el que tiene caché BBU o NVRAM) pueden dar resultados inconsistentes cuando se usan con SSD, básicamente porque los SSD realmente necesitan un caché privado rápido para la programación / borrado eficiente de páginas FLASH. Y aunque algunos controladores (¿la mayoría?) Le permiten volver a habilitar la memoria caché privada del disco (por ejemplo: PERC H700 / 710 / 710P permite que el usuario lo vuelva a habilitar), si esa memoria caché privada no está protegida contra escritura, corre el riesgo de perder datos en caso de que de pérdida de potencia. El comportamiento exacto realmente es controlador y firmware dependiente (por ejemplo: en un Dell S6 / i con 256 MB de caché BM y caché de disco habilitado , tuve no hay pérdidas durante las pruebas múltiples, prevista pérdida de potencia), dando incertidumbre y mucha preocupación.

Los RAID de software de código abierto, por otro lado, son bestias mucho más controlables: su software no está incluido dentro de un firmware patentado y tiene patrones y comportamientos de metadatos bien definidos. El software RAID asume (correctamente) que el caché DRAM privado del disco no está protegido, pero al mismo tiempo es crítico para un rendimiento aceptable, por lo que generalmente no lo deshabilitan, sino que usan los comandos ATA FLUSH / FUA para asegurarse de que es crítico los datos aterrizan en almacenamiento estable. Como a menudo se ejecutan desde los puertos SATA conectados al conjunto de chips SB, su ancho de banda es muy bueno y el soporte del controlador es excelente.

Sin embargo, si se usa con discos duros mecánicos, el patrón de acceso de escritura aleatorio sincronizado (por ejemplo, bases de datos, máquinas virtuales) sufrirá mucho en comparación con un controlador RAID de hardware con caché WB. Por otro lado, cuando se usa con SSD empresariales (es decir, con un caché de escritura protegido por pérdida de potencia), el RAID de software a menudo se destaca y ofrece resultados aún más altos que los que se pueden lograr con las tarjetas RAID de hardware. Dicho esto, debe recordar que los SSD de los consumidores (léase: con caché de escritura no protegida), aunque son muy buenos para leer y escribir asíncronamente, ofrecen IOPS muy bajas en cargas de trabajo de escritura sincronizada.

También tenga en cuenta que los RAID de software no se crean todos de la misma manera. El software RAID de Windows tiene una mala reputación, en cuanto al rendimiento, e incluso Storage Space no parece muy diferente. Linux MD Raid es excepcionalmente rápido y versátil, pero la pila de E / S de Linux se compone de múltiples piezas independientes que debe comprender cuidadosamente para extraer el máximo rendimiento. RAID de paridad ZFS (ZRAID) es extremadamente avanzado pero, si no está configurado correctamente, puede proporcionarle IOP muy pobres; espejo + rayas, por otro lado, funciona bastante bien. De todos modos, necesita un dispositivo SLOG rápido para el manejo de escritura sincrónica (ZIL).

Línea de fondo:

  1. Si sus cargas de trabajo no están sincronizadas con escritura aleatoria sensible, no necesita una tarjeta RAID
  2. Si necesita una tarjeta RAID, no compre un controlador RAID sin caché WB
  3. si planea usar el software SSD, se prefiere RAID, pero tenga en cuenta que para escrituras aleatorias sincronizadas altas necesita un SSD protegido contra pérdida de potencia (es decir: Intel S4600, Samsung PM / SM863, etc.). Para un rendimiento puro, la mejor opción es probablemente Linux MD Raid, pero hoy en día generalmente uso espejos ZFS rayados. Si no puede permitirse perder la mitad del espacio debido a los espejos y necesita funciones avanzadas de ZFS, elija ZRAID pero piense detenidamente en la configuración de sus VDEV.
  4. si, incluso usando SSD, realmente necesita una tarjeta RAID de hardware, use SSD con cachés protegidas contra escritura (Micron M500 / 550/600 tiene protección parcial, no realmente suficiente pero mejor que nada), mientras que las series Intel DC y S tienen una pérdida total de energía protección, y lo mismo puede decirse de las unidades SSD Samsung empresariales)
  5. Si necesita RAID6 y usará HDD mecánicos normales, considere comprar una tarjeta RAID rápida con 512 MB (o más) de caché WB. RAID6 tiene una penalización de alto rendimiento de escritura, y un caché WB del tamaño adecuado puede al menos proporcionar un almacenamiento intermedio rápido para pequeñas escrituras síncronas (por ejemplo: diario del sistema de archivos).
  6. si necesita RAID6 con discos duros pero no puede / no desea comprar una tarjeta RAID de hardware, piense detenidamente en la configuración de RAID de su software. Por ejemplo, una posible solución con Linux MD Raid es usar dos matrices: una pequeña matriz RAID10 para escritura de diarios / registros de DB, y una matriz RAID6 para almacenamiento sin procesar (como servidor de archivos). Por otro lado, el software RAID5 / 6 con SSD es muy rápido, por lo que probablemente no necesite una tarjeta RAID para la configuración de todos los SSD.
shodanshok
fuente
Muchas gracias por las excelentes explicaciones, no tenía idea de que las tarjetas RAID desactivaron el caché en los discos duros. Este no es el tipo de servidor que garantiza la inversión de más de $ 800 +, así que leeré un poco más sobre las configuraciones de RAID de software y probablemente iré con eso.
ItsJustMe
2
El OP está hablando de un hipervisor. RAID5 debería estar fuera de discusión, y la caché de escritura será imprescindible.
ewwhite
1
En realidad, incluso en 2016, un software RAID 5/6 de 6 unidades escribe a <25 MB / s, mientras que una tarjeta RAID de hardware adecuada a partir de 2010 escribe a> 500 MB / s. Esto está en los espacios de almacenamiento Intel RSTe y Windows. Simplemente no entiendo cuál es el cuello de botella en una CPU moderna.
Monstieur
1
El problema con el software RAID 5/6 es que las escrituras a menudo desencadenan una lectura-modificación-escritura, que a su vez ralentiza considerablemente los discos. Un controlador RAID de hardware habilitado para BBU puede combinar múltiples escrituras en un solo acceso / transacción de disco, mejorando en gran medida el rendimiento.
shodanshok
1
"[las lecturas aleatorias] cuando se usan con SSD, a menudo sobresalen" - Si el SSD no es un SSD empresarial (generalmente eso significa que no tiene un condensador para la protección de pérdida de energía) y no miente, entonces incluso los SSD pueden tener IOPS extremadamente bajos para operaciones como secuenciales fsync(). Consulte este artículo , que muestra que un SSD Samsung NVMe sin condensador solo hace ~ 250 fsyncs por segundo (yo también lo he medido). Los SSD con condensador proporcionan ~ 30 veces más fsyncs / s, un controlador RAID de hardware con batería 100 veces más.
nh2
7

Querrá una batería o una solución de caché con respaldo flash para cualquier controlador de hardware que compre. La mayoría lamenta no haberlo hecho .

Pero para responder a su pregunta, la mayoría de los controladores tienen relaciones de caché configurables ... por lo que el 100% de caché de lectura y el 0% de caché de escritura niega la necesidad de protección BBU. Su rendimiento de escritura simplemente apestará.

No puedo abordar su pregunta RAID de software porque depende. Linux MD RAID es diferente del RAID de software de Windows, que es diferente de algo como ZFS . Las soluciones como ZFS pueden funcionar mejor que el hardware porque aprovechan los recursos de RAM y CPU del servidor.

ewwhite
fuente
Por "el rendimiento de escritura simplemente apestará", ¿quiere decir que será casi lo mismo que RAID de software o RAID de hardware sin caché? ¿O hay una penalización por escribir más allá de eso si la tarjeta está dedicando el caché a la lectura?
ItsJustMe
Depende de lo que estés haciendo. Si no tiene una aplicación de escritura intensiva, entonces el impacto en el rendimiento puede no ser un problema.
ewwhite
Es un Proxmox HOST con máquinas virtuales Windows que se utilizan para el correo y el alojamiento web. No hay mucho uso de la base de datos, pero el servicio de correo electrónico probablemente tenga mucha actividad de escritura. Actualmente solo estoy debatiendo si tener una tarjeta de caché de solo lectura vale la pena a través de RAID de software.
ItsJustMe
Utilice un controlador RAID respaldado por Flash para la virtualización.
ewwhite
1
Ejecutamos un servidor de correo cyrus con alrededor de 4000 cuentas usando RAID de software. Las cuentas activas que lo alcanzaron cualquier día fueron más como 300 a 600. El rendimiento fue notablemente peor que nuestro servidor de correo cyrus principal con RAID de hardware y una BBU. La caché del controlador BBU y RAID brinda seguridad de datos, pero también brinda rendimiento. Esto se debe a que una vez que los datos llegan al controlador, pueden indicarle al sistema operativo que la escritura se ha completado. De lo contrario, tendría que esperar a que el disco duro indique que la escritura está completa. Esto ahorra ciclos de reloj significativos. Movido a RAID de hardware y resuelto.
labradort
7

El controlador RAID que tiene en mente es barato y es básicamente falso. Incluso depende de su placa base para proporcionar algunas funciones como memoria y no muchas placas principales tienen soporte para ello, lo que resulta en que no puede cargar el controlador.

Acerca de HW vs SW-RAID en sí. Ya no uso HW-RAID a menos que sea una caja con un logotipo de EMC, por ejemplo. Por todo lo demás, acabo de cambiar a SW-RAID muchas lunas nuevamente por algunas razones muy simples.

  1. Necesita hardware adicional y debe combinarlos. También debe hacer coincidir el firmware y mantenerlo sincronizado. Muchos discos no funcionarán correctamente y tendrás picos en tu latencia de E / S sin una razón clara.

  2. El hardware adicional es costoso, por lo que puede usar esos $ 1000 adicionales (controlador decente con dos / tres discos) para una solución pequeña mejor. Invierta en más discos y controladores estándar, memoria ECC, CPU más rápida. Y un disco de repuesto en el sitio tal vez si planea ejecutarlo por más tiempo que el período de garantía o no desea pagar las tarifas expresas por envío nocturno.

  3. La actualización es una tarea difícil ya que necesita realizar un seguimiento de los parches del sistema operativo y el firmware tanto para el disco como para el controlador. Puede dar lugar a una situación en la que la actualización / actualización ya no sea posible.

  4. En formatos de disco. Suficientes proveedores utilizan un diseño interno para almacenar datos vinculados a una revisión de su combinación de hardware y firmware. Esto puede dar lugar a una situación en la que una pieza de repuesto hace que sea imposible acceder a sus datos.

  5. Es un SPOF y un cuello de botella. Tener solo un controlador detrás de un solo puente PCI no le brinda el rendimiento y la redundancia que realmente necesita. Con esto también viene a que no exista una ruta de migración para migrar datos a otro conjunto de discos fuera del alcance de los controladores.

La mayoría de estos puntos se han solucionado con las nuevas generaciones de software o soluciones SW-RAID como ZFS y BtrFS. Tenga en cuenta que al final desea proteger sus datos y no acceder rápidamente, sino basura redundante.

Hspaans
fuente
3
Estoy en desacuerdo. Muchas personas están contentas con Dell, HP, IBM y los controladores RAID LSI de gama alta. Pero, sinceramente, la mayoría de los servidores de calidad moderna ya tienen soluciones RAID integradas, por lo que la idea de comprar un controlador individual está un poco anticuada. Las soluciones RAID de software también deben tener en cuenta las cargas de trabajo de escritura de baja latencia. ZFS tiene un ZIL, pero faltan muchas otras implementaciones de software RAID en ese frente.
ewwhite
2
También diferiría con su último párrafo, RAID es disponibilidad, no protección. La protección requiere copias de seguridad, no RAID.
Rowan Hawkins el
4

Pasé el último año (de vez en cuando hasta 2014-2015) probando varias configuraciones paralelas de CentOS 6.6 RAID 1 (duplicadas) usando 2 controladores LSI 9300 HBA y 2 controladores RAID LSI 9361-8i con sistemas basados ​​en lo siguiente: 2U Supermicro CSE- Chasis 826BAC4-R920LPB, placa base ASUS Z9PE-D16, 2 procesadores Intel Xeon E5-2687W v2 de ocho núcleos a 3,4 GHz, Seagate ST6000NM0014 duplicado SAS de 6 TB, 12 Gbs, 512 GB de RAM. Tenga en cuenta que esta es una configuración totalmente compatible con SAS3 (12 Gbps).

He revisado artículos escritos sobre software de ajuste y he usado el software RAID de Linux durante más de 10 años. Al ejecutar pruebas de E / S básicas (dd-oflag = direct 5k a archivos 100G, hdparam -t, etc.), el RAID de software parece apilarse favorablemente a la incursión de hardware. El RAID de software se refleja a través de HBA separados. He ido tan lejos como para hacer pruebas con las configuraciones estándar de kernel CentOS 6, kernel-lt y kernel-ml. También probé varios ajustes de mdadm, sistema de archivos, subsistema de disco y o / s sugeridos por una variedad de artículos en línea escritos sobre RAID de software de Linux. A pesar del ajuste, las pruebas, el ajuste y las pruebas, cuando se ejecuta en un mundo de lectura, el sistema de procesamiento de transacciones (que tiene una base de datos MySQL u Oracle), descubrí que ejecutar un controlador RAID de hardware produce un aumento de 50 veces en el rendimiento.

Durante muchos, muchos meses no estaba convencido de que RAID de hardware podría ser mucho mejor, sin embargo, después de una exhaustiva investigación sobre RAID de software Linux, pruebas y ajustes, esos fueron mis resultados.

Brent
fuente
2

La mayoría de los escritores aquí ignoran el " agujero de escritura ". Esta es la base que permite clamar por unidades de respaldo de batería de RAID de hardware frente a la ausencia de tal para RAID de software. Bueno, por ejemplo, la implementación de RAID de software de Linux admite mapas de bits de operaciones de escritura o vuelve a calcular la "paridad" en caso de apagado no limpio. ZFS siempre se esfuerza por escribir con franjas completas para evitar esta inconsistencia o posponer su revisión. Entonces, como resumen, el RAID de software lo suficientemente inteligente hoy en día es a menudo lo suficientemente bueno como para usarse en lugar de "quién sabe qué hay dentro" llamado "RAID de hardware".

En cuanto a la parte de la pregunta sobre el caché, realmente no importa tanto, porque el sistema operativo en sí mismo puede ser mucho más grande que el adaptador "hardware".

poige
fuente
1
Esta es otra razón para evitar las tarjetas RAID de hardware sin una caché WB protegida adecuada. Una nota sobre Linux MD Raid: no es totalmente inmune al agujero de escritura. Como no tiene protección contra pérdida de energía, en el caso de una pérdida repentina de energía, eventualmente se perderán datos (piense en datos en tránsito y / o escrituras parciales). Claro que esto sucederá incluso en un escenario de disco único, pero la naturaleza de paridad o RAID5 / 6 amplifica esto. En el peor de los casos, los metadatos del sistema de archivos crónico pueden corromperse, sin embargo, los sistemas de archivos modernos son lo suficientemente resistentes como para recuperarse bastante bien. Sin embargo, algunos datos pueden perderse.
shodanshok
@shodanshok, estás totalmente equivocado. Piensa
poige
1
Muchas baterías, si se mantienen en buen estado, pueden encender el caché de WB durante 24-96 horas, que es mucho tiempo para restaurar la energía, excepto en situaciones realmente extremas. Por otra parte, el controlador moderna cambió a la NVRAM (léase: flash) de memoria como el almacenamiento a largo plazo, por lo que en caso de un fallo de alimentación una pequeña batería / Supercap vaciará el contenido de la caché en una memoria no volátil que puede retener los datos durante meses o años En otra palabra, un controlador RAID BBU será prevenir RAID 5/6 agujeros en (casi) todas las circunstancias.
shodanshok
1
Dijiste que es inmune escribir hoyo. Los desarrolladores dicen que no lo es , aunque dijeron que no debería importar mucho en el uso en el mundo real.
shodanshok
1
Lo sentimos, pero que escribió: "Esta es la base que permite que clama por unidades de copia de seguridad Battey de RAID de hardware en comparación con ausencia de un ejemplo de RAID de software" . Esto está mal . Las tarjetas RAID de hardware adecuadas brindan protección adicional , y le dije varias veces que esta es la opinión de los mismos desarrolladores de LSR. Ahora te hago una pregunta: ¿ tu afirmación es buena o incorrecta? Como está mal, edite su respuesta u otro usuario puede ser engañado por esa tontería.
shodanshok
0

Yo trabajo esto todo el tiempo. Depende en gran medida de lo que estés haciendo y del nivel de ataque que apoyes. Un controlador SW que ejecuta un Raid 0 o 1 para el sistema operativo y nada especial está bien. ¡Ejecutar un controlador SW con un Raid 5 en una base de datos es un problema! ALGUNOS controladores de hardware le brindan un mejor rendimiento, pero depende de si puede almacenar en caché y el chipset del procesador de la tarjeta RAID. Además, no todos los controladores de software son compatibles con todos los sistemas operativos. Entonces, a veces puede que tenga que comprar un HW para ejecutar ESXi ... A menos que use conexiones sata.

El tipo loco III
fuente