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

Aldrin Martoq amartoq en dcc.uchile.cl
Mar Dic 30 14:29:30 CLST 2008


Hola Victor, muy largo lo que escribiste, tratare de aportar un poco ;)


On Tue, 2008-12-30 at 12:21 -0300, Victor Hugo dos Santos wrote:
> bien, estoy mirando algunos documentos de como mejorar la peformance
> de accesos a los discos duros:
> 1 http://thias.marmotte.net/archives/2008/01/05/Dell-PERC5E-and-MD1000-performance-tweaks.html
> 2 http://kbase.redhat.com/faq/docs/DOC-2893
> 3 http://wiki.centos.org/HowTos/Disk_Optimization
> 4 http://insights.oetiker.ch/linux/raidoptimization/
> 
> y tengo algunas dudas "existenciales" que tal vez alguno pueda
> ayudarme a entender
> Obs.:
> 1 -  El SO es un RHEL 5.2
> 2 - no tengo problemas de performance en estes momentos, pero quiero
> descubrir hasta donde puedo llegar (en mejoria) manteniendo los datos
> seguros.
> 3 - los 4 servidores que tengo para pruebas, son
> 	PowerEdge 2950 ( 2 x Intel(R) Xeon(R) CPU X5460 @ 3.16GHz) y 	32768 MB
> 	Controladora PERC 6/i Integrated (con bateria) con 6 (4 en el canal 0
> y 2 en el canal 1) discos Seagate Cheetah NS SAS (3Gb/s 400-GB y 16 MB
> de cache)
> 4 - dichos equipos estarian destinados a trabajar con BD (oracle y postgresql)

En mi experiencia, LVM es LENTO, segun las ultimas pruebas que hice (un
tarro parecido al que muestras). Cambia alguna particion (/var ?) y haz
alguna prueba sencilla y nos avisas, pues no tengo numeros!


> bien.. en estes momentos tengo un solo RAID-10 creado en la
> controladora que alberga todos los 6 discos y me genera un unico
> volume de 1,116.00 GB
> y dentro del sistema operativo tengo las siguientes particiones y LVM


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.

La solucion fue respaldar todo, rehacer el arreglo en 2 arreglos RAID-5
y dejar unas aplicaciones usando 1 grupo de discos y otras aplicaciones
usando el otro grupo de discos. La cola de lecturas/escrituras disminuyo
enormemente, y ahora las lucecitas eran a un lado o al otro.


Varios:
- recuerda que los discos de un lote son mas propensos a fallar una vez
que fallo el primero: apenas falle un disco comienza a buscar
reemplazos!
http://lwn.net/Articles/237924/
- luego: cuando tienes esta cantidad de espacio, busca donde dejar los
respaldos (data y APLICACIONES).



> despues de leer varios documentos en internet... pienso que el mejor seria:
> - crear en la controladora un volume de discos para las particiones
> "/boot" y "swap" (~ 5GB)
>  - crear en la controladora un volume de discos para la particion "/" (~ 20 GB)
>  - crear en la controladora un volume de discos para las particiones
> de datos "/var/data" con todo el espacio que sobre de los discos (unos
> 1.1TB ~)

Separalos en base al USO. Yo tenia varias maquinas virtuales, lo que
hice fue poner unas en 1 arreglo y otras en el otro arreglo; alternadas
segun cuando se usan.

Me parece que RAID-5 seria lo mejor para performance/confiabilidad.

Te recomiendo separar en dos grupos de 3 y 3 discos, en cada grupo crea
mas de un arreglo RAID (cada arreglo lo veras como un disco sdX). Luego
en la marcha, segun el uso, puedes mover un arreglo entre un grupo y el
otro. Algo asi:

 grupo 1    grupo 2
|D1 D2 D3| |D4 D5 D6| 
|  sda   | |  sde   |
|  sdb   | |  sdf   |
|  sdc   | |  sdg   |
+--------+ +--------+

Entonces, puedes dejar por ejemplo:
sda /           sde /backup
sdb /database1  sdf /database2
sdc swap        sdg /test


> aca me entra las siguientes dudas:
> * ahora, el strip size de los volumenes esta configurado en 64 K (con
> Write-Back y Adaptive Read Ahead habilitados tambien), pero cuales
> serian los mejores valores para:
>  - particion "/" en general
>  - base de datos oracle y postgresql (considerar instalación por
> defecto, sin cambios significativos)

Creo que todo esto lo sabriamos si tuvieramos DTrace, asi no tendriamos
que adivinar...

Por ejemplo, podrias sacar la distribucion del taman~o del block usado
_en tu aplicacion_, que es lo que importa al final:

http://wikis.sun.com/display/DTrace/io+Provider#ioProvider-Examples


Podrias intentarlo con systemtap o por ultimo strace y nos cuentas ;)


-- 
Aldrin Martoq <amartoq en dcc.uchile.cl>
http://aldrin.martoq.cl/videopodcast/ http://aldrin.martoq.cl/techblog/
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 197 bytes
Descripción: This is a digitally signed message part
Url        : http://listas.inf.utfsm.cl/pipermail/linux/attachments/20081230/130af770/attachment.bin


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