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

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

Eu tenho um servidor Ubuntu recém-instalado que deve ser o novo servidor de backup para nosso armazenamento VM. O servidor possui 4 placas de rede, 2 delas de 10 Gbit (na verdade, um Intel x540-T2 com o driver mais recente 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 cerca de 30 arquivos, cerca de 15 imagens vm e arquivos de log correspondentes. As imagens têm entre 8 GB e 600 GB de tamanho.

Usando:

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

bmon mostra consequentemente cerca de 600 MiB/s.

Usando

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

bmon mostra alguns pacotes nos primeiros segundos, para por cerca de 30 segundos e depois aumenta para cerca de 60-75 MiB/s. CPU está em torno de 60%.

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

Responder1

Acho que essas diferenças estão bastante bem estabelecidas entre cpe rsync. Veja este artigo como referência, intitulado: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. Existem 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 que você tenha as versões 3.x do rsync. Houve melhorias perceptíveis quando migramos para as versões mais recentes.

Responder2

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

A diferença entre os dois comandos é significativa, embora o efeito líquido possa ser o mesmo. Em particular, o rsync faz muitas leituras 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 mais alto. Se, para um conjunto de condições de acionamento, o mecanismo de "transferência delta" do rsync for usado, você verá que as taxas de transferência caem e o uso da CPU aumenta praticamente da maneira relatada.

Responder3

Para este caso de uso, rsyncé uma máquina desnecessariamente complexa. Se você concordar com a sincronização baseada na comparação de tempos de modificação de arquivos e tamanhos de arquivos, apenas os metadados do sistema de arquivos deverão ser coletados em ambas as extremidades, comparados, e os arquivos alterados (ou novos) deverão ser copiados pelo cpcomando (local).

Você pode estar interessado neste sincronizador pequeno e simples que faz isso:Fitus/Zaloha.sh

É usado da seguinte forma:

$ Zaloha.sh --sourceDir="test_source" --backupDir="test_backup"

Para velocidade máxima da fase de análise, você pode querer pular a geração dos scripts de restauração: use a opção --noRestore. Além disso, se você tiver o Fast mawkinstalado, dê a opção --mawkde utilizá-lo.

Zaloha.shcoleta metadados do sistema de arquivos por meio de findcomandos. Uma questão restante é sobre o desempenho do findseu compartilhamento NFS ...

informação relacionada