%20comparado%20ao%20cp%20na%20c%C3%B3pia%20de%20arquivos%20do%20nfs-share%20para%20o%20diret%C3%B3rio%20local.png)
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 rsync
com o mesmo desempenho que cp
?
Responder1
Acho que essas diferenças estão bastante bem estabelecidas entre cp
e rsync
. Veja este artigo como referência, intitulado:Uma olhada no desempenho do rsync.
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 rsync
diariamente. Existem coisas que você pode fazer para melhorar a situação.
Por exemplo, você pode tentar usar o -W
switch:
-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 cp
comando (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 mawk
instalado, dê a opção --mawk
de utilizá-lo.
Zaloha.sh
coleta metadados do sistema de arquivos por meio de find
comandos. Uma questão restante é sobre o desempenho do find
seu compartilhamento NFS ...