He escuchado que el rendimiento de escritura de RAID 5 puede ser terrible a veces. Si bien quiero la redundancia que proporciona, no quiero sacrificar los tiempos de inserción / actualización de mi base de datos.
¿Es algo por lo que debería preocuparme y, de ser así, cuál sería la recomendación para obtener redundancia con un buen rendimiento de escritura?
performance
raid
database
Scott Saad
fuente
fuente
Respuestas:
RAID 10 generalmente se recomienda ya que la E / S es muy aleatoria. Aquí hay un ejemplo. Los cálculos están un poco simplificados, pero son bastante representativos.
Digamos que tiene una matriz de 6 unidades y sus unidades pueden hacer 100 E / S por segundo (IOPS). Si tiene lecturas del 100%, se utilizarán las seis unidades y tendrá aproximadamente 600 IOPS para RAID 10 y RAID 5.
El peor de los casos es 100% escribe. En ese escenario, el rendimiento de RAID 10 se reducirá a la mitad (ya que cada escritura va a dos unidades), por lo que obtendrá 300 IOPS. RAID-5 convertirá cada escritura en dos lecturas seguidas de dos escrituras, por lo que obtendrá 1/4 del rendimiento o aproximadamente 150 IOPS. Ese es un gran éxito.
Su patrón de lectura / escritura real estará en algún lugar entre estos dos extremos, pero es por eso que RAID 10 generalmente se recomienda para bases de datos.
Sin embargo, si no tiene un servidor de base de datos ocupado, incluso podría hacer RAID-6. A menudo hago eso si sé que la base de datos no va a ser un cuello de botella, ya que le brinda mucha más seguridad que RAID 10 o RAID 5.
fuente
Bases de datos transaccionales
RAID-5 es relativamente lento para escribir, ya que el controlador necesita cargar suficientes datos para volver a calcular la paridad en una escritura. Las operaciones de escritura incurrirán en al menos cuatro operaciones de disco:
Lectura en el bloque de paridad
Lectura en el bloque anterior (suponiendo que aún no esté en caché) para XOR el valor con el bloque de paridad.
Escribir el nuevo bloque de paridad (bloque de paridad antiguo XOR bloque de datos antiguo XOR nuevo bloque de datos)
Escribir el nuevo bloque de datos.
Si el sistema no utiliza el almacenamiento en caché de reescritura, esto significa que todas estas opciones están en la ruta crítica para completar la E / S. A menudo, este es el caso con las escrituras de bases de datos; de hecho, Microsoft (por ejemplo) tiene un programa de certificación para equipos SAN para usar con el servidor SQL que requiere que los proveedores garanticen este comportamiento. A veces, los equipos RAID-5 más antiguos no usaban esta optimización y tenían que volver a calcular la paridad de toda la franja.
RAID-10 tiene un espejo para cada unidad y no necesita leer datos adicionales para calcular la paridad. Esto significa que las escrituras necesitan mucha menos E / S física.
RAID-50 se encuentra en algún lugar en el medio, con el volumen dividido en múltiples volúmenes RAID-5, que a su vez están divididos. En un RAID-50 hecho de grupos divididos en un esquema 3 + 1, una escritura genera como máximo tres solicitudes adicionales de E / S de disco. Si se siente tan inclinado, puede ver RAID-5 y RAID-10 como casos especiales de RAID-50. RAID-50 se utiliza principalmente para proporcionar grandes volúmenes en muchos discos físicos.
También existen otros esquemas de paridad como RAID-6 (un esquema de paridad con dos discos redundantes por juego). Los discos modernos son lo suficientemente grandes como para que la descomposición de una matriz pueda llevar bastante tiempo, lo suficiente como para que el riesgo de una segunda falla de disco durante el La reconstrucción es bastante significativa. RAID-6 mitiga este riesgo al tener un segundo disco de paridad, que requiere tres fallas de disco para causar la pérdida de datos. Se puede usar un truco similar a los esquemas RAID-50 para hacer matrices RAID-60.
Finalmente, un solo par duplicado (conocido como RAID-1) puede proporcionar redundancia y un rendimiento suficientemente bueno para algunas tareas. En particular, probablemente encontrará que RAID-1 le proporciona un rendimiento suficiente para una gran cantidad de tráfico de registro de base de datos. Más sobre esto a continuación.
Si tiene una carga de trabajo de escritura pesada, probablemente obtendrá un aumento de rendimiento de un volumen RAID-10. Esto puede ser una victoria, ya que probablemente pueda obtener el rendimiento requerido de un número menor de discos físicos, suponiendo que los discos tengan suficiente espacio). Algunos elementos, como los registros o las áreas de temporay en un servidor de base de datos, deben estar en volúmenes RAID-1 o RAID-10, ya que obtienen mucho tráfico de escritura.
Registros
Los volúmenes de registro se caracterizan por un patrón de acceso de datos mayormente secuencial, y son esencialmente un buffer de anillo que consiste en comandos a lo largo de las líneas de 'escribir estos datos en este bloque'. Son escritos como productores por el motor central DBMS y procesados como un consumidor por la función de lector de registro. Un solo par duplicado realmente manejará una gran cantidad de tráfico de registro.
Sistemas pesados de lectura y servidores de archivos
En un sistema con mucha lectura, como un almacén de datos, es posible que desee utilizar uno o más volúmenes RAID-5. En un servidor de archivos, los accesos al disco se realizarán en gran medida sobre la base de un archivo completo, por lo que las escrituras probablemente escribirán la mayoría de los bloques que forman el bloque de paridad de todos modos. En este caso, la penalización de rendimiento para RAID-5 será más ligera.
En el pasado, el ahorro de costos en el disco puede haber sido significativo, pero ahora es menos probable que sea un problema.
Caché de reescritura y RAID-5
En una SAN o en una controladora RAID interna con una memoria caché respaldada por batería, puede habilitar el almacenamiento en caché 'Reescritura'. Esta caché escribe y devuelve el control a la aplicación. El controlador informa la E / S como completada. Sin embargo, no necesariamente escribe los datos en el disco de inmediato. Esta facilidad permite que las operaciones de lectura / escritura de paridad RAID-5 se optimicen sustancialmente y puede suavizar la penalización de rendimiento de escritura para volúmenes RAID-5x.
Sin embargo, esto todavía conlleva un pequeño riesgo de problemas de integridad de datos. Se le ha dicho al sistema host que esta escritura se ha completado cuando este no es el caso. Es posible que una falla de hardware cree inconsistencias de datos entre (digamos) el registro y los volúmenes de datos en un servidor de base de datos. Por esta razón, el almacenamiento en caché de reescritura no se recomienda para sistemas transaccionales, aunque puede ser una ganancia de rendimiento para algo como un proceso ETL.
Resumen
El espacio en disco es tan barato hoy en día que los sistemas transaccionales probablemente deberían usar RAID-1 o RAID-10 para volúmenes de registro y RAID-10 para volúmenes de datos. Es probable que el tamaño del disco físico sea mucho mayor que la base de datos y RAID-10 permitirá un mayor rendimiento de escritura para la misma cantidad de discos, reduciendo potencialmente la cantidad de volúmenes de disco necesarios para soportar el sistema.
En algo así como un almacén de datos, aún puede masticar espacio con tablas de hechos grandes y altamente indexadas, por lo que puede obtener una pequeña ganancia de precio con volúmenes de datos RAID-5 o RAID-50. Sin embargo, los registros y tempdb aún deben colocarse en un volumen RAID-10, ya que probablemente obtendrán mucho trabajo durante el procesamiento de ETL. Sin embargo, es probable que el ahorro de costos en el disco sea bastante pequeño.
fuente
Bueno, depende en gran medida de su tolerancia a fallas / riesgos. RAID5 tiene muchos problemas . Mi servidor de DB actualmente tiene dos unidades duplicadas, y si tuviera que escalar eso, elegiría algo con más paridad, probablemente RAID6 o RAID10.
Además, si su aplicación es crítica para el tiempo de actividad, probablemente recomendaría tener dos servidores de bases de datos con replicación, maestro-maestro o repuesto dinámico o lo que sea. RAID solo ayuda contra fallas de disco, pero hay mucho más que podría salir mal en un servidor :)
fuente
Depende de cuánto escribas.
Si se trata de una "aplicación web" bastante ligera, es poco probable que vea un impacto en el rendimiento en RAID5.
Si está construyendo un almacén de datos de varios GB con ETL grandes, entonces el búfer de escritura en el RAID 5 se desbordará rápidamente y pasará directamente al "bajo rendimiento de escritura" de RAID 5.
Cada escritura RAID5 causará al menos 3 escrituras (más un cálculo CRC). Cuando está almacenado en el búfer, esto es bueno y rápido (pequeñas explosiones cortas de actividad: actualizaciones e inserciones de registros únicos). Si se trata de escrituras sostenidas (inserción / actualizaciones masivas grandes), se notará.
Es un equilibrio entre rendimiento y espacio. RAID 10 (espejo de unidades rayadas) proporciona rendimiento y resistencia, pero una reducción del 50% en la capacidad.
RAID5 ofrece mayor capacidad, buen rendimiento de lectura pero bajo rendimiento de escritura (grande).
fuente
RAID 1, esa es mi respuesta final
Razones:
el par duplicado proporciona una redundancia adecuada para los discos fallidos y el RAID continúa funcionando hasta el último disco.
el par duplicado produce un mayor rendimiento de E / S para las lecturas si coloca sus datos e índices con cuidado ... [sugerencia: use volúmenes separados para los datos y sus índices]. Puede obtener aún más rendimiento duplexando sus controladores.
fuente
Para algunas buenas guías de "por qué no", esto siempre fue muy popular entre los DBA de Oracle con los que he trabajado ...
La batalla contra cualquier Raid Five - http://www.miracleas.com/BAARF/
fuente
Respuesta corta: no.
Respuesta larga: a menos que tenga una base de datos muy pequeña o requisitos muy mínimos, no. La recuperación de datos depende en gran medida de las operaciones de E / S de disco por segundo, y la sobrecarga de las franjas consumirá el acceso a su disco con el tiempo, especialmente con largas ejecuciones de consultas. La mayoría de las bases de datos se ejecutan en una configuración de estilo RAID 10, o con volúmenes específicos que contienen particiones de los datos. Sí, RAID 10 le costará en escrituras, pero su rendimiento de lectura (con la configuración correcta) aumentará considerablemente .
fuente
Un gran caché de reescritura. Aumente la RAM en su controlador RAID de hardware o la RAM disponible para su solución RAID de software (es decir, para que MDADM de Linux aumente la RAM del sistema, los globos MDADM utilizarán la RAM del sistema que no se usaría como caché de escritura). Este consejo es válido para valores dados de "grande": si a menudo (¿el 5% del tiempo?) Escribe datos a una velocidad lo suficientemente rápida como para llenar el caché de escritura, sin importar cuán grande sea, esto hará poca diferencia.
fuente
Realmente se trata de separar sus archivos de datos, archivos de registro, de su archivo OS. Los registros escriben secuencialmente Los datos generan muchas lecturas aleatorias y algunas escrituras aleatorias
Al crear configuraciones RAID que admitan estos rasgos, usted mejora enormemente el rendimiento
Raid 1: la duplicación es ideal para los archivos de registro. Raid 10 es bueno para sus archivos de datos. También vale la pena considerar la separación de TempbDB y las copias de seguridad para separar las unidades. Agregar grupos de archivos es otra forma de aumentar el rendimiento. Cuando se trata de SAN, esto no está tan claro. Depende de si está construyendo configuraciones de banda específicas para cada LUN o si depende del número de ejes.
fuente
En el espíritu del reciente artículo del blog de StackOverflow que dice que no debemos volver a presentar las respuestas que ya están disponibles en Internet, le indico esto
RAID-5 no es único en la redundancia que proporciona, solo lo hace mientras consume menos discos adicionales que algunas alternativas. Puede elegir otra cosa con una redundancia igual o mejor y un mejor rendimiento de escritura
fuente
Ejecutar una base de datos fuera de RAID5 suele ser un error. Solo lo he visto en dos casos: bases de datos bien diseñadas que requieren mucha lectura y pocas escrituras, y bases de datos donde el "desperdicio de espacio" debido a RAID5 no era políticamente viable.
RAID5 destruirá el rendimiento transaccional.
Además, si está considerando RAID5, vea si puede hacer que RAID6 funcione. La confiabilidad teórica es mucho mejor, aunque la confiabilidad del mundo real a menudo es peor debido a implementaciones inmaduras.
fuente