Si tiene dos unidades físicas:
RAID0: rápido pero sin redundancia. Cualquier error de unidad matará a toda la matriz. Algunas personas colocan almacenamiento temporal en RAID0 (es decir, tempdb en MSSQL), pero todavía consideraría esto peligroso, ya que no perderá ningún dato significativo si la matriz se cae y tendrá una interrupción del servidor hasta que se repare la situación.
RAID1: vaya a esto si tiene dos unidades. No hay un beneficio en el rendimiento de escritura, aunque puede ver un aumento en el rendimiento de lectura con un buen controlador. La característica clave de RAID1 es sobrevivir a la muerte de una de las unidades.
Si tiene tres unidades físicas:
Sus opciones son RAID5, el RAID10 de 3 unidades no estándar (o RAID1E como se refieren los controladores de IBM) si es compatible. Por supuesto, podría usar RAID1 y mantener la unidad adicional como repuesto para cuando uno de los otros falla, pero de todos modos debe mantener los repuestos en un entorno de misión crítica, por lo que esto es evidente.
RAID5 ofrece más espacio que RAID10 (vale dos unidades en lugar de una y media) pero tiene un problema potencial de rendimiento de escritura, ya que por cada bloque escrito, el controlador necesita leer el bloque de paridad, actualizarlo y volver a escribirlo. Este problema de rendimiento de escritura se puede duplicar para las escrituras de la base de datos, ya que hay al menos dos escrituras para cada actualización: una en el registro de transacciones y otra en las áreas de datos reales. Como el espacio es barato en estos días, recomendaría RAID10 de 3 unidades si es compatible para un mejor rendimiento de escritura. El software RAID de Linux ofrece esto, al igual que muchos controladores de IBM (lo llaman RAID1E). También puede encontrarlo con otros nombres, ya que no se considera una disposición estándar, por lo que no tiene un nombre estándar.
Tanto R5 como R10 sobre tres dan la misma redundancia (cualquier unidad puede fallar a la vez y la matriz sobrevivirá) y métricas de rendimiento de lectura similares (similar a una matriz RAID0 de dos unidades).
Si tiene cuatro unidades físicas:
Si crea solo una matriz, existen dos opciones (ignorar las variaciones "con repuesto dinámico"): RAID6 y RAID10 "tradicional" (un RAID0 de RAID1s).
Ambos dan el mismo espacio (dos unidades de sus cuatro). RAID6 ofrece una mayor redundancia ya que dos unidades pueden fallar en un momento en el que RAID10 solo puede sobrevivir a cuatro de las seis posibles situaciones de dos unidades desaparecidas. Ambos ofrecen un rendimiento de lectura simialr, pero RAID6 tiene un problema de rendimiento de escritura similar al de RAID5 (lo mismo en un buen controlador, aunque puede ser más lento que RAID5 en un controlador defectuoso o con RAID de software dependiendo del sistema operativo y las capacidades de control de E / S. RAID10 es generalmente se prefiere para bases de datos por razones de rendimiento: si necesita redundancia adicional, puede usar seis unidades y tener un RAID0 o 2 RAID1 de 3 unidades.
Una vez que tenga cuatro o más unidades, las cosas se vuelven más interesantes, ya que podría tener un par separado de matrices RAID1. Esto puede ofrecer importantes beneficios de rendimiento con los discos giratorios al mantener sus almacenes de datos en una matriz y los registros de transacciones en otra; esto puede reducir considerablemente los movimientos de la cabeza en algunos casos y los tiempos de búsqueda debido al acceso "aleatorio" son un verdadero asesino del rendimiento. Para un almacén de datos, suponiendo que esto verá muy pocas escrituras en términos relativos, dividir los registros de transacciones de los archivos de datos puede tener un beneficio más limitado, pero es posible que aún desee considerar múltiples matrices y, en su lugar, particione sus datos sobre ellas para un rendimiento de lectura potencialmente mejor .
Si tiene más de cuatro unidades:
Sus opciones se abren aquí y realmente depende de cuáles son sus datos y cuáles son sus actualizaciones / cargas de carga / patrones esperados. Por ejemplo, una vez que nuestros servicios se ejecutan en unidades de 12 ~ 70 Gb:
- 4x como RAID10 para las áreas del sistema (SO, SQL Server (MSSQL en nuestro caso), swap, tempdb).
- 4x como RAID10 para los archivos de datos
- 4x como RAID10 para los registros de transacciones
Tempdb se mantiene en la matriz del sistema. Podríamos moverlo a las otras dos matrices y simplemente ejecutar la matriz del sistema como 2 unidades en RAID1 ya que la velocidad adicional no es muy necesaria para los fragmentos del sistema (ya que eso solo es realmente significativo durante el arranque o al intercambiar y nos aseguramos de que haya suficiente RAM para que nunca necesite intercambiarse), pero con la forma en que le pagamos al proveedor de alojamiento por ese conjunto de máquinas no nos costaría menos dejar caer las dos unidades. Las copias de seguridad también van a la matriz del sistema, antes de copiarse en las ubicaciones de copia de seguridad fuera del servidor, fuera del sitio y fuera de línea.
Por supuesto, esto es una exageración para algunas bases de datos (¡no tendría sentido ejecutar un pequeño servidor de blogs de esta manera!), Pero nuestra aplicación principal funciona muy bien con este arreglo.
Si tiene seis unidades, puede considerar tres matrices RAID1 o dos matrices RAID10 de tres unidades.
En general
Desafortunadamente, no existe una "práctica recomendada" realmente simple, ya que depende en gran medida del tamaño y los patrones de uso de su sistema. Las únicas reglas generales que puedo pensar o son:
- evite RAID5 y 6 a menos que sepa que el problema de rendimiento de escritura no lo afectará significativamente
- con cuatro o más unidades basadas en discos giratorios, considere dividir las cosas en múltiples arreglos para reducir los movimientos de la cabeza (el beneficio completo de las múltiples matrices no se aplicará a los SSD buenos, ya que no hay movimientos físicos de la cabeza para considerar, aunque puede ver alguna diferencia dependiendo de la estrategia de combinación de escritura del controlador de SSD, etc.)
- prueba, prueba y prueba de nuevo: siempre es bueno tratar de encontrar tiempo para verificar que la disposición elegida sea realmente óptima
¿RAID de hardware o software?
Solía ser que el rendimiento del RAID de software era inferior al del RAID de hardware para RAID 5 debido a los cálculos de paridad y a todos los arreglos debido a las interfaces lentas entre las unidades y la CPU. Con las CPU modernas, el problema de la paridad de cálculo no es realmente un problema, pero si tiene unidades de disco muy rápidas, RAID de hardware aún puede ganar si la velocidad total de las unidades puede llegar a alguna partecercano (dentro de un orden de magnitud, supongo) a qué tan rápido la máquina puede hablar con el controlador de disco. Si tiene una matriz RAID1 de cuatro unidades (es decir, cuatro copias de los mismos datos para mucha redundancia) con RAID de software, cada operación de escritura dará como resultado que el sistema operativo envíe cuatro lotes de datos al controlador de E / S, posiblemente secuencialmente, con un hardware controlador, el sistema operativo solo envía una solicitud de escritura y el controlador la envía a las cuatro unidades, probablemente en paralelo.
Un buen hardware RAID también puede ofrecer otras ventajas: algunos controladores de alta especificación tienen caché de escritura con respaldo de batería para que las escrituras pendientes no se pierdan en un corte de energía, incluso si su UPS falla, por ejemplo.
El RAID de software es obviamente más barato y más portátil, por lo que no está vinculado a un controlador en particular si tiene que mover los arreglos debido a una falla del controlador / máquina.
El RAID de hardware barato generalmente combina los aspectos negativos del RAID de software y hardware con pocos (o ninguno) de los beneficios de ambos, por lo que es mejor evitarlo.
Tiendo a usar RAID de software en nuestros servidores de desarrollo, prueba y UAT y buen RAID de hardware para servidores que ejecutan servicios en vivo orientados al cliente / público.