Borg: Tambahkan dukungan batas bandwidth

Dibuat pada 14 Feb 2016  ·  5Komentar  ·  Sumber: borgbackup/borg

Masalah ini muncul pada daftar kotak centang di #5. Ini adalah masalah loteng: https://github.com/jborg/attic/issues/103. Saya tidak yakin apakah kami harus menambahkan komentar di sana atau di sini.


Masalah asli meminta dukungan ditambahkan untuk membatasi bandwidth. trickle disebutkan sebagai opsi. Orang-orang mengatakan itu tidak akan/tidak berfungsi karena borg menggunakan pipa melalui ssh, sementara tetesan bekerja dengan soket.

Saya hanya ingin melaporkan bahwa jika Anda menggunakan borg dengan sshfs (yaitu mencadangkan ke rsync.net), maka menggunakan trickle akan berfungsi dengan baik. Anda harus memanggil trickle saat melakukan ssh mount. Jadi untuk membatasi bandwidth hingga 5 Mbps, Anda akan menggunakan:

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

Komentar yang paling membantu

Membatasi bandwidth dapat dilakukan dengan pipeviewer dan skrip pembungkus.
Pendapat saya adalah bahwa mendokumentasikan pv lebih baik daripada menambahkan dukungan bandwidth ke borg, karena pv melakukan apa yang diperlukan dan pembatasan kecepatan tidak selalu mudah dilakukan dalam kode (+ menambah lebih banyak kerumitan pada pengaturan yang sudah rumit). Dengan filosofi unix: lakukan satu hal dan lakukan dengan baik (dan pipa, saya suka pipa ... ;)

Instal pipeviewer (pv) di ubuntu dan kemungkinan besar debian itu hanya: sudo apt-get install pv

Buat skrip pembungkus: (Saya akan membuatnya menjadi /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  | "$@"

Selesai, tambahkan BORG_RSH env
export BORG_RSH='/usr/local/bin/pv-wrapper.sh ssh '

Sekarang borg akan dibatasi bandwidth. Hal yang menyenangkan tentang pv adalah Anda dapat mengubah batas kecepatan dengan cepat:
pv -R $(pidof pv) -L 102400

Saya telah menggunakan pengaturan yang sama dengan rsync di mana saya memindahkan kumpulan data multi terabyte dan harus memoderasi bandwidth selama jam kantor.

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

Tes:
Repo jarak jauh telah dihapus sebelum setiap pengujian

sumber: 320 juta total
Tanpa pipeviewer:
Durasi: 5 menit 8,50 detik
Jumlah file: 60

## wrapper:
pv -q -L 307200 | "$@"
Durasi: 18 menit 7,00 detik

pv -q -L 102400 | "$@"
Menghentikan eksekusi setelah 40 menit, perkiraan waktu berjalan sekitar 54 menit dan keluaran borg --progress sejalan dengan perkiraan.

Tes asli dengan pipeviewer, tetapi tanpa batas kecepatan:
Durasi: 6 menit 29,38 detik
harap dicatat bahwa tes ini tidak dijalankan pada kondisi laboratorium sehingga pengguna lain memengaruhi ketersediaan bandwidth.

Semua 5 komentar

Membatasi bandwidth dapat dilakukan dengan pipeviewer dan skrip pembungkus.
Pendapat saya adalah bahwa mendokumentasikan pv lebih baik daripada menambahkan dukungan bandwidth ke borg, karena pv melakukan apa yang diperlukan dan pembatasan kecepatan tidak selalu mudah dilakukan dalam kode (+ menambah lebih banyak kerumitan pada pengaturan yang sudah rumit). Dengan filosofi unix: lakukan satu hal dan lakukan dengan baik (dan pipa, saya suka pipa ... ;)

Instal pipeviewer (pv) di ubuntu dan kemungkinan besar debian itu hanya: sudo apt-get install pv

Buat skrip pembungkus: (Saya akan membuatnya menjadi /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  | "$@"

Selesai, tambahkan BORG_RSH env
export BORG_RSH='/usr/local/bin/pv-wrapper.sh ssh '

Sekarang borg akan dibatasi bandwidth. Hal yang menyenangkan tentang pv adalah Anda dapat mengubah batas kecepatan dengan cepat:
pv -R $(pidof pv) -L 102400

Saya telah menggunakan pengaturan yang sama dengan rsync di mana saya memindahkan kumpulan data multi terabyte dan harus memoderasi bandwidth selama jam kantor.

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

Tes:
Repo jarak jauh telah dihapus sebelum setiap pengujian

sumber: 320 juta total
Tanpa pipeviewer:
Durasi: 5 menit 8,50 detik
Jumlah file: 60

## wrapper:
pv -q -L 307200 | "$@"
Durasi: 18 menit 7,00 detik

pv -q -L 102400 | "$@"
Menghentikan eksekusi setelah 40 menit, perkiraan waktu berjalan sekitar 54 menit dan keluaran borg --progress sejalan dengan perkiraan.

Tes asli dengan pipeviewer, tetapi tanpa batas kecepatan:
Durasi: 6 menit 29,38 detik
harap dicatat bahwa tes ini tidak dijalankan pada kondisi laboratorium sehingga pengguna lain memengaruhi ketersediaan bandwidth.

dapat ditambahkan ke faq.

gabungan pr #705.

Menatap masalah lama di sini, saya tahu, tapi itu solusi yang agak berbelit-belit untuk sesuatu yang mungkin harus hidup di borg. Plus, akan berguna untuk memiliki opsi pelambatan terpisah untuk jaringan, I/O, dan komputasi.

@ddevault jika Anda memiliki masalah khusus yang terkait dengan ini, jelaskan dalam masalah baru.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

zatricky picture zatricky  ·  3Komentar

pierreozoux picture pierreozoux  ·  4Komentar

russelldavis picture russelldavis  ·  3Komentar

rugk picture rugk  ·  4Komentar

TinajaLabs picture TinajaLabs  ·  6Komentar