Rsync zwingt Linux-Server in die Knie

Wenn wir von unserem produktiven Linux-Server etwas umfangreichere Daten mittels rsync synchronisieren wollen, geht die Performance seines GUI für die Dauer der Jobs in die Knie. Ursache ist die hohe I/O-Last, die vom rsync-Prozess ausgelöst wird und die restliche I/O deutlich ausbremst. Wie kann man das umgehen?

vorlesen Druckansicht 3 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Wolfgang Schemmel

Wenn wir von unserem produktiven Linux-Server etwas umfangreichere Daten mittels rsync synchronisieren wollen, geht die Performance seines GUI für die Dauer der Jobs in die Knie. Ursache ist die hohe I/O-Last, die vom rsync-Prozess ausgelöst wird und die restliche I/O deutlich ausbremst. Wie kann man das umgehen?

Abhilfe schafft das ab Linux-Kernel 2.6.13 verfügbare Tool ionice, das (ähnlich wie nice bei der CPU) die Prozesse in verschieden priorisierte I/O-Klassen unterteilt. So startet ionice -c 3 bash eine Shell mit der I/O-Klasse „idle“. Weitere Werte für den Parameter c sind 0 für „keine“, 1 für „realtime“ und 2 für „best effort“.

Folgende Zeile startet ein zurĂĽckhaltendes rsync auf dem betroffenen Rechner:

ionice -c 3 rsync [rsync-Parameter]
/lokaler/pfad remote:/anderer/pfad

Falls der rsync-Job aus organisatorischen Gründen nicht auf dem produktiven Server laufen soll, muss man sich eines kleinen Tricks bedienen. rsync kennt die Option „–rsync-path“, mit der man auf der entfernten Maschine eine dedizierte rsync-Version ansteuern kann. Das kann jedoch auch ein Skript sein. Auf dem entfernten Rechner legen Sie dazu die Datei /usr/local/bin/rsync-ionice mit folgendem Inhalt ab:

# !/bin/bash
# rsync mit ionice class idle laufen lassen
/usr/bin/ionice -c 3 /usr/bin/rsync "$@"

Die Datei muss les- und ausführbar sein, was man mit chmod 755 /usr/local/bin/rsync-ionice sicherstellen sollte. Damit lässt sich nun ferngesteuert die ressourcenschonende Version von rsync aufrufen:

rsync --rsync-path=/usr/local/bin/rsync-ionice
[rsync-Parameter]

ĂśberprĂĽfen kann man das auf dem produktiven Server mit iotop. ()