Rsync beschleunigen
von Felix Mößbauer
Rsync bietet sich wunderbar zum inkrementellen Sichern großer Datenmengen an. Geschieht diese Sicherung jedoch über SSH, bremsen gleich mehrere Faktoren den Transfer:
- SSH Verschlüsselung
- 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.
Ähnliche Beiträge
von Felix Mößbauer
Kommentare
Einen Kommentar schreiben