Sincronización de archivos multiproceso entre 2 servidores Linux

9

Por el momento, estoy ejecutando rsync para 2,2 millones de archivos en total de 250 GB y eso solo toma archivos de 700K en 6 horas.

¿Alguien conoce una herramienta como rsync que pueda hacer esto con múltiples hilos para que vaya más rápido?

Tom van Ommen
fuente
3
¿Tiene alguna razón para suponer que está vinculada a la CPU de alguna manera?
Chopper3
¿Qué opciones de rsync estás usando?
Kyle Smith
¿Estás usando ssh como transporte?
JimB
rsync -avSPp Y no hay problemas de CPU ni de disco.
Tom van Ommen
Y ningún transporte SSH acaba de ver algo en la web, no sé si es más rápido. Ya lleva años indexar todos los archivos.
Tom van Ommen

Respuestas:

7

Dudo que la CPU sea el factor limitante aquí. Lo más probable es que esté limitado tanto por el ancho de banda de la red para la transferencia como por el disco IO; especialmente latencia para todas esas llamadas estadísticas.

¿Puedes dividir la jerarquía del sistema de archivos en fragmentos más pequeños para procesar en paralelo?

¿Cuáles son los archivos de origen y qué los escribe o modifica? ¿Sería posible enviar cambios a medida que ocurren a nivel de aplicación?

JimB
fuente
Sincronización de archivos adjuntos de Zarafa, todos comprimidos por defecto. Podría ejecutar varias instancias, pero eso es menos eficiente que 10 hilos. Y la red es de 1GBit a 1GBit pero diferentes centros de datos, pero no debería ser un problema. Consiguió 24 discos SAS en el lado de origen y almacenamiento inteligente con SSD en el destino.
Tom van Ommen
1
@Tom van Ommen: ¿por qué crees que tienes CPU limitada? ¿Cómo es que los procesos múltiples son menos eficientes que los subprocesos si realmente tiene una CPU limitada?
JimB
1
@ Tom van Ommen, 10 procesos tienen más gastos generales que 10 hilos; sin embargo, bloquear estructuras de datos entre hilos es una pesadilla de codificación. A menudo es mucho más eficiente (para el tiempo del codificador) generar múltiples procesos y terminar con esto
Mike Pennington
1
@Guacamole: varios subprocesos podrían ayudar en algunas situaciones, pero si su enlace está saturado, no va a seguir adelante sin importar cuántos subprocesos tenga. Rsync usa hilos para concurrencia, y no está bloqueando internamente en IO.
JimB
1
@Guacamole: todo lo que estoy señalando es que si usa ssh como transporte, su rendimiento está limitado por ssh (específicamente la ventana de recepción estática, a menos que esté usando los parches ssh de HPN).
JimB
1

Si el subsistema de disco del servidor receptor es una matriz con múltiples discos, ejecutar múltiples procesos rsync puede mejorar el rendimiento. Estoy ejecutando 3 procesos rsync para copiar archivos a un servidor NFS (RAID6 con 6 discos por grupo de ataque) para saturar Gigabit Ethernet.

Este chico informa sobre un arnés básico de Python que genera múltiples procesos rsync http://www.reliam.com/company/featured_geek

sinysee
fuente
Lamentablemente, el enlace está muerto. ¿Podrías encontrarlo de nuevo?
P.Péter
1

He leído muchas preguntas similares a esta. Creo que la única respuesta real es dividir la copia / mover manualmente. IOps será el problema aquí. Si te hace sentir mejor, estoy en el proceso de mover ~ 200 millones de archivos que consumen más de 100 TB de espacio en disco.

Wayne
fuente