web-dev-qa-db-fra.com

RSYNC est très lent (facteur 8 à 10) par rapport au CP lors de la copie de fichiers de NFS-Share à la Dir locale

J'ai un serveur Ubuntu fraîchement installé qui doit être le nouveau serveur de sauvegarde pour notre stockage VM. Le serveur dispose de 4 nics, 2 d'entre eux 10GBIT (en fait un Intel X540-T2 avec le dernier pilote disponible) qui sont utilisés pour se connecter au SAN. J'ai le NFS-Share monté localement et comparé des différences de vitesse lors de la copie d'un répertoire avec ~ 30 fichiers, environ 15 images VM et des fichiers journaux correspondants. Les images sont comprises entre 8 gb et 600 Go de taille.

À l'aide de:

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

bONHON montre par conséquent environ 600 MIB/s.

À l'aide de

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

bmon montre des paquets dans les premières secondes, s'arrête pendant environ 30 secondes et construit jusqu'à environ 60 à 75 mib/s. La CPU est d'environ 60%.

Que devriez-je changer pour utiliser rsync avec la même performance que cp?

19
soulpath

La façon de rendre RSYNC a la même performance que cp est de l'épeler "CP".

La différence entre les deux commandes est significative même si l'effet net peut être identique. En particulier, RSYNC fait un tas de lecture pour voir si un fichier ou une partie d'un fichier doit être copié.

Y a-t-il une raison pour que vous souhaitiez utiliser rsync? Parce que CP copie "aveuglément", vous verrez des performances brutes plus élevées. Si, pour un ensemble de conditions de déclenchement, le mécanisme "Delta-Transfer" de RSYNC est utilisé, vous verrez que les taux de transfert sont chuqués et la consommation de la CPU pour augmenter à peu près la manière que vous rapportez.

15
msw

Pour ce cas d'utilisation, rsync est une machine inutilement complexe. Si vous acceptez une synchronisation basée sur la comparaison des temps de modification de fichier et des tailles de fichiers, seules les métadonnées de système de fichiers doivent être collectées aux deux extrémités, comparées et les fichiers modifiés (ou nouveaux) doivent être copiés par le (local) cp commande.

Vous pourriez être intéressé par ce petit synchroniseur simple et simple qui fait: FITUS/ZALOHA.SH

Il est utilisé comme suit:

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

Pour une vitesse maximale de la phase d'analyse, vous voudrez peut-être sauter la génération des scripts de restauration: utilisez l'option --noRestore. De plus, si vous avez le rapide mawk installé, donnez l'option --mawk pour l'utiliser.

Zaloha.sh recueille des métadonnées de système de fichiers via find commandes. Une question restante concerne la performance de find sur votre part NFS ...

0
Petas