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

Victor Hugo dos Santos listas.vhs en gmail.com
Mar Dic 30 12:21:40 CLST 2008


Hola a todos, como van las fiestas para fin de año ???

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)


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

=======
	$ sudo fdisk -l
	
	Disco /dev/sda: 1198.2 GB, 1198295875584 bytes
	255 heads, 63 sectors/track, 145684 cylinders
	Unidades = cilindros de 16065 * 512 = 8225280 bytes
	
	Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
	/dev/sda1   *           1          32      257008+  83  Linux
	/dev/sda2              33        3168    25189920   8e  Linux LVM
	/dev/sda3            3169      145684  1144759770    5  Extendida
	/dev/sda5            3169       65416   500007028+  8e  Linux LVM
	/dev/sda6           65417      127664   500007028+  8e  Linux LVM
	
	[victor en blue etc]$ sudo lvs
	  LV      VG       Attr   LSize   Origin Snap%  Move Log Copy%  Convert
	  appl    VG_DATOS -wi-ao  20,00G
	  data    VG_DATOS -wi-ao 400,00G
	  raiz     VG_SYS   -wi-ao  20,00G
	  swap   VG_SYS   -wi-ao   4,00G
=======

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 ~)

bien.. hacendo esto, las particiones "/" y "/var/data" usarian el
sector 0 de los volumenes y estarian alinadas "case" que por defecto
con los strip size de los RAIDs

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)

* no tengo certeza, pero el strip size no funciona igual que el block
size de los sistemas de archivos, o si ?? por ejemplo..
se tengo configurado el FS con blocos de 4K y envio 3 archivos de 2K
entonces, utilizaria 3 blocos y estaria ocupando 12K en el FS.
se tengo configurado el strip size en 64K y envio 3 archivos de 40K ,
estes se escriben sequencialmente/en bruto en los discos, sin
perdidas.
no se si me explique bien mi duda !!! (sorry)

* hay algun comando/script para verificar en el FS el tamano promedio
de los archivos y en base a esto saber cual es el mejor block size que
deberia de utilizar ??



bueno, considerando que:
- las particiones estan alinadas con los volumenes
- el strip size sea 64K
- el arreglo en RAID 10
entonces, formateo las particiones con el siguiente comando:
	sudo  mkfs.ext3 -E stride=16 /dev/VG_DATOS/data

bueno, utilizo el valor 16 en base al calculo (stride = strip size /
block size) y se que el valor por defecto del block size para ext3 es
4K
pero sera este valor (4K) el mejor para BDs ?? alguna otra recomendacion ??


en el enlace (http://wiki.centos.org/HowTos/Disk_Optimization) indica
algunos parametros para montar las particiones:
	notime	creo que no es tan necesario para las BD, por que son pocos
archivos pero de gran tamano
	commit	suena interesante, principalmente por que hay la controladora
RAID tiene una bateria.
	writeback	la verdad, verdadera es que no entendi del todo. :-(

y todo esto ira en el fstab:
	/dev/VG_DATOS/data		/var/data	defaults,noatime,commit=120,data=writeback 0 0

pero son realmente seguros con la actual configuracion que tengo ??
comentarios ??


bien.. por ultimo (finalmente), en el segun y ultimo link (2 y 4)
comentan sobre la posibilidad de aumentar el "read-a-head" de los
dispositivos RAIDs..
en el segundo enlace menciona el comando: 	/sbin/blockdev --setra 8192 /dev/sdb
y en el ultimo enlace menciona el comando:	echo 1024 >
/sys/block/sda/queue/read_ahead_kb
que imagino que en esencia hacen exactamente el mismo..
pero hay alguna formula para obtener el mejor valor para el
"read-a-head" o es en prueba y error ??
y principalmente, cual es el mejor metodo (o archivo de configuracion)
para dejar este valor seteado como predefinido ??


ufff.. sorry por el largo del correo ...

salu2 y atento a cualquier comentarios.

-- 
-- 
Victor Hugo dos Santos
Linux Counter #224399



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