Multi-Threaded-Dateisynchronisierung zwischen 2 Linux-Servern

9

Im Moment verwende ich rsync für 2,2 Millionen Dateien mit insgesamt 250 GB und das dauert nur 700.000 Dateien in 6 Stunden.

Kennt jemand ein rsync-ähnliches Tool, das dies mit mehreren Threads tun kann, damit es schneller geht?

Tom van Ommen
quelle
3
Haben Sie einen Grund anzunehmen, dass es in irgendeiner Weise CPU-gebunden ist?
Chopper3
Welche rsync-Optionen verwenden Sie?
Kyle Smith
Verwenden Sie ssh als Transportmittel?
JimB
rsync -avSPp Und es gibt keine CPU- oder Festplattenprobleme.
Tom van Ommen
Und kein SSH-Transport hat gerade etwas im Web gesehen, das nicht weiß, ob es schneller ist. Es dauert schon ewig, alle Dateien zu indizieren.
Tom van Ommen

Antworten:

7

Ich bezweifle, dass CPU hier der begrenzende Faktor ist. Sie sind höchstwahrscheinlich sowohl durch die Netzwerkbandbreite für die Übertragung als auch durch die Festplatten-E / A begrenzt. besonders die Latenz für all diese stat-Aufrufe.

Können Sie die Dateisystemhierarchie in kleinere Teile aufteilen, um sie parallel zu verarbeiten?

Was sind die Quelldateien und was schreibt oder modifiziert sie? Wäre es möglich, Änderungen auf Anwendungsebene zu senden?

JimB
quelle
Synchronisieren von Zarafa-Anhangsdateien, alle standardmäßig komprimiert. Ich könnte mehrere Instanzen ausführen, aber das ist weniger effizient als 10 Threads. Und das Netzwerk ist 1 GBit bis 1 GBit, aber verschiedene Rechenzentren, aber es sollte kein Problem sein. habe 24 SAS-Festplatten auf der Quellseite und intelligenten Speicher mit SSD auf dem Ziel.
Tom van Ommen
1
@ Tom van Ommen - warum denkst du, bist du CPU-begrenzt? Wie sind mehrere Prozesse weniger effizient als Threads, wenn Sie wirklich CPU-begrenzt sind?
JimB
1
@ Tom van Ommen, 10 Prozesse haben mehr Overhead als 10 Threads; Das Sperren von Datenstrukturen zwischen Threads ist jedoch ein Alptraum für die Codierung. Es ist oft viel effizienter (für die Zeit des Codierers), einfach mehrere Prozesse zu erzeugen und damit fertig zu werden
Mike Pennington
1
@ Guacamole - Mehrere Threads können in einigen Situationen hilfreich sein, aber wenn sein Link gesättigt ist, wird er nicht mehr durchschieben, egal wie viele Threads er hat. Rsync verwendet Threads für die Parallelität und blockiert E / A nicht intern.
JimB
1
@ Guacamole - Ich möchte nur darauf hinweisen, dass sein Durchsatz bei Verwendung von ssh als Transportmittel durch ssh selbst begrenzt ist (insbesondere durch das statische Empfangsfenster, sofern er nicht die HPN-ssh-Patches verwendet).
JimB
1

Wenn das Festplattensubsystem des empfangenden Servers ein Array mit mehreren Festplatten ist, kann das Ausführen mehrerer rsync-Prozesse die Leistung verbessern. Ich führe 3 rsync-Prozesse aus, um Dateien auf einen NFS-Server (RAID6 mit 6 Festplatten pro RAID-Gruppe) zu kopieren und Gigabit-Ethernet zu sättigen.

Dieser Typ berichtet über ein grundlegendes Python-Gurtzeug, das mehrere Rsync-Prozesse erzeugt. Http://www.reliam.com/company/featured_geek

Sinysee
quelle
Leider ist der Link tot. Könnten Sie es wieder finden?
P.Péter
1

Ich habe viele ähnliche Fragen gelesen. Ich denke, die einzige wirkliche Antwort ist, das Kopieren / Verschieben manuell aufzubrechen. IOps werden hier das Problem sein. Wenn Sie sich dadurch besser fühlen, bin ich dabei, ~ 200 Millionen Dateien zu verschieben, die weit über 100 TB Speicherplatz beanspruchen.

Wayne
quelle