Kleines Speedup für Ultimate Backup
Moin! Ich mochte ja Time Backup und konnte mich mit HyperBackup nie anfreunden, weil es für meine DS214play einfach zu ressourcenhungrig war. Inzwischen ist die 214 nur noch Backup-Gerät und primäres NAS ist jetzt eine DS918+
. Auch in der Kombination ist HyperBackup einfach ziemlich träge. Deshalb nutze ich weiter Ultimate Backup, sichere aber nicht mehr auf eine USB-Platte, sondern, wie gesagt, auf die DS214play. Die wird nachts per WOL von der 918 geweckt und nach dem Backup wieder herunter gefahren.
So weit, so schön. Was mich etwas störte, war, dass trotz Gigabit auf beiden Systemen und Gigabit-Switch dazwischen auch größere Dateien (z.B. Videos mit 1-6 GB Größe) nur mit mageren 16 MB/s übertragen werden. Also habe ich mal ein bisschen geforscht (aka gegoogelt) und eine Möglichkeit gefunden, den Durchsatz hier zumindest auf ca. 34 MB/s zu steigern. Kein Quantensprung, aber immerhin eine gute Verdoppelung.
Eine der Ursachen für die schlechte Performance bei rsync von NAS zu NAS dürfte sein, dass rsync ssh nutzt und die Verbindung somit stark verschlüsselt ist. Und die Verschlüsselung kostet leider viel CPU-Ressourcen. Was tun? Da ich im LAN sichere, bot sich an, die Verschlüsselung zu vereinfachen. Weniger CPU-hungrig ist z.B. arcfour128. Außerdem muss nicht zwingend komprimiert werden, bei bereits komprimierten Dateien bringt das eh nichts.
Also muss man rsync anweisen, ssh mit einfacherer Verschlüsselung und ohne Komprimierung zu nutzen. Dies geht über die rsync-Optionen
-e "ssh -T -c arcfour128 -o Compression=no -x"
Diese Optionen weisen rsync an, für die Übertragung ssh mit folgenden Parametern zu nutzen:
-T: schalte Pseudo-TTY ab um die CPU-Last auf dem Ziel-NAS zu reduzieren
-c arcfour128: nutze die schwächste, aber schnellste SSH-Verschlüsselung
-o Compression=no: Deaktiviere die SSH-Komprimierung
-x: deaktiviere X-Forwarding, falls es aktiv sein sollte
Die arcfour-Verschlüsselung ist normalerweise nicht aktiv. Um sie verfügbar zu machen, muss sie auf
beiden Systemen aktiviert werden. Dies geht über Systemsteuerung > Terminal & SNMP > Erweiterte Einstellungen (unter "SSH-Dienst aktivieren") > Anpassen > Häckchen bei arcfour128 setzen.
Es sollte nicht verschwiegen werden, dass arcfour128 nicht die sicherste Verschlüsselung ist. Aber da die Daten mein LAN nicht verlassen, sehe ich hier keine allzu großen Probleme.
Damit auch Ultimate Backup diese Optionen nutzt, muss leider der Source-Code in einer Zeile angepasst werden. Da UB intern selbst auch die rsync-Option "-e 'ssh ...'" verwendet, kann man obige Optionen leider nicht beim Einrichten des Tasks (Parameter "syncopt=") angeben. rsync mag es nicht, wenn "-e 'ssh...'" 2x angegeben wird.
Also muss man sich im erstellten Skript die Zeile
rsync="ssh -p $rsync_port -l $ssh_user -oStrictHostKeyChecking=no"
suchen (bei mir in V1.1.0 ist das in Zeile 523) und sie wie folgt erweitern:
rsync="ssh -p $rsync_port -l $ssh_user -oStrictHostKeyChecking=no -T -c arcfour128 -o Compression=no -x"
Diese Änderung dürfte also kein UB-Update überleben!
Zum Vergleich mal 2 Logsauszüge mit und ohne Option. Übertragen wurden in beiden Fällen Video-Dateien:
Standard-Version:
sent 2.61G bytes received 253 bytes 15.58M bytes/sec
total size is 2177.10G speedup is 834.09
Mit arcfour128-Verschlüsselung:
sent 6.14G bytes received 246 bytes 33.46M bytes/sec
total size is 2177.10G speedup is 354.53
Noch bessere Werte (ca. 44 MB/s) habe ich erreicht, wenn rsync an einen rsync-Daemon auf dem Ziel-NAS sendet (an das Modul NetBackup, das in /etc/rsyncd.conf konfiguriert werden muss). In diesem Fall nutzt rsync keinerlei Verschlüsselung. Dafür wären aber vermutlich größere Änderungen in UB erforderlich.
Wer auf die Komprimierung nicht verzichten möchte, rsync aber davon abhalten möchte, bereits komprimierte Dateien wie MP3, MP4, MKV etc. noch einmal zu komprimieren, der könnte folgende Option nutzen:
RSYNC_SKIP_COMPRESS=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/iso/jar/jp2/jpeg/jpg/k25/kdc/lz/lzma/lzo/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pef/png/qt/rar/rpm/rw2/rzip/s7z/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip
rsync --skip-compress=$RSYNC_SKIP_COMPRESS .....
Gruß,
Oliver