rsync: Langsame Geschwindigkeit bei vorhandenen Files

Status
Für weitere Antworten geschlossen.

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.525
Punkte für Reaktionen
1.360
Punkte
234
Hallo,
ich habe ein Problem mit der Geschwindigkeit bei rsync zwischen zwei DSen.

Beim Kopieren bekam ich zwei verschiedene Geschwindigkeiten. Entweder es läuft mit 50 MB/s oder mit 8 MB/s, diese Werte jeweils aber sehr konstant.

Nach langem Testen und Suchen bin ich dahintergekommen, in welchen Fällen die Geschwindigkeit von 50 MB/s auf 8 MB/s sinkt.

Wenn ein File nicht vorhanden ist, läuft es immer mit rund 50 MB/s.
Wenn aber ein Filename schon vorhanden ist und somit überschrieben wird, läuft es nur mit 8 MB/s.

Folgenden Befehl nutze ich:
Rich (BBCode):
rsync -av --exclude '@eaDir' --exclude '#recycle' --stats -e "ssh -i /root/.ssh/dsb" /volume1/quellverzeichnis/ root@IP:/volume1/zielverzeichnis

Kann mir das jemand erklären, eventuell sogar mir einen Tipp geben wie ich das abstellen kann?
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.088
Punkte für Reaktionen
1.072
Punkte
314
Hi Du!

Versuch es mal mit dem Optionsschalter -W

Zitat aus der rsync Manpage von *hier*

-W, --whole-file
With this option rsync's delta-transfer algorithm is not used and the whole file is sent as-is instead. The transfer may be faster if this option is used when the bandwidth between the source and destination machines is higher than the bandwidth to disk (especially when the lqdiskrq is actually a networked filesystem). This is the default when both the source and destination are specified as local paths.

Zur weiteren Erklärung...

Zitat aus den Seiten von wiki.ubuntuusers.de
Wenn auf Quelle oder Ziel aber per SSH oder über einen speziellen rsync-daemon zugegriffen wird, nutzt rsync zusätzlich noch einen speziellen Delta-Transfer-Algorithmus, so dass nur die geänderten Teile der Dateien über das Netzwerk transportiert werden müssen.

Es wiederspricht sich zwar eigentlich, aber beim Delta-Transfer wird wohl, neben der Transferrate, auch mehr Rechenleistung benötigt, was wiederum Zeit in Anspruch nimmt. Das kann bei vielen kleinen, geänderten Datein schon mal größere Dimensionen annehmen... so jedenfallls meine Vermutung.

Tommes
 
Zuletzt bearbeitet:

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
Wobei hier die Anzeige von rsync evt. auch verwirrend sein kann.
Wirklich interessant wird sein, wie lange dann die Laufzeit war. MB/s ist evt. nicht wirklich die Maßzahl.
Das rsync grundsätzlich nur Differenzen schickt, ist ja durch aus erwünscht. Somit kopierst du dann aber auch weniger, weil 1. Deltas ermittelt werden und 2. nur diese übermittelt werden.

Also ich würde mal zusätzlich -P für Progress dazugeben.

Dann schau dir mal an, was da so rauskommt am Ende.
sent xy bytes, received yz bytes, xz bytes/sec
speedup is zz
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.525
Punkte für Reaktionen
1.360
Punkte
234
Danke für die Hinweise. Ich werde das beim nächsten Backup ausprobieren.

Zu den Dateien: Es handelt sich um große Archive (z.B. .tgz, .gz), die jeweils meist mindestens 1 GB, eher 2-3 GB groß sind. Daher habe ich im Eingansposting die sehr konstanten Geschwindigkeiten so angegeben.
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
Ok, bei den TARs ist das dann natürlich nochmal eine eigene Sache.
Nachdem du aber schon gzippte TARs hast, könntest du die TARs mit gzip --rsyncable zippen. Diese sind dann speziell für rsync optimiert. Das könnte dir hier dann durchaus was bringen, und somit sind dann deine rsyncs etwas performanter.

Achtung: die Verbesserung merkts du dann natürlich erst, wenn sowohl Quelle als auch Ziel bereits gzips mit --rsyncable enthalten.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.088
Punkte für Reaktionen
1.072
Punkte
314
Das mit dem gzip --rsyncable ist ja interessant, das kannte ich auch noch nicht! Wieder was gelernt.
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
Ja wir kopieren teilweise WAR Files für unsere Anwendungen ala 30x 300MB per VPN, wo sich im Vergleich zur letzten Version nur geringfügig viel geändert hat, und da hat das definitiv geholfen - und jede Sekunde weniger Wartezeit ist ein Erfolg :)
Hilft auch bei großen Datenbank Dumps wirklich viel (zumindest getestet, wenn sie nicht im Binaryformat sind).
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.525
Punkte für Reaktionen
1.360
Punkte
234
--rsyncable wäre sehr interessant.

In Verbindung mit tar bekomme ich es aber nicht zum laufen. :(

Beispiel:
Rich (BBCode):
tar -cf /pfad/backupdatei.tgz /pfad/quellverzeichnis --gzip --rsyncable
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.715
Punkte für Reaktionen
1.022
Punkte
754
Aber Du könntest ja ungepackt tar nutzen und dann per Pipe gzip nutzen. Oder bietet das gzip die Option nicht an?
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
So wie Dil schreibt sollt es gehen.
tar -c Pfad/ | gzip --rsyncable > Datei.tar.gz
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.525
Punkte für Reaktionen
1.360
Punkte
234
Natürlich per Pipe... manchmal hab ich echt ein Brett vor dem Kopf. ;)

Ich habe nun erst mal die Scripte auf dem Server angepasst und warte ein paar Tage ab, damit sich die Archive bezüglich "--rsyncable" Stück für Stück erneuern. Dann werde ich nächste Woche mal testen und noch mal Feedback geben. :)

Danke für eure Tipps und Mühe.
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.525
Punkte für Reaktionen
1.360
Punkte
234
Nachdem du aber schon gzippte TARs hast, könntest du die TARs mit gzip --rsyncable zippen. Diese sind dann speziell für rsync optimiert. Das könnte dir hier dann durchaus was bringen, und somit sind dann deine rsyncs etwas performanter.
Also ich muss mich noch mal für den Tipp mit "--rsyncable" bedanken.

Ich bin gerade mal das Log von rsync durchgegangen. Jede Nacht zieht er drei frisch gezippte TARs mit rund 100.000 darin enthaltenen Dateien vom Webserver. Die Datenmenge aller drei TARs liegt bei ca. 500 MB. Durch das --rsyncable waren es letzte Nacht z.B. nur 4,5MB, die Nacht zuvor 17 MB, die Nacht davor 6,3 MB. Er zieht nicht mehr die 500 MB jede Nacht komplett, sondern nur die Änderungen. Der Backupjob ist damit innerhalb weniger Sekunden erledigt.
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
Sehr cool. Gut das es klappt... :)

Wir verwenden das zB auch um sehr große DB Backups mit 500GB schneller als Differenz wegzukopieren. Und da bringt das auch unheimlich viel!
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat