Optimizar linux-raid

raid

El software dmraid de linux en una de la herramientas mas potentes para aumentar el rendimiento y la seguridad de los discos duros de nuestros ordenadores. Hay distintos tipos raid 0, raid 10, raid 5como podeis ver en wikipedia. Os recomiendo echar una vistazo en guia-ubuntu.com.

1. Configurar raid en la instalación de ubuntu-server (o debian):

La mejor forma de configurarlo en Debian o Ubuntu es en el momento de la instalación del sistema. Os dejo un enlace a youtube

2. Monitorizando el sistema:

La herramienta fundamental para observar  el estado de nuestros raid desde la terminal es

cat /proc/mdstat

cat proc2

o para ver la salida en tiempo real del comando anterior podemos utilizar el cmoando watch

watch -n1 cat /proc/mdstat

para salir Ctrl + C

Para obtener una descripción detallada de nuestro raid (en este caso el md2)

mdadm --detail /dev/md2

mdmdetail

 

 

 

 

 

 

 

 

 

 

 

 

 

Si queremos analizar a que velocidad se mueven nuestros discos duros podemos instalar sysstat.

sudo apt-get install sysstat

y ejecutamos

iostat

o para verlo de forma continua

watch -n1 iostat

o para verlo de forma continua

iostat

3. Optimizar nuestro raid:

El problema fundamental del software-raid en linux es que después de haberlo montado todo, la sincronizacióny reconstrucción del raid es muy lenta, porque viene configurado para consumir los menos recursos posibles para que podamos instalar, operar,… mientras tanto. Cuando tienes un equipo relativamente potente, podemos reconfigurar algunos parámetros para que nuestro raid actue de forma mucho más rápida.

Las operaciones que vamos a realizar a partir de ahora conviene que las hagamos como root, así que en ubuntu tecleamos

sudo su

a. Aumentar los límites en sysctl.

El archivo de configuración /proc/sys/dev/raid/speed_limit_min sirve para fijar el  la velocidad mínima de reconstrucción cuando hay además operaciones de otro tipo en el raid, es decir, el uso habitual de linux. El parámetro por defecto es 1000.

El archivo de configuración /proc/sys/dev/raid/speed_limit_max sirve para fijar la velocidad máxima de reconstrucción cuando hay además otras operaciones además de la reconstrucción. El parámetro por defecto es 100,000.

Para ver los valores actuales, ejecutamos

sysctl dev.raid.speed_limit_min
sysctl dev.raid.speed_limit_max

Para aumentar la velocidad ejecutamos:

echo value > /proc/sys/dev/raid/speed_limit_min

o también

sysctl -w dev.raid.speed_limit_min=value

Como ejemplo, vamos a aumentar la velocidad mínimo en 50.000 Kb/seg :

echo 50000 > /proc/sys/dev/raid/speed_limit_min

o también

sysctl -w dev.raid.speed_limit_min=50000

Si queremos modificar los parámetros globales, podemos hacerlo añadiendo estas dos líneas al archivo /etc/sysctl.conf

################# NOTE ########################
##  CPU y memoria son los limites del sistema #
###############################################
dev.raid.speed_limit_min = 50000
## aconsejado para arrays de 4-5 ##
dev.raid.speed_limit_max = 2000000
## aconsejado para 6-12 discos ###
dev.raid.speed_limit_max = 5000000

Y Ejecutamos como root

sysctl -p

b. Modificar el «read-ahead» del raid a 32 Mib

elegimos el raid mdX al que queremos aplicar la optimización

blockdev --setra 65536 /dev/mdX
# Para los distintos raid de tu sistema##
blockdev --setra 65536 /dev/md0
blockdev --setra 65536 /dev/md1
blockdev --setra 65536 /dev/md2
blockdev --setra 65536 /dev/md3

3. Solo para raid 5 y 6 : Stripe-cache_size

Esta opción está solo disponible para el RAID5 y el RAID6 y multiplica la velcoidad de sincronización entre 3 y 6 veces. El valor por defecto es de 256. Loa valores válidos están entre 17 y 32768. Aumentar este número puede aumentar el rendimiento en algunas configuraciones aumentando el consumo de la memoria del sistema.

Utilizamos la siguiente fórmula

consumo de memoria = tamaño del archivo de paginación x número de discos x stripe_cache_size

Para fijar el stripe_cache_size en 16 MiB para /dev/md1, inctroducimos.

echo 16384 > /sys/block/md1/md/stripe_cache_size

Para fijar el stripe_cache_size en 32 MiB para /dev/md2, inctroducimos.

echo 32768 > /sys/block/md2/md/stripe_cache_size

4. Desactivar el NCQ en todos los discos:

Para los discos que formen parte de un software-raid ejecutamos el siguiente comando, sustituyendo sdX, por el disco asociado al raid.

echo 1 > /sys/block/sdX/device/queue_depth

Para cortar y pegar

echo 1 > /sys/block/sda/device/queue_depth
echo 1 > /sys/block/sdb/device/queue_depth
echo 1 > /sys/block/sdc/device/queue_depth
echo 1 > /sys/block/sdd/device/queue_depth
echo 1 > /sys/block/sde/device/queue_depth
echo 1 > /sys/block/sdf/device/queue_depth
echo 1 > /sys/block/sdg/device/queue_depth
echo 1 > /sys/block/sdh/device/queue_depth
echo 1 > /sys/block/sdi/device/queue_depth

#### etc….

 5. Opción Bitmap:

Los bitmap optimizan la reconstrucción después del fallo o la sustitución de un disco . Para activarlo en el raid mdX,  tecleamos el siguiente comando:

mdadm --grow --bitmap=internal /dev/mdX

Una vez completada la reconstrucción, lo desactivamos

mdadm --grow --bitmap=none /dev/mdX

Fuentes:

 

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.