Copie arquivos grandes para várias máquinas em uma LAN

9

Tenho alguns arquivos grandes que preciso copiar de uma máquina Linux para cerca de 20 outras máquinas Linux, todas na mesma LAN o mais rápido possível. Quais ferramentas / métodos seriam melhores para copiar esses arquivos, observando que essa não será uma cópia única. Essas máquinas nunca serão conectadas à Internet e a segurança não é um problema.

Atualizar:

O motivo de perguntar isso é porque (como eu o entendo) atualmente estamos usando scpem série para copiar os arquivos para cada uma das máquinas e fui informado de que isso é "muito lento" e está sendo procurada uma alternativa mais rápida. De acordo com o que me disseram, a tentativa de paralelizar as scpchamadas simplesmente diminui ainda mais a velocidade devido a buscas no disco rígido.

Jonathan Callen
fonte
Defina "grande". Centenas de MB / GB / TB / mais?
Janne Pikkarainen
Atualmente, o total está em torno de 4 GiB (compactado), embora isso possa crescer no futuro.
Jonathan Callen
Ou seja, por qualquer meio, mesmo em 2011 - NÃO GRANDE. Dado um link de 1 gigabit que é trocado corretamente (padrão em 2011), é bastante rápido de realizar. Executá-lo de um servidor 10g (não que raro, mesmo em 2011) ... bem;)
TomTom

Respostas:

27

BitTorrent. É como o Twitter implementa algumas coisas internamente.

http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html (link do arquivo da web)

mfinni
fonte
3
Além da minha resposta (que eu acho que fará um bom trabalho, se você puder implementá-la), a resposta abaixo para o NFS é muito boa. Um bom servidor NFS deve armazenar em cache os arquivos para que você não continue batendo no disco. Além disso, com isso, não copie os arquivos do servidor para os clientes. Inicie-o a partir do cliente e deixe o cache do servidor NFS ajudar.
mfinni
1
Certifique-se de experimentá-lo em um ambiente de não produção, na apresentação que eles dizem (iirc) fez com que alguns comutadores sofressem muito durante as primeiras implantações, devido ao número de pacotes trocados.
Shadok 18/11/11
1
@psusi Por que você diz que precisa enviar todos os dados 20 vezes? Depois que os outros pares tiverem parte do arquivo, eles poderão começar a enviar as partes que eles têm para os outros pares.
Jonathan Callen
2
O problema para o OP não é a LAN, é o disco no servidor central.
mfinni
1
@ pSusi - o multicast certamente seria outra resposta válida. Poste isso como uma resposta, não como uma batida na minha resposta.
mfinni
12

E o UFTP , ele usa multicast para entregar arquivos sobre UDP para vários clientes ao mesmo tempo. Não é para todos e não sou especialista nisso, mas parece que faz o que você deseja.

Chopper3
fonte
1
Isenção de responsabilidade: Isso exigirá equipamentos compatíveis com multicast.
user606723
Eu esperava que isso estivesse na mesma vlan - reduzindo o impacto desse uso.
Chopper3
@ user606723: Tudo não é moderno? Talvez algum lixo de consumidor não consiga, mas eu não encontro nada com multicast quebrado há algum tempo. Muito usa-o nos dias de hoje. Eu acho que o Windows Active Directory ainda usa multicast.
Zan Lynx
Na verdade, não tenho experiência com esse @ZanLynx. Eu sei que muitos escritórios / laboratórios de informática usam comutadores de consumidor / não gerenciados no último salto. Como esses switches se comportarão com multicast?
user606723
3

Você tentou copiar esses dados rsync? Se você possui uma LAN de 1 Gbit ou mais rápida, copiar acima de 4 * 20 GB não deve ser um problema.

Com que frequência essa cópia ocorrerá? Importa se leva alguns minutos para terminar?

Janne Pikkarainen
fonte
3

scp-tsunami é o caminho!

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

É comumente usado para distribuir imagens de disco em clusters de virtualização, seu desempenho é quase bittorrent, mas é mais simples de usar para uso diário.

Giovanni Toraldo
fonte
2

A configuração de um compartilhamento NFS e a retirada de cada máquina desse repositório compartilhado de arquivos grandes provavelmente seria o método mais rápido (o NFS é muito rápido e possui pouca sobrecarga).

Você pode adicionar uma NIC ou duas adicionais ao servidor de origem e uni-las para oferecer melhor rendimento.

A implementação pode ser uma tarefa cron simples em cada servidor de destino que busca cegamente o compartilhamento a cada hora / dia / qualquer que seja. Você também pode configurar um daemon para pesquisar novos arquivos; você também pode criar um script de uma sessão de controle para SSH (com pares de chaves) em cada caixa de destino e instruí-los a buscar o arquivo ao executar seu script.

gravyface
fonte
1
Acredito que meu antecessor tentou usar o NFS para isso e descobriu que (na época), o cache da RAM não era grande o suficiente para toda a transferência, o que estava fazendo com que a carga no disco rígido se tornasse o fator limitador em vez da rede Rapidez.
Jonathan Callen