it-swarm-es.com

¿Debo ejecutar mi base de datos con una configuración RAID 5?

Escuché que el rendimiento de escritura de RAID 5 puede ser espantoso en ocasiones. Si bien quiero la redundancia que proporciona, no quiero sacrificar los tiempos de inserción/actualización de mi base de datos.

¿Es esto algo que debería preocuparme y, de ser así, cuál sería la recomendación para obtener redundancia con buen rendimiento de escritura?

13
Scott Saad

Normalmente se recomienda RAID 10 ya que la E/S es muy aleatoria. He aquí un ejemplo. Los cálculos son un poco simplificados, pero bastante representativos.

Digamos que tiene una matriz de 6 unidades y sus unidades pueden realizar 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 escenario es el 100% de escrituras. 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. Eso es un gran éxito.

Su patrón de lectura/escritura real estará en algún lugar entre estos dos extremos, pero esta es la razón por la que normalmente se recomienda RAID 10 para bases de datos.

Sin embargo, si no tiene un servidor de base de datos ocupado, incluso podría utilizar RAID-6. A menudo hago eso si sé que la base de datos no será un cuello de botella, ya que le brinda mucha más seguridad que RAID 10 o RAID 5.

23
TorgoGuy

Bases de datos transaccionales

RAID-5 es relativamente lento de escribir ya que el controlador necesita cargar suficientes datos para recalcular la paridad en una escritura. Las operaciones de escritura incurrirán en al menos cuatro operaciones de disco:

  • Leyendo en el bloque de paridad

  • Leyendo en el bloque antiguo (asumiendo que aún no está en caché) para XOR el valor con el bloque de paridad.

  • Escribiendo el nuevo bloque de paridad (antiguo bloque de paridad XOR antiguo bloque de datos XOR nuevo bloque de datos)

  • Escribiendo el nuevo bloque de datos.

Si el sistema no utiliza el almacenamiento en caché de escritura diferida, esto significa que todas estas opciones están en la ruta crítica para la finalización de E/S. A menudo, este es el caso de las escrituras en 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 El equipo RAID-5 no utilizó esta optimización y tuvo que volver a calcular la paridad de toda la banda.

RAID-1 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-5 se encuentra en algún lugar en el medio, con el volumen dividido en varios volúmenes RAID-5, que a su vez están seccionados. En un RAID-50 hecho de grupos rayados en un esquema 3 + 1, una escritura genera como máximo tres solicitudes de E/S de disco adicionales. Si lo desea, 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 conjunto). Los discos modernos son lo suficientemente grandes como para que la reconstrucción de una matriz pueda llevar bastante tiempo, lo suficiente como para que exista el riesgo de un segundo fallo de disco durante el proceso. 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 provocar la pérdida de datos. Se puede utilizar un truco similar a los esquemas RAID-50 para crear matrices RAID-60.

Finalmente, un solo par reflejado (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 la base de datos. Más sobre esto a continuación.

Si tiene una gran carga de trabajo de escritura, probablemente obtendrá una ganancia de rendimiento de un volumen RAID-10. Esto puede ser una ventaja, ya que probablemente pueda obtener el rendimiento requerido de una cantidad menor de discos físicos, suponiendo que los discos tengan suficiente espacio). Algunos elementos, como registros o áreas temporales en un servidor de base de datos, deben estar en volúmenes RAID-1 o RAID-10, ya que reciben mucho tráfico de escritura.

Registros

Los volúmenes de registro se caracterizan por un patrón de acceso a datos en su mayoría secuencial, y son esencialmente un búfer en anillo que consta de comandos del tipo 'escribir estos datos en este bloque'. El motor DBMS central los escribe como productores y los procesa como consumidor. por la función de lector de registro. Un solo par reflejado manejará una gran cantidad de tráfico de registros.

Sistemas de lectura pesada y servidores de archivos

En un sistema de lectura intensa, 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 en 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á menor.

En el pasado, los ahorros de costos en el disco pueden haber sido significativos, pero es menos probable que esto sea un problema ahora.

Caché de escritura diferida y RAID-5

En un SAN o un controlador RAID interno con un caché respaldado por batería, es posible que pueda habilitar el almacenamiento en caché 'Write-back'. Esto almacena en caché escribe y devuelve el control a la aplicación. La E/S es el controlador informa como completada. Sin embargo, no necesariamente escribe los datos en el disco inmediatamente. Esta función permite optimizar sustancialmente las operaciones de lectura/escritura de paridad RAID-5 y puede suavizar la penalización del rendimiento de escritura para los volúmenes RAID-5x.

Sin embargo, esto todavía conlleva un pequeño riesgo de problemas de integridad de los 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, no se recomienda el almacenamiento en caché de escritura diferida para los 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 el de la base de datos y RAID-10 permitirá un mayor rendimiento de escritura para la misma cantidad de discos, lo que podría reducir la cantidad de volúmenes de disco necesarios para admitir el sistema.

En algo como un almacén de datos, aún puede masticar espacio con tablas de hechos grandes y fuertemente 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 tendrán mucho trabajo durante el procesamiento ETL. Sin embargo, es probable que el ahorro de costes en disco sea bastante pequeño.

Depende de cuánto escribas.

Si se trata de una "aplicación web" bastante ligera, es poco probable que vea algún 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 RAID 5 se desbordará rápidamente y entrará directamente en el "rendimiento de escritura deficiente" de RAID 5.

Cada escritura de RAID5 provocará al menos 3 escrituras (más un cálculo de CRC). Cuando se almacena en búfer, esto es fino y rápido (pequeñas ráfagas cortas de actividad: actualizaciones e inserciones de un solo registro). Si se trata de escrituras sostenidas (grandes inserciones/actualizaciones masivas), se notará.

Es un equilibrio entre rendimiento y espacio. RAID 10 (espejo de unidades seccionadas) brinda rendimiento y resistencia, pero una reducción del 50% en la capacidad.

RAID5 ofrece una mayor capacidad, un buen rendimiento de lectura pero un rendimiento de escritura deficiente (grande).

3
Guy

Bueno, depende en gran medida de su tolerancia a fallos/riesgos. RAID5 tiene muchos problemas . Mi servidor de base de datos tiene actualmente dos unidades duplicadas, y si tuviera que ampliarlo, optaría por 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 base de datos con replicación en su lugar, maestro-maestro o repuesto dinámico o lo que sea. RAID solo ayuda contra fallas de disco, pero hay muchas más cosas que podrían salir mal en un servidor :)

3
mikl

Respuesta corta: no.

Respuesta larga: a menos que tenga una base de datos muy pequeña o requisitos mínimos, no. La recuperación de datos depende en gran medida de las operaciones de E/S del disco por segundo, y la sobrecarga de la creación de bandas consumirá el acceso al disco con el tiempo, especialmente con ejecuciones de consultas largas. 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) será mucho más.

2
Avery Payne

Para unas 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 incursión cinco - http://www.miracleas.com/BAARF/

2
Mark Regensberg

RAID 1, esa es mi respuesta final

Razones:

el par duplicado proporciona la redundancia adecuada para los discos fallidos y el RAID continúa funcionando hasta el último disco.

el par reflejado 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 su (s) índice (s)]. Puede obtener un rendimiento aún mayor duplicando sus controladores.

2
ninegrid

¿Cuál sería la recomendación para obtener redundancia con un buen rendimiento de escritura?

Una gran caché de escritura diferida. Aumente la RAM en su controlador RAID de hardware o la RAM disponible para su solución de software RAID (es decir, para MDADM de Linux, aumente la RAM del sistema, los globos MDADM para usar de otra manera) sistema no utilizado RAM como caché de escritura). Este consejo es válido para valores dados de "grande", si escribirá datos con frecuencia (¿el 5% del tiempo?) a una velocidad lo suficientemente rápida como para llenar el caché de escritura sin importar cuán grande sea, entonces esto hará poca diferencia.

1
David Hicks

Realmente se trata de separar sus archivos de datos, archivos de registro, de su archivo de sistema operativo. Los registros se escriben secuencialmente Los datos generan muchas lecturas aleatorias y algunas escrituras aleatorias

Al crear configuraciones RAID que admitan estas características, mejora enormemente el rendimiento

Raid 1: la duplicación es excelente para los archivos de registro. Raid 10 es bueno para sus archivos de datos. También vale la pena considerar separar TempbDB y las copias de seguridad en unidades separadas. 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á creando configuraciones de incursión específicas para cada LUN o depende de la cantidad de ejes.

1
CPU_BUSY

En el espíritu del artículo reciente del blog StackOverflow que dice que no deberíamos volver a presentar las respuestas que ya están disponibles en Internet, le señalo esto

RAID-5 no es único en la redundancia que proporciona, simplemente lo hace consumiendo menos discos adicionales que algunas alternativas. Puede elegir otra cosa con igual o mejor redundancia y mejor rendimiento de escritura

0

Ejecutar una base de datos desde RAID5 suele ser un error. Solo lo he visto hecho en dos casos: bases de datos bien diseñadas que eran de lectura intensiva con pocas escrituras, y bases de datos donde "perder 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 en el mundo real a menudo es peor debido a implementaciones inmaduras.

0
carlito