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?

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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.