¿Cuál es la configuración RAID recomendada para una base de datos Oracle?

16

RAID (matrices redundantes de discos económicos) viene con diferentes configuraciones (RAID-0, RAID-1 ...). ¿Cuál es la configuración RAID recomendada que debo configurar y usar al instalar una base de datos Oracle? La base de datos se utilizará principalmente como un almacén de datos.

Eddie Awad
fuente
RAID0 y RAID1 son cosas totalmente diferentes. Utiliza RAID0 solo para rendimiento y RAID1 solo para tolerancia a fallas en caso de falla de la unidad.
Jonas
44
RAID0 nunca debe usarse en un servidor de base de datos. A menos, por supuesto, que te guste restaurar desde la cinta.
mrdenny

Respuestas:

13

Depende. Al mirar un almacén de datos, si no tiene un diseño específico en mente, la administración automática de almacenamiento puede ser una ruta excelente.

Considere la discusión en AskTom , Foros de OTN , Foros de OTN 2 y Foros de OTN 3 .

No hay una sola forma correcta de lidiar con las cosas, y las respuestas cambian en función de una serie de factores de hardware y red. Para descubrirlo usted mismo, precargue un almacén de datos de muestra (solo un concierto o dos, suficiente para jugar) en una máquina basada en ASM, en una SAN con la incursión virtualizada por Linux y en una máquina de incursión basada en hardware.

Al cronometrar los resultados de las consultas en los tres entornos, podrá descubrir qué metodología funciona mejor para su rendimiento. Implementé bases de datos utilizando ASN y ataques virtuales basados ​​en Linux, y un ataque virtual se comportó un poco mejor (hace unos años). Sin embargo, sospecho que eso fue en parte la forma en que se configuraron las unidades.

No hay una respuesta correcta singular. Si puede proporcionarnos más detalles sobre el tamaño y los requisitos de rendimiento, puede ser posible explorar varios casos de prueba.

--Editar--

Cada " grupo de discos " puede estar compuesto por uno o más discos, directorios o archivos en el subsistema apropiado. Oracle recomienda "Para obtener el mejor rendimiento y confiabilidad, elija un dispositivo RAID o un volumen lógico en más de un dispositivo físico e implemente la metodología stripe-and-mirror-everything (SAME)". al colocar archivos en un sistema de archivos. Eso dice que Oracle recomienda RAID 1 + 0.

Sin embargo, los grupos de discos administrados por ASM, "un grupo de discos de redundancia normal requiere un mínimo de dos grupos de fallas (o dos dispositivos de disco) si está utilizando duplicación bidireccional. El espacio efectivo en un grupo de discos de redundancia normal es la mitad de la suma de el espacio en disco en todos sus dispositivos "aparentemente proporciona reflejo automáticamente.

Estos dispositivos pueden estar compuestos por dispositivos RAID, etc. En las pruebas prácticas cuando estaba configurando almacenes de datos RAID, un simple RAID 5 virtual en el sistema de archivos proporcionó un rendimiento aceptable, y ASM adicional no agregó beneficios de rendimiento. En este tipo de tarea de optimización, primero identifique sus recursos y luego pruebe todas las configuraciones posibles, ya que a veces los resultados pueden ser extremadamente contradictorios.

Brian Ballsun-Stanton
fuente
1
La incursión virtual suena bastante divertida: /
jcolebrand
10

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.

David Spillett
fuente
5

La " base de datos Oracle Guía de ajuste del rendimiento " tiene un capítulo dedicado a la configuración de E / S . En breve:

  • Usar rayas (RAID de hardware, RAID de software, ASM)
  • No utilice RAID5 para archivar y rehacer registros
  • Alinear el tamaño del bloque del sistema de archivos y el tamaño del bloque DB
Benoit
fuente
4

En algunos casos, JBOD es la respuesta correcta (es decir, no RAID).

El problema es que si tiene grupos RAID demasiado grandes, no tiene la flexibilidad de especificar cómo se distribuye el almacenamiento físico dentro de la base de datos, como asegurarse de que los índices y registros de una tabla se almacenen en ejes separados, y asegurándose de equilibrar las escrituras en todos sus discos.

Puede usar el trazado de bandas (RAID0) para equilibrar las escrituras, pero si se trata de un gran grupo, no puede separar los índices de los registros.

La duplicación (RAID1) es tolerante a fallas y es más rápida para las lecturas (ya que puede leer desde el eje que no esté ocupado), pero puede ser más lenta para las escrituras ya que debe esperar a que se escriban ambas copias.

Nunca iría RAID5 o RAID6 en una base de datos. Si los datos son importantes, compre más discos y vaya con RAID1; RAID5 / 6 es lento (especialmente en software), y con el tamaño de los discos duros actuales puede llevar días reconstruir después de reemplazar discos fallidos para un gran grupo de discos ... sin mencionar que la forma en que la mayoría de los sistemas RAID5 / 6 manejan errores de paridad es simplemente recalcular la paridad ... pero las probabilidades son, la falla está en los datos, no la paridad, pero no tienes idea de dónde estaba la falla. (desafortunadamente, no creo que haya algo como LOCKSS para bases de datos)

...

El diseño más interesante que he visto en la base de datos en realidad implicaba tener dos particiones por huso: la parte más interna del disco se usaba para la base de datos de producción, las secciones superiores del disco se usaban para las copias de seguridad. (y se aseguraron de que una partición no estuviera respaldada en el mismo eje; creo que había varias bases de datos, por lo que cada una hizo una copia de seguridad en los discos de una diferente). Esto les dio la ventaja de distribuir las cosas a través de más ejes durante el día de trabajo, y luego por la noche, ejecutaban copias de seguridad.

Supongo que habría una recuperación más lenta si algo saliera mal y necesitara restaurar, ya que tendría algunas lecturas del disco externo mientras las bases de datos están en uso durante el día, pero siempre hay compensaciones en todo.

...

Entonces, de todos modos, el punto que estoy tratando de hacer es que no hay una respuesta única que se adapte a cada situación. Si lo hubiera, los DBA se quedarían sin trabajo y las empresas comprarían dispositivos de base de datos preconstruidos.

Las bases de datos con las que trato son lo que mi jefe se refiere como 'DESGASTADO': Escribir una vez, Leer nunca; bromea, pero "almacén de datos" puede significar cualquier nivel de actividad ... He visto algunos que se cargaron de cinta todas las noches / semana (y eran solo copias de la instancia de OLTP, y nos ayudaron a verificar que las cintas fueran buenas) y Se realizaron trabajos de análisis masivo en ellos, y otros donde hay un flujo constante de entrada y lecturas ocasionales, pero no una competencia real por los recursos.

Joe
fuente
1
Grr por no tener votos a favor. Volveré a esta noche, porque me gustan mucho tus puntos. También soy un gran admirador de JBOD, o preferiblemente muchos pares RAID1.
jcolebrand
@jcolebrand: en realidad, después de publicar esto, leí sobre 'ASM' que mencionó Brian Ballsun-Stanton, y parece que Oracle está manejando la duplicación y el trazado de bandas en lugar del nivel de hardware / SO / FS, por lo que hicimos puntos similares, pero dio una mejor solución para las recientes instalaciones de Oracle.
Joe
Lo que requiere un JBOD tal como lo recomendó, ¿sí?
jcolebrand
@jcolebrand: más o menos. (sería aconsejable, pero no creo que sea necesario )
Joe
3

Mi recomendación para servidores es siempre RAID 5 . El tiempo y el esfuerzo dedicados a recuperar su primer disco duro fallido siempre serán memorables. Si configura matrices RAID, le recomiendo que estandarice en un solo tamaño de unidad y guarde 2 discos duros de repuesto en la sala de servidores. Una unidad va mal? Coloque uno de los reemplazos (y deje que la matriz se reconstruya). He visto que las matrices RAID caen con fuerza porque una segunda unidad se estropeó mientras esperaban a que llegara la primera (al día siguiente la entrega aún era demasiado tarde).

Tangurena
fuente
Pero cambiar los discos duros no es el dominio del DBA, ¿verdad? El monitoreo de los discos para la vida útil y la tasa de fallas es para las herramientas automatizadas de la multitud SF. No dupliquemos el trabajo y destruyamos los motivos de especialización. Nos encontramos DBA después de todo;)
jcolebrand
Raid 5 implementado donde? ¿Hardware? ¿Software? ¿Oráculo? ¿En cuántos discos? ¿Qué pasa con la matriz de unidades recomendada por Oracle? ¿No es esto para lo que están los redo archivar registros?
Brian Ballsun-Stanton
2
RAID5 puede tener problemas importantes de rendimiento de escritura. RAID10 es más común para servidores DB.
David Spillett
@jcolebrand, muchas empresas para las que he trabajado tratan administradores de red == administradores de servidor == administradores de bases de datos. En algunos, solo hay unas pocas personas con acceso al centro de datos de producción, por lo que esas personas deben usar 2 sombreros a la vez. En muchos para los que he trabajado, los administradores del servidor no saben lo que está sucediendo, por lo tanto, me involucro, así que también tengo que conocer su trabajo.
Tangurena
Bueno, eso es genial y apesta al mismo tiempo. Me alegra tener la voz de la experiencia;) [PD: el mío ha sido el +1]
jcolebrand
2

¿Cuántos datos planea usar y con qué frecuencia va a leer y escribir del sistema? Hay mucha planificación en esto, suficiente para que algunas personas dediquen toda una carrera académica al tema.

Normalmente, le diría que vaya a Wikipedia y lea el artículo antes de continuar, ya que hay bastantes tipos de RAID y cada uno se usa mejor en un lugar diferente.

Los conceptos básicos son así:

RAID0

Bueno para los videojuegos. Malo para casi cualquier otra persona. No sería malo usar esto para un servidor de almacenamiento en caché que no necesita guardar datos por ningún período de tiempo. Una vez que falla un disco, el sistema está inactivo. Juego terminado.

RAID1

Excelente para la fiabilidad. No hay mucha capacidad de expansión. Bastante bueno en velocidad.

RAID5

La mezcla preferida entre RAID0 y RAID1 (más o menos).

Ahora, después de esto, realmente se convierte en algo que se debe preguntar en ServerFault debido al hecho de que es más la configuración del servidor que el diseño de la base de datos. Siempre discuta el rendimiento del servidor con el administrador del servidor. Para eso están allí. Si esto no fuera una versión beta privada, votaría para cerrarlo y migrarlo allí.

jcolebrand
fuente
2
Si bien ServerFault ciertamente no sería un lugar incorrecto para esta pregunta, aquí probablemente sea correcto. Los problemas de rendimiento de E / S son algo que un DBA debe tener muy en cuenta.
David Spillett
@David Estoy totalmente de acuerdo, pero hay una diferencia en tener en cuenta y especificarlo usted mismo. En mi experiencia, nunca ha sido una tarea de una sola persona cuando el sitio iba a ser grande y ocupado. Dos cabezas son mejores que una y todo eso
jcolebrand