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.
oracle
best-practices
Eddie Awad
fuente
fuente
Respuestas:
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.
fuente
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:
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:
¿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.
fuente
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:
fuente
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.
fuente
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).
fuente
¿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í.
fuente