O rsync é muito lento (fator 8 a 10) comparado ao cp na cópia de arquivos do nfs-share para o dir local

17

Eu tenho um servidor Ubuntu recém-instalado, que deve ser o novo servidor de backup para nosso armazenamento em VM. O servidor possui 4 placas de rede, 2 delas de 10 Gbit (na verdade, uma intel x540-T2 com o driver mais novo disponível) que são usadas para conectar-se à SAN. Eu tenho o nfs-share montado localmente e comparei as diferenças de velocidade ao copiar um diretório com ~ 30 arquivos, cerca de 15 vm-images e arquivos de log correspondentes. As imagens têm tamanho entre 8 GB e 600 GB.

Usando:

cp -rf /mnt/nfs-share /backup-storage/

o bmon mostra consequentemente cerca de 600 MiB / s.

Usando

rsync -av /mnt/nfs-share /backup-storage/

O bmon mostra alguns pacotes nos primeiros segundos, pára por cerca de 30 segundos e acumula cerca de 60 a 75 MiB / s. CPU é de cerca de 60%.

O que devo / posso mudar para usar rsynccom o mesmo desempenho que cp?

caminho da alma
fonte

Respostas:

20

Eu acho que essas diferenças estão bastante bem estabelecidas entre cpe rsync. Veja este artigo como uma referência, intitulada: Uma olhada no desempenho do rsync .

excerto:
The four commands tested were:

    rsync $SRC $DEST
    echo $SRC | cpio -p $DEST
    cp  $SRC $DEST
    cat $SRC > $DEST/$SRC

The results for rsync, cpio, cp, and cat were:

user    sys     elapsed hog MiB/s   test
5.24    77.92   101.86  81% 100.53  cpio
0.85    53.77   101.12  54% 101.27  cp
1.73    59.47   100.84  60% 101.55  cat
139.69  93.50   280.40  83% 36.52   rsync

Eu uso rsyncdiariamente. Há coisas que você pode fazer para melhorar a situação.

Por exemplo, você pode tentar usar o -Wswitch:

-W, --whole-file            copy files whole (w/o delta-xfer algorithm)

Também sugiro ter certeza de que você tem as versões 3.x do rsync. Houve melhorias notáveis ​​quando passamos para as versões mais recentes.

slm
fonte
15

A maneira de fazer com que o rsync tenha o mesmo desempenho que o cp é soletrar "cp".

A diferença entre os dois comandos é significativa, mesmo que o efeito líquido possa ser o mesmo. Em particular, o rsync faz muita leitura para ver se algum arquivo ou parte de um arquivo deve ou não ser copiado.

Existe algum motivo para você querer usar o rsync? Como o cp copia "às cegas", você verá um desempenho bruto maior. Se, para um conjunto de condições de acionamento, o mecanismo "delta-transfer" do rsync for usado, você verá que as taxas de transferência caem e o uso da CPU aumenta consideravelmente da maneira que você relata.

msw
fonte
Estou ciente do comportamento, mas não esperava esse efeito. Eu pensei que, dado que o CPU-Power e o IOPS rsync devessem executar pelo menos 300 MiB / s, especialmente se o arquivo a ser copiado não existir. Ainda não terminei os testes. O backup com o rsync seria mais conveniente, mas também posso escrever um script usando cp, dd ou o que vier à mente. Agora, quero testar várias possibilidades em diferentes sistemas de arquivos para avaliar o que melhor se adequa.
soulpath
6
Você pode me chamar de empirista, mas quando suas expectativas e realidade discordam, geralmente não é a realidade que está errada. Há uma dúzia de razões pelas quais você pode estar sofrendo essa penalidade; até a intercalação de leituras e gravações em uma SAN pode ter impactos dramáticos no desempenho, dependendo dos detalhes do software.
msw
3
Eu não estava em dúvida sobre a realidade, apenas sobre o rsync - mas devido a essas diferenças, vou escrever um script usando cp e algumas somas de verificação. Obrigada pelo Conselho!
soulpath
Não, apenas não use o rsync em sistemas de arquivos em rede. Seu computador precisa baixar o arquivo inteiro, para que você perca todas as vantagens do rsync.
Giacomo Catenazzi
Infelizmente, esta resposta está errada em seus detalhes. Ao copiar entre sistemas de arquivos "locais" (e sim, uma montagem NFS é um sistema de arquivos local nesse contexto), rsync não lê o arquivo de destino ao copiar, a menos que você ative explicitamente esta operação contraproducente --whole-file. Nesta situação, é como um muito lento cp.
roaima