lunes, 7 de mayo de 2012

solucion rsync con alto iowait

Al ejecutar rsync  o cp -r el iowait sube mucho la carga,  mas que procesamiento es porque el disco duro se encuentra ocupado leyendo todos los archivos a la vez.

Una opción que me agrada mucho es el comando scp,   este cuenta con un parámetro para limitar la cantidad de datos leídos por segundo ayudando mucho a hacer respaldos de varios G sin aumentar la carga del servidor

aquí un ejemplo


scp -r -P 1234  -l 2048 /datos/origen/*  usuario@123.123.123.123:/datos/destino


-r = recursivo
-P 1234 =  parámetro opcional para cambiar el puerto ssh del destino
-l 2048 = máximo 2048kbps  = 2Mbps
/datos/origen/*  = todos los archivos de esa carpeta
usuario = usuario :P
123.123.123.123 = IP destino,  si fuera copia interna la IP es 127.0.0.1
/datos/destino = carpeta destino, nota: esta ya debe de existir


claro que al pasar grandes volúmenes de información limitando su lectura hace que sea un proceso algo más lento, pero les digo con seguridad que son tiempos razonables.


--- Actualización 29 Mayo 2012 ----

Como habrán leído en los comentarios rsync también limita la transferencia  y con otras grandes ventajas como mantener permisos, usuarios, etc.

Ahora explicare en que caso conviene rsync y en cual es mejor scp.

Cuando utilizamos cp o rsync el proceso es:
1- Lee la ruta de todos los archivos involucrados
2- comenzar la transferencia de información.

Caso 1:
Servidor en Producción con alta carga de trabajo y/o procesador pequeño en donde hay que respaldar 10 archivos de 5G (total 50G);  aquí utiliza el comando de tu preferencia (scp o rsync), aunque posiblemente te sea mejor utilizar rsync para aprovechar todas sus cualidades.

Caso 2:
Servidor en Producción con alta carga de trabajo y/o procesador pequeño en donde hay que respaldar 100 mil  archivos de 5kb (total 50G); si utilizo rsync se alentara el servidor porque primero leerá a toda velocidad la ubicación de los 100mil archivos tanto en el origen como en el destino para después proceder a la copia de los mismos. En este caso tendríamos de 5 a 20min carga muy alta y lentitud en todo el servidor. Siendo la solución utilizar scp, si tardará mas tiempo tiempo ya que volverá a copiar todo pero no se notará que la carga de trabajo afecte al desempeño del servidor.

En la vida real fue probado con un celeron y un xeon 8 nucleos manejando mas de 300mil archivos a respaldar y que no afectará al desempeño de las aplicaciones que estaban en ejecución (web, mysql, correo, procesos en shell, etc), en ambos equipos rsync causo problemas de carga  y scp todo estable.










2 comentarios:

  1. También puedes usar rsync con el parametro --bwlimit=2048 que vendría siendo lo mismo.. la comodidad de rsync es que puedes preservar los permisos y fechas y puedes llevar un respaldo incremental sin tener que volver a copiar todo otra ves.. Saludos y gracias por tu blog..

    ResponderEliminar
  2. Saludos

    Efectivamente SI limita la transferencia de información, hace copia de permisos entre muchas otras grandes cualidades de rsync; pero si son varios miles de archivos tiene el problema que durante comparación inicial no se limita en cantidad de accesos haciendo que en ese instante suba demasiado el iowait.

    ResponderEliminar

Como bloquera archivos adjuntos que son virus en postfix o plesk

   Como bloquear adjuntos del correo en Plesk/Postfix   1- edita el archivo  /etc/postfix/main.cf   2- busca el parametro mime_header_checks...