strip/block size y otros temas de RAID (largo)

Marcelo Espinosa Alliende marcelo en ubiobio.cl
Mie Dic 31 10:09:31 CLST 2008


El mar, 30-12-2008 a las 17:52 -0300, Aldrin Martoq escribió:
> On Tue, 2008-12-30 at 15:35 -0300, Victor Hugo dos Santos wrote:
> > 2008/12/30 Aldrin Martoq <amartoq en dcc.uchile.cl>:
> > > En mis pruebas, separar el arreglo "fisico" similar al _USO_ que tendra
> > > en el sistema operativo ayuda bastante. La primera vez hice lo mismo: un
> > > puro arreglo RAID-6 con 8 discos, al final era mas lento porque tenia
> > > varias aplicaciones escribiendo en el disco y si bien el arreglo _era_
> > > muy rapido, tenias lecturas/escrituras que estaban encoladas. Se veia a
> > > simple vista: todas las lucecitas constantemente moviendose de TODOS los
> > > discos.
> > > Esto es mas lento porque en el fondo tienes un puro disco con varios
> > > platos, esto influye en el seek time y se encolan si tienes varias
> > > aplicaciones "distintas" corriendo al mismo tiempo.
> > sospeche desde el principio !!
> > pero en este caso, estas maquinas estan dedicada unica y
> > exclusivamente a las BD..
> > asi, que creo que la particion que realmente tendra carga es la de datos.
> 
> Crea los grupos/arreglos que te recomende, despues en la marcha
> intercalas las bases de datos que tienen mas carga.
> 
> > > Me parece que RAID-5 seria lo mejor para performance/confiabilidad.
> > mmm.. en esto discrepo de vos.. por que en el caso del RAID 5, la
> > controladora debe de calcular las paridades (o como se llame).. y esto
> > consume recursos.. en el caso del RAID 10 (y otros), esto no ocurre..
> > generando una mejor performance en este aspecto.
> > http://es.wikipedia.org/wiki/RAID#RAID_1.2B0
> > Obs.: es la primera vez que veo que un articulo en español esta mucho
> > mas detallado que en ingles en la wikipedia !! :)
> 
> Haz la prueba, de hecho en el primer link que mandaste el tipo muestra
> la conversa en una lista y del primer link:
> http://lists.us.dell.com/pipermail/linux-poweredge/2007-December/034160.html
> 
> 10GB file:
> * RAID5 : 255MB/s
> * RAID10 : 224MB/s (???)
> 
> 2 x 10GB file (simultaneos)
> * RAID5 : 2 x 36MB/s
> * RAID10 : 2 x 31MB/s (ouch!)
> 

esos datos muestran que la controladora es deficiente, los datos
resultantes lo avalan, de hecho el mismo autor lo declara, no debieras
poner esto como ejemplo.

el problema de raid 5 es que no escala bien con las escrituras... como
lo mencionó Horst, el número IO's que raid 5 es capaz de manejar se
determina por la formula siguiente:
 [ IO_lecturas + (4 * IO_escrituras) ] / n°_discos

en el caso de raid 10 es
[ IO_lecturas + (2 * IO_escrituras)] / n°_discos

al incrementar el nº de discos mejora considerablemente la lectura
(analogía de los platos que mencionas) , y en el caso de la escritura
gana raid10 pues sólo se duplica la operación, no cuadriplica como en el
caso de raid5.

es posible determinar el nº de IO's que soporta cada disco, y a partir
de allí se puede determinar la capacidad máxima que puede soportar el
arreglo antes de que se produzca el fenómeno de encolamiento de IOS, lo
cual es fatal para el SO, los discos decentes publican los parámetros
críticos que permiten determinar su capacidad de manejo de IOs.

con una controladora decente ($$) raid10 debería tener mejor performance
de lectura pues incluso puede leer desde el mirror (podría llegar a ser
2x)

> La diferencia es que si tienes 4 discos por ejemplo, en:
> RAID 5 tienes el performance de 3 discos.
> RAID 10 tienes el performance de 2 discos.

eso no es correcto, dado que los datos de arriba no son representativos
de la realidad.

> 
> Otra ganancia es que con RAID10 necesitas un numero par de discos, con
> RAID5 tienes velocidad y 1 disco backup con cualquier numero de discos a
> partir de 3.

raid5 permite la falla de 1 disco, raid10 permite la falla simultanea de
2 discos siempre y cuando no falle el disco mas su espejo... es claro
que raid 10 es más costoso pues duplicas el raid_0 (stripe) pero escala
mejor.

> 
> El calculo de paridad es muy simple (XOR creo), es varias veces mas
> rapido que el disco.

de acuerdo, pero cuando el volumen de escritura _es alto_ raid5
simplemente es deficiente, en todo caso, el costo no está en calcular la
paridad (no te confundas), el costo está en las 4 operaciones IO que
debe realizar, la operación XOR será muy rápida, lo otro no :)

yo simplemente configuraría lo siguiente:

un arreglo raid1 para el sistema operativo (2 discos), de esta forma me
aseguro ante la falla de un disco y no perder tanto tiempo reinstalando,
aquí va el boot, /, etc... incluso hasta el SW de base de datos ( si es
que alcanza), pero como mencionó victor en su correo original, los
discos son de 400GB! por lo que no sería problema.

para el LOG de transacciones (escritura secuencial) también se
recomienda raid 1 dado que ofrece redundancia de bajo costo, solo al
hacer rollback o backup se lee esa cosa... y con una controladora buena
el tema anda bien, aquí hay que habilitar Write_Caching con batería de
respaldo.

a todo esto raid1 opera según lo siguiente:
	 [ lecturas + (2 * escrituras)] / 2

raid5 es recomendable _idealmente_ para volúmenes de solo lectura o de
muy baja escritura (bajo un 10%, ver abajo) básicamente por su bajo
costo de implementación (en discos me refiero), ejemplo, bases de datos
de consulta.

cuando el rendimiento de la base de datos es crítico y tiene un alto
volumen de escritura la mejor opción es Raid_10, hay mejores niveles de
RAID pero los costos de implementación son muy altos y las controladoras
caras. Si se cumple la condición de que el volumen de transacciones es
alto, conviene separar el LOG (escritura secuencial) hacia un arreglo
separado (RAID 1).

un ejemplo para ilustrar lo anterior.

carga de 500 I/Os con 10 discos para RAID5

 Lecturas    Escrituras            I/Os RAID_5  
----------------------------------------------------------        
  100,00%    0,00%                (500 + 0) / 10    = 50 
   90,00%    10,00%               (450 + 200) / 10  = 65 
   75,00%    25,00%               (375 + 500) /10   = 87,5 
   50,00%    50,00%               (250 + 1000) / 10 = 125 
    0,00%    100,00%              (0 + 2000) / 10   = 200 


Lecturas    Escrituras            I/Os RAID_10 
----------------------------------------------------------  
  100,00%    0,00%                (500 + 0) /10     = 50
   90,00%    10,00%               (450 + 100) / 10  = 55
   75,00%    25,00%               (375 + 250) / 10  = 62.5
   50,00%    50,00%               (250 + 500) / 10  = 75
    0,00%    100,00%              (0 + 1000) / 10   = 100

hace tiempo hice una planilla para ilustrar gráficamente (en clases) el
escalamiento de RAID donde resulta muy fácil evaluar el tema.


saludos. 

> 
> Tambien es posible que consigas mejor performance usando el raid por
> software de linux, ya que el algoritmo de ordenamiento ante varios
> lectores/escritores sera mejor que el de la controladora. El costo es
> que te consume CPU, pero si tienes tantos cores podrias ocupar uno de
> esos ;)
> 
>  
-- 
Marcelo Espinosa Alliende,  mailto:marcelo en ubiobio.cl
Jefe Depto de Servicios Computacionales
Dirección de Informática - Universidad del Bío-Bio
fono: +56 (41) 2731531,  http://marcelo.ubb.cl



Más información sobre la lista de distribución Linux