Copie archivos grandes a múltiples máquinas en una LAN

9

Tengo algunos archivos grandes que necesito copiar de una máquina Linux a otras 20 máquinas Linux, todo en la misma LAN tan rápido como sea posible. Qué herramientas / métodos serían los mejores para copiar estos archivos, teniendo en cuenta que esta no será una copia única. Estas máquinas nunca estarán conectadas a Internet, y la seguridad no es un problema.

Actualizar:

La razón por la que pregunto esto es porque (según tengo entendido) actualmente estamos usando scpen serie para copiar los archivos en cada una de las máquinas y me han informado que esto es "demasiado lento" y se está buscando una alternativa más rápida. De acuerdo con lo que me han dicho, intentar paralelizar las scpllamadas simplemente lo ralentiza aún más debido a las búsquedas del disco duro.

Jonathan Callen
fuente
Definir "grande". ¿Cientos de MB / GB / TB / más?
Janne Pikkarainen
Actualmente, el total se encuentra en alrededor de 4 GiB (comprimido), aunque eso puede crecer en el futuro.
Jonathan Callen
Es decir, por cualquier medio, incluso en 2011, NO GRANDE. Dado un enlace de 1 gigabit que se conmuta correctamente (estándar en 2011), es bastante fácil de lograr. Ejecución de un servidor de 10 g (no es tan raro incluso en 2011) ... bueno;)
TomTom

Respuestas:

27

BitTorrent. Es cómo Twitter implementa algunas cosas internamente.

http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html (enlace a archivo web)

mfinni
fuente
3
Además de mi respuesta (que creo que hará un buen trabajo, si puede implementarla), la respuesta a continuación para NFS es muy buena. Un buen servidor NFS debe almacenar en caché los archivos para que no siga golpeando el disco. Además, con eso, no copie los archivos del servidor a los clientes. Inícielo desde el cliente y deje que la caché del servidor NFS le ayude.
mfinni
1
Asegúrese de probarlo en un entorno que no sea de producción, en la presentación que dicen (iirc) hizo que algunos switches sufrieran mucho durante las primeras implementaciones debido a la cantidad de paquetes intercambiados.
Shadok
1
@psusi ¿Por qué dice que tiene que enviar todos los datos 20 veces? Una vez que los otros pares tienen parte del archivo, pueden comenzar a enviar las partes que tienen a los otros pares.
Jonathan Callen
2
El problema para el OP no es la LAN, es el disco en el servidor central.
mfinni
1
@pSusi: la multidifusión ciertamente sería otra respuesta válida. Publique eso como una respuesta, no como un golpe en mi respuesta.
mfinni
12

¿Qué hay de UFTP? Utiliza multidifusión para entregar archivos a través de UDP a múltiples clientes a la vez. No es para todos y no soy un experto en eso, pero parece que hace lo que quieres.

Chopper3
fuente
1
Descargo de responsabilidad: esto requerirá un equipo que admita multidifusión.
user606723
Esperaba que esto estuviera en la misma vlan, reduciendo el impacto de este uso.
Chopper3
@ user606723: ¿No es todo moderno? Tal vez algunos consumidores basura no, pero no he encontrado nada con multidifusión rota en un tiempo. Demasiado lo usa en estos días. Creo que Windows Active Directory incluso usa multidifusión.
Zan Lynx
En realidad no tengo experiencia con este @ZanLynx. Sé que muchas oficinas / laboratorios de computación usan conmutadores no administrados / consumidores en el último salto. ¿Cómo se comportarán estos interruptores con la multidifusión?
user606723
3

¿Has intentado copiar estos datos rsync? Si tiene una LAN de 1 Gbit o más rápido, copiar más de 4 * 20 GB no debería ser un problema.

¿Con qué frecuencia ocurrirá esta copia? ¿Importa si tarda un par de minutos en terminar?

Janne Pikkarainen
fuente
3

scp-tsunami es el camino!

https://code.google.com/p/scp-tsunami/

Se usa comúnmente para distribuir imágenes de disco en clústeres de virtualización, sus rendimientos son casi bittorrent pero es más simple de usar para el uso diario.

Giovanni Toraldo
fuente
2

Configurar un recurso compartido NFS y hacer que cada máquina extraiga de este repositorio compartido de archivos grandes probablemente sea el método más rápido (NFS es muy rápido y tiene poca sobrecarga).

Puede agregar una NIC o dos adicionales al servidor de origen y unirlas para obtener un mejor rendimiento.

La implementación podría ser un simple trabajo cron en cada servidor de destino que extrae ciegamente del recurso compartido cada hora / día / lo que sea. También puede configurar un demonio para sondear nuevos archivos; también puede simplemente guiar una sesión de control a SSH (con pares de claves) en cada cuadro de destino e indicarles que busquen el archivo cuando ejecuten su guión.

salsa
fuente
1
Creo que mi predecesor intentó usar NFS para esto y descubrió que (en ese momento), la memoria caché de RAM no era lo suficientemente grande para toda la transferencia, lo que hacía que la carga en el disco duro se convirtiera en el factor limitante en lugar de la red velocidad.
Jonathan Callen