Desempenho lento copiando arquivo grande pela rede (scp)

1

Eu tenho uma caixa do Linux que eu uso como servidor de arquivos. Eu tenho um cron job mensal que detalha o conteúdo da unidade de dados e, em seguida, copia-o via scp para outra máquina para manter em segurança. O tarball resultante tem cerca de 300 GB e normalmente leva cerca de um dia e meio para completar a cópia (através de uma conexão Wi-Fi 802.11g).

Hoje, notei que meu trabalho de backup ainda não havia sido concluído e está sendo executado há três dias. Ao verificar a máquina de destino, pude ver que apenas cerca de um terço dos dados foram copiados até o momento e parece estar crescendo a uma taxa de < 300 KB / s.

Usando iperf entre as duas máquinas, vejo que minha taxa de transferência de rede está em torno de 20Mbits / seg, o que eu espero de uma conexão 802.11g.

Usando dd if=srcfile of=/dev/null na máquina de origem, posso ler cerca de 45 MB / s da unidade de origem (uma unidade USB externa).

usando dd if=/dev/zero of=/destdrive/tmp.dat na máquina de destino, eu posso escrever cerca de 30MB / seg para a unidade de destino (unidade SATA interna). Parece um pouco lento para uma unidade SATA, mas não muito lento (e certamente não 300KB / seg lento).

Portanto, pareço ter descartado o throughput de rede e direcionado o throughput em ambas as extremidades, então, onde mais posso procurar a fonte do gargalo?

    
por Jeff Loughlin 23.11.2016 / 14:15

2 respostas

3

Por que você está usando scp para copiar arquivos grandes em primeiro lugar? scp tem sua própria sobrecarga (criptografia, verificação de autenticidade, etc).

Você pode usar rsync (o rsync é muito adequado para transferir arquivos grandes sobre o ssh porque ele é capaz de continuar transferências que foram interrompidas devido a algum motivo. Como ele usa funções hash para detectar blocos de arquivo iguais, o recurso continuar é bastante robusto.) ou alguma outra ferramenta.

Por favor, veja este post. Copiando arquivos grandes pela rede, mais rápido

Se você quiser usar o scp de qualquer forma, use traceroute e tcpdump e iftop para ver os pacotes da origem ao destino. Pode ser que você encontre algo incomum.

    
por 23.11.2016 / 14:35
1

Verifique se a opção -l não está habilitada para limitar a largura de banda. Além disso, parece que há um -v para dar uma ideia do que está acontecendo na próxima execução.

Verbose mode. Causes scp and ssh(1) to print debugging messages about their progress. This is helpful in debugging connection, authentication, and configuration problems.

Isso foi respondido antes. Cite a resposta.

scp is using interactive terminal in order to print that fancy progress bar. Printing that output to a file does not make sense at all, so scp detects when its output is redirected to somewhere else other than a terminal and does disable this output.

Resposta completa

link

Página man do SCP

link

    
por 23.11.2016 / 16:02