Borg: Ajouter la prise en charge de la limite de bande passante

Créé le 14 févr. 2016  ·  5Commentaires  ·  Source: borgbackup/borg

Ce problème apparaît dans la liste des cases à cocher au point 5. C'est un problème de grenier : https://github.com/jborg/attic/issues/103. Je ne savais pas si nous devrions ajouter des commentaires ici ou ici.


Le problème d'origine demande que la prise en charge soit ajoutée pour limiter la bande passante. trickle a été mentionné comme une option. Les gens ont dit que cela ne fonctionnerait pas / ne fonctionnerait pas puisque borg utilise un tuyau via ssh, tandis que trickle fonctionne avec des sockets.

Je voulais juste signaler que si vous utilisez borg avec sshfs (c'est-à-dire en sauvegardant sur rsync.net), l'utilisation de trickle fonctionnera correctement. Vous devez appeler trickle lors de l'exécution du montage ssh. Donc, pour limiter la bande passante à 5 Mbps, vous utiliseriez :

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

Commentaire le plus utile

La limitation de la bande passante peut être accomplie avec pipeviewer et un script wrapper.
Mon point de vue est que documenter pv est préférable à l'ajout de la prise en charge de la bande passante à borg, car pv fait ce qui est nécessaire et la limitation du débit n'est pas toujours facile à faire dans le code (+ ajoute plus de complexité à une configuration déjà complexe). Avec la philosophie unix : faire une chose et la faire bien (et les pipes, j'aime les pipes... ;)

Installez pipeviewer (pv) sur ubuntu et très probablement debian c'est simplement : sudo apt-get install pv

Créez un script wrapper : (je vais le créer en /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  | "$@"

Ceci fait, ajoutez l'env BORG_RSH
export BORG_RSH='/usr/local/bin/pv-wrapper.sh ssh '

Désormais, borg sera limité en bande passante. La bonne chose à propos de pv est que vous pouvez modifier la limite de débit à la volée :
pv -R $(pidof pv) -L 102400

J'ai utilisé la même configuration avec rsync où je déplaçais un ensemble de données de plusieurs téraoctets et je devais modérer la bande passante pendant les heures de bureau.

# 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)

Test:
Le référentiel distant a été supprimé avant chaque test

source : 320 M au total
Sans pipeviewer :
Durée : 5 minutes 8,50 secondes
Nombre de fichiers : 60

## wrapper:
pv -q -L 307200 | "$@"
Durée : 18 minutes 7,00 secondes

pv -q -L 102400 | "$@"
Exécution arrêtée après 40 minutes, durée d'exécution prévue d'environ 54 minutes et la sortie borg --progress était conforme à l'estimation.

Test original avec pipeviewer, mais sans limite de débit :
Durée : 6 minutes 29,38 secondes
veuillez noter que ce test n'a pas été exécuté dans des conditions de laboratoire, de sorte que d'autres utilisateurs affectent la disponibilité de la bande passante.

Tous les 5 commentaires

La limitation de la bande passante peut être accomplie avec pipeviewer et un script wrapper.
Mon point de vue est que documenter pv est préférable à l'ajout de la prise en charge de la bande passante à borg, car pv fait ce qui est nécessaire et la limitation du débit n'est pas toujours facile à faire dans le code (+ ajoute plus de complexité à une configuration déjà complexe). Avec la philosophie unix : faire une chose et la faire bien (et les pipes, j'aime les pipes... ;)

Installez pipeviewer (pv) sur ubuntu et très probablement debian c'est simplement : sudo apt-get install pv

Créez un script wrapper : (je vais le créer en /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  | "$@"

Ceci fait, ajoutez l'env BORG_RSH
export BORG_RSH='/usr/local/bin/pv-wrapper.sh ssh '

Désormais, borg sera limité en bande passante. La bonne chose à propos de pv est que vous pouvez modifier la limite de débit à la volée :
pv -R $(pidof pv) -L 102400

J'ai utilisé la même configuration avec rsync où je déplaçais un ensemble de données de plusieurs téraoctets et je devais modérer la bande passante pendant les heures de bureau.

# 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)

Test:
Le référentiel distant a été supprimé avant chaque test

source : 320 M au total
Sans pipeviewer :
Durée : 5 minutes 8,50 secondes
Nombre de fichiers : 60

## wrapper:
pv -q -L 307200 | "$@"
Durée : 18 minutes 7,00 secondes

pv -q -L 102400 | "$@"
Exécution arrêtée après 40 minutes, durée d'exécution prévue d'environ 54 minutes et la sortie borg --progress était conforme à l'estimation.

Test original avec pipeviewer, mais sans limite de débit :
Durée : 6 minutes 29,38 secondes
veuillez noter que ce test n'a pas été exécuté dans des conditions de laboratoire, de sorte que d'autres utilisateurs affectent la disponibilité de la bande passante.

pourrait être ajouté à la faq.

pr fusionné #705.

Cogner un vieux problème ici, je sais, mais c'est une solution de contournement plutôt compliquée pour quelque chose qui devrait probablement vivre à borg. De plus, il serait utile d'avoir des options de limitation distinctes pour le réseau, les E/S et le calcul.

@ddevault si vous avez un problème spécifique lié à cela, veuillez le décrire dans un nouveau numéro.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

pierreozoux picture pierreozoux  ·  4Commentaires

rugk picture rugk  ·  4Commentaires

zatricky picture zatricky  ·  3Commentaires

ThomasWaldmann picture ThomasWaldmann  ·  6Commentaires

rugk picture rugk  ·  5Commentaires