web-dev-qa-db-fra.com

Optimisation des performances et du débit rsync - serveurs Gigabit directement connectés

J'ai deux serveurs Dell R515 exécutant CentOS 6.5, avec l'un des NIC Broadcom dans chacun directement connecté à l'autre. J'utilise le lien direct pour pousser les sauvegardes du serveur principal de la paire vers le secondaire tous les soirs en utilisant rsync sur ssh. En surveillant le trafic, je vois un débit de ~ 2 Mo/s, ce qui est beaucoup moins que ce que j'attendais d'un port gigabit. J'ai réglé le MTU sur 9000 des deux côtés, mais cela ne semble rien changer.

Existe-t-il un ensemble recommandé de paramètres et d'optimisations qui m'amèneraient au débit maximal disponible? De plus, puisque j'utilise rsync sur ssh (ou potentiellement juste NFS) pour copier des millions de fichiers (~ 6 To de petits fichiers - une énorme librairie Zimbra), les optimisations que je recherche devront peut-être être plus spécifiques pour mon cas d'utilisation particulier .

J'utilise ext4 des deux côtés, si cela est important

Merci

EDIT: J'ai utilisé les options rsync suivantes avec des résultats assez similaires:

rsync -rtvu --delete source_folder/ destination_folder/

rsync -avHK --delete --backup --backup-dir=$BACKUPDIR source_folder/ destination_folder/

Actuellement, je regarde le même niveau de mauvaises performances lors de l'utilisation de cp pour une exportation NFS, sur la même liaison par câble directe.

EDIT2: après avoir terminé la synchronisation, j'ai pu exécuter iperf et j'ai trouvé que les performances étaient d'environ 990 Mbits/s, la lenteur était due à l'ensemble de données réellement utilisé.

28
dyasny

Le nombre de fichiers et la surcharge de chiffrement SSH sont probablement les plus grands obstacles. Vous n'allez pas voir la vitesse du fil sur un transfert comme celui-ci.

Les options à améliorer comprennent:

  • Utilisation de rsync + SSH avec un algorithme de chiffrement moins coûteux (par exemple -e "ssh -c arcfour")
  • Élimination du cryptage entièrement sur le transport SSH avec quelque chose comme HPN-SSH .
  • Transferts basés sur des blocs. Instantanés, dd, envoi/réception d'instantanés ZFS , etc.
  • S'il s'agit d'un transfert unique ou peu fréquent, utilisez tar, netcat (nc), mbuffer ou une combinaison.
  • Vérifiez votre CentOS tuned-adm paramètres .
  • Suppression de l'atime de vos supports de système de fichiers. Examen d'autres options de montage du système de fichiers.
  • NIC envoyer/recevoir des tampons.
  • Réglage de votre commande rsync. Aurait -W, l'option fichiers entiers est-elle logique ici? La compression est-elle activée?
  • Optimisez votre sous-système de stockage pour le type de transferts (SSD, nombre de broches, cache de contrôleur RAID.)
25
ewwhite

Comme vous le savez probablement, la copie d'un grand nombre de petits fichiers (par exemple, des boîtes aux lettres utilisant le format MailDir ou similaire) n'est certainement pas la meilleure option pour tirer parti des interfaces à bande passante élevée. SSH n'est probablement pas le meilleur protocole de transport pour cela non plus. J'essaierais d'utiliser tar pour créer une archive tar sur l'hôte source avant de vous l'envoyer à l'hôte secondaire.

tar c /var/mail | ssh root@secondary-Host 'tar x -C /var/backups'

Si vous avez besoin d'une sauvegarde incrémentielle, vous pouvez essayer le -g options de tar. Si vous avez encore besoin de maximiser le throuput, essayez d'utiliser netcat au lieu de ssh.

4
alxgomz

Essayez de démêler les facteurs contributifs:

  • CPU (p. Ex. Dd de/dev/zero acheminé via le bouclage)
  • e/S de disque (par exemple, dd d'un fichier grand canalisé vers cat>/dev/null [canalisé pour éviter les courts-circuits])
  • e/S réseau physique (par exemple, dd canalisé vers l'autre machine)
  • etc.

et les tester indépendamment.

J'ai eu de mauvaises expériences avec les pilotes Broadcom, donc ma première suggestion est de tester la bande passante réseau utilisable avec: dd if=/dev/zero bs=1m count=10k | rsh backup_Host cat \> /dev/null

1
Scott Leadley