Synchronisation de fichiers multithread entre 2 serveurs Linux

9

En ce moment, j'utilise rsync pour 2,2 millions de fichiers totalisant 250 Go et cela prend seulement 700 000 fichiers en 6 heures.

Est-ce que quelqu'un connaît un outil de type rsync qui peut le faire avec plusieurs threads pour qu'il aille plus vite?

Tom van Ommen
la source
3
Avez-vous des raisons de supposer qu'il est lié au processeur de quelque manière que ce soit?
Chopper3
Quelles options rsync utilisez-vous?
Kyle Smith
Utilisez-vous ssh comme moyen de transport?
JimB
rsync -avSPp Et il n'y a aucun problème de CPU ou de disque.
Tom van Ommen
Et aucun transport SSH n'a vu quelque chose sur le web, je ne sais pas si c'est plus rapide. Il faut déjà beaucoup de temps pour indexer tous les fichiers.
Tom van Ommen

Réponses:

7

Je doute que le processeur soit le facteur limitant ici. Vous êtes très probablement limité à la fois par la bande passante réseau pour le transfert et par les E / S disque; en particulier la latence pour tous ces appels de statistiques.

Pouvez-vous décomposer la hiérarchie du système de fichiers en petits morceaux à traiter en parallèle?

Quels sont les fichiers source et qu'est-ce qui les écrit ou les modifie? Serait-il possible d'envoyer des modifications à mesure qu'elles se produisent au niveau de l'application?

JimB
la source
Synchronisation des fichiers de pièces jointes Zarafa, tous compressés par défaut. je pourrais exécuter plusieurs instances mais c'est moins efficace que 10 threads. Et le réseau est de 1 Go à 1 Go, mais des centres de données différents, mais cela ne devrait pas être un problème. a obtenu 24 disques SAS côté source et un stockage intelligent avec SSD sur la destination.
Tom van Ommen
1
@Tom van Ommen - pourquoi pensez-vous que votre processeur est limité? Comment plusieurs processus sont-ils moins efficaces que les threads si vous êtes vraiment limité en CPU?
JimB
1
@Tom van Ommen, 10 processus ont plus de frais généraux que 10 threads; cependant, le verrouillage des structures de données entre les threads est un cauchemar de codage. Il est souvent beaucoup plus efficace (pour le temps du codeur) de simplement générer plusieurs processus et d'en finir
Mike Pennington
1
@Guacamole - plusieurs threads pourraient aider dans certaines situations, mais si son lien est saturé, il ne va plus continuer, peu importe le nombre de threads qu'il possède. Rsync utilise des threads pour la concurrence et ne bloque pas en interne sur IO.
JimB
1
@Guacamole - Tout ce que je souligne, c'est que s'il utilise ssh comme transport, son débit est limité par ssh lui-même (en particulier la fenêtre de réception statique, à moins qu'il n'utilise les correctifs HPN ssh).
JimB
1

Si le sous-système de disques du serveur de réception est une baie avec plusieurs disques, l'exécution de plusieurs processus rsync peut améliorer les performances. J'exécute 3 processus rsync pour copier des fichiers sur un serveur NFS (RAID6 avec 6 disques par groupe de raid) pour saturer Gigabit Ethernet.

Ce gars rapporte un harnais de base en python qui génère plusieurs processus rsync http://www.reliam.com/company/featured_geek

sinysee
la source
Malheureusement, le lien est mort. Pourriez-vous le retrouver?
P.Péter
1

J'ai lu de nombreuses questions similaires à celle-ci. Je pense que la seule vraie réponse est de briser la copie / déplacer manuellement. IOps sera le problème ici. Si cela vous fait vous sentir mieux, je suis en train de déplacer ~ 200 millions de fichiers consommant bien plus de 100 To d'espace disque.

Wayne
la source