Borg: Unterstützung für Bandbreitenbegrenzung hinzufügen

Erstellt am 14. Feb. 2016  ·  5Kommentare  ·  Quelle: borgbackup/borg

Dieses Problem erscheint in der Kontrollkästchenliste in Nr. 5. Es ist eine Dachbodenausgabe: https://github.com/jborg/attic/issues/103. Ich war mir nicht sicher, ob wir dort oder hier Kommentare hinzufügen sollten.


Das ursprüngliche Problem verlangt, dass Unterstützung hinzugefügt wird, um die Bandbreite zu begrenzen. trickle wurde als Option erwähnt. Die Leute sagten, es würde nicht funktionieren, da Borg eine Pipe durch ssh verwendet, während Trickle mit Sockets funktioniert.

Ich wollte nur berichten, dass, wenn Sie borg mit sshfs verwenden (dh Backups auf rsync.net), die Verwendung von Trickle ordnungsgemäß funktioniert. Sie müssen Trickle aufrufen, wenn Sie den SSH-Mount ausführen. Um die Bandbreite auf 5 Mbit/s zu begrenzen, würden Sie Folgendes verwenden:

trickle -u 5000 sshfs username<strong i="11">@hostname</strong>: /path/to/mountpoint
borg create ...
documentation

Hilfreichster Kommentar

Die Begrenzung der Bandbreite kann mit Pipeviewer und einem Wrapper-Skript erreicht werden.
Meine Meinung dazu ist, dass das Dokumentieren von pv dem Hinzufügen von Bandbreitenunterstützung zu borg vorzuziehen ist, da pv das tut, was benötigt wird, und die Ratenbegrenzung im Code nicht immer einfach zu bewerkstelligen ist (+ das ohnehin komplexe Setup noch komplexer macht). Mit der Unix-Philosophie: Mach eine Sache und mach es gut (und Pipes, ich mag Pipes ... ;)

Installieren Sie Pipeviewer (pv) auf Ubuntu und höchstwahrscheinlich Debian, es ist einfach: sudo apt-get install pv

Erstellen Sie ein Wrapper-Skript: (Ich erstelle es in /usr/local/bin/pv-wrapper )

#!/bin/bash
     ## -q, --quiet              do not output any transfer information at all
     ## -L, --rate-limit RATE    limit transfer to RATE bytes per second
export RATE=307200
pv -q -L $RATE  | "$@"

Fügen Sie danach BORG_RSH env hinzu
export BORG_RSH='/usr/local/bin/pv-wrapper.sh ssh '

Jetzt wird Borg in der Bandbreite begrenzt sein. Das Schöne an PV ist, dass Sie das Rate-Limit spontan ändern können:
pv -R $(pidof pv) -L 102400

Ich habe das gleiche Setup mit rsync verwendet, wo ich mehrere Terabyte-Datensätze verschoben habe und die Bandbreite während der Bürozeiten moderieren musste.

# example cron setup:
00 09 * * 1-5 root ( pidof pv > /tmp/.pv-pid && pv -R $(cat /tmp/.pv-pid ) -L  307200)
00 18 * * * root ( pidof pv > /tmp/.pv-pid && pv -R $(cat /tmp/.pv-pid ) -L  819200)

Prüfen:
Remote Repo wurde vor jedem Test entfernt

Quelle: 320M insgesamt
Ohne Pipeviewer:
Dauer: 5 Minuten 8,50 Sekunden
Anzahl der Dateien: 60

## wrapper:
pv -q -L 307200 | "$@"
Dauer: 18 Minuten 7,00 Sekunden

pv -q -L 102400 | "$@"
Ausführung nach 40 Minuten beendet, erwartete Laufzeit etwa 54 Minuten und borg --progress-Ausgabe entsprach der Schätzung.

Ursprünglicher Test mit Pipeviewer, aber kein Rate-Limit:
Dauer: 6 Minuten 29,38 Sekunden
Bitte beachten Sie, dass dieser Test nicht unter Laborbedingungen durchgeführt wurde, sodass andere Benutzer die Bandbreitenverfügbarkeit beeinflussen.

Alle 5 Kommentare

Die Begrenzung der Bandbreite kann mit Pipeviewer und einem Wrapper-Skript erreicht werden.
Meine Meinung dazu ist, dass das Dokumentieren von pv dem Hinzufügen von Bandbreitenunterstützung zu borg vorzuziehen ist, da pv das tut, was benötigt wird, und die Ratenbegrenzung im Code nicht immer einfach zu bewerkstelligen ist (+ das ohnehin komplexe Setup noch komplexer macht). Mit der Unix-Philosophie: Mach eine Sache und mach es gut (und Pipes, ich mag Pipes ... ;)

Installieren Sie Pipeviewer (pv) auf Ubuntu und höchstwahrscheinlich Debian, es ist einfach: sudo apt-get install pv

Erstellen Sie ein Wrapper-Skript: (Ich erstelle es in /usr/local/bin/pv-wrapper )

#!/bin/bash
     ## -q, --quiet              do not output any transfer information at all
     ## -L, --rate-limit RATE    limit transfer to RATE bytes per second
export RATE=307200
pv -q -L $RATE  | "$@"

Fügen Sie danach BORG_RSH env hinzu
export BORG_RSH='/usr/local/bin/pv-wrapper.sh ssh '

Jetzt wird Borg in der Bandbreite begrenzt sein. Das Schöne an PV ist, dass Sie das Rate-Limit spontan ändern können:
pv -R $(pidof pv) -L 102400

Ich habe das gleiche Setup mit rsync verwendet, wo ich mehrere Terabyte-Datensätze verschoben habe und die Bandbreite während der Bürozeiten moderieren musste.

# example cron setup:
00 09 * * 1-5 root ( pidof pv > /tmp/.pv-pid && pv -R $(cat /tmp/.pv-pid ) -L  307200)
00 18 * * * root ( pidof pv > /tmp/.pv-pid && pv -R $(cat /tmp/.pv-pid ) -L  819200)

Prüfen:
Remote Repo wurde vor jedem Test entfernt

Quelle: 320M insgesamt
Ohne Pipeviewer:
Dauer: 5 Minuten 8,50 Sekunden
Anzahl der Dateien: 60

## wrapper:
pv -q -L 307200 | "$@"
Dauer: 18 Minuten 7,00 Sekunden

pv -q -L 102400 | "$@"
Ausführung nach 40 Minuten beendet, erwartete Laufzeit etwa 54 Minuten und borg --progress-Ausgabe entsprach der Schätzung.

Ursprünglicher Test mit Pipeviewer, aber kein Rate-Limit:
Dauer: 6 Minuten 29,38 Sekunden
Bitte beachten Sie, dass dieser Test nicht unter Laborbedingungen durchgeführt wurde, sodass andere Benutzer die Bandbreitenverfügbarkeit beeinflussen.

könnte zu faq hinzugefügt werden.

PR Nr. 705 zusammengeführt.

Ich weiß, ich stoße hier auf ein altes Problem, aber das ist eine ziemlich komplizierte Problemumgehung für etwas, das wahrscheinlich in Borg leben sollte. Außerdem wäre es nützlich, separate Drosselungsoptionen für Netzwerk, I/O und Compute zu haben.

@ddevault Wenn Sie diesbezüglich ein bestimmtes Problem haben, beschreiben Sie es bitte in einer neuen Ausgabe.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen