Software Engineering Blog

Tipps und Tricks aus dem Leben eines Systemadministrators.

Rsync beschleunigen

von

Rsync bietet sich wunderbar zum inkrementellen Sichern großer Datenmengen an. Geschieht diese Sicherung jedoch über SSH, bremsen gleich mehrere Faktoren den Transfer:

  1. SSH Verschlüsselung
  2. Kompression bei schnellen Verbindungen

Eine starke Verschlüsselung des Transfers wird im Heimnetz meist nicht benötigt, jedoch nutzt SSH standardmäßig den sichersten Algorithmus. Dieser ist oftmals recht langsam. Gerade bei NAS Systemen mit wenig CPU Leistung ist dies ein Problem. Hier kann mit dem Parameter -e Abhilfe geschaffen werden.

Eine vollständige Liste aller Parameter gibt es entweder in der Manpage, oder kommentiert im ubuntuusers Wiki. Das Abschalten der Kompression (kein -z) ist sinnvoll bei sehr schnellen Netzen (z.B. 1GBit/s), da hier die Kompression den Vorgang mehr verzögert, als die minimal längere Übertragungszeit.

Die weiteren Parameter sind insbesondere für Backups nützlich:

rsync

  • a: Archiv Modus. Rekursiv und erhält Besitzer, Rechte, Zeitstempel, Symlinks
  • H: erhält hard-links
  • X: erhält erweitere Attribute
  • x: verhindert ein Verlassen des Dateisystems
  • --numeric-ds: erhält die numerischen IDs. Sehr sinnvoll, falls die Nutzer auf beiden Systemen unterschiedliche IDs haben.
  • --info=progress2: Gesamtfortschritt anzeigen. Mit "progress" wird der Fortschritt der aktuellen Datei angezeigt.

ssh

  • T: kein pseudo-tty: Reduziert die CPU Last
  • c arcfour: nutze den schlechtesten, aber schnellsten Algorithmus zur Verschlüsselung. Etwas besser und nahezu gleichschnell ist arcfour128
  • o Compression=no: SSH Kompression ausschalten
  • x: X11 forwarding ausschalten 
rsync -aHAXx --numeric-ids --info=progress2 -e "ssh -T -c arcfour -o Compression=no -x" user@<source>:<source_dir> <dest_dir>

Performance Gewinn

Die Transferrate verbesserte sich beim Kopieren von einem NAS (ASRock Q1900-ITX Board mit 1GBit NIC) auf mein Testsystem (Skylake Quadcore) von ca. 30MB/s auf gut. 70MB/s. Der limitierende Faktor ist weiterhin die CPU des NAS, da rsync lediglich einen Thread benutzt. Eine einfache Möglichkeit das zu überprüfen, bietet der Befehl htop.

Werden zwei Instanzen parallel gestartet, wird die Leitung meist voll ausgelastet.

Zurück

Kommentare

Einen Kommentar schreiben

Was ist die Summe aus 2 und 3?

Ähnliche Beiträge

von

We reverse engineer a Dotnet Monitor in Windbg to see how it is internally implemented.

von

As SSDs are getting cheaper, low HDD / SSD ratios of 10/1 or better become an option. This article describes how to tune bcache for this scenario from an empirical perspective.