Saya memiliki server CentOS 5.7 yang akan mencadangkan file-nya setiap malam. Saya khawatir bahwa pengunjung ke berbagai situs yang dihosting oleh server akan mengalami penurunan kinerja saat cadangan ditransfer di seluruh jaringan.
Apakah mungkin untuk membatasi throughput maksimum yang diizinkan suatu proses ke antarmuka jaringan? Saya ingin membatasi transfer file berbasis SSH hanya setengah dari bandwidth saya yang tersedia. Ini bisa di sisi server atau klien; yaitu, saya akan senang melakukan ini baik pada klien yang memulai koneksi atau server yang menerima koneksi.
(Sayangnya, saya tidak dapat menambahkan antarmuka yang didedikasikan untuk cadangan. Saya dapat meningkatkan throughput yang tersedia, tetapi itu hanya berarti bahwa transfer jaringan akan selesai lebih cepat, tetapi masih memaksimalkan kapasitas total koneksi saat melakukannya.)
Beberapa latar belakang
Mungkin beberapa latar belakang sudah beres. Melangkah mundur, saya punya masalah dengan tidak memiliki ruang lokal yang cukup untuk membuat cadangan itu sendiri. Masukkan SSHFS! Cadangan disimpan ke apa yang tampaknya drive lokal sehingga tidak ada bit cadangan yang pernah ada di server web itu sendiri.
Mengapa itu penting? Karena itu tampaknya akan membatalkan penggunaan Yang Mulia rsync --bwlimit
. rsync
tidak benar-benar melakukan transfer juga tidak bisa karena saya bahkan tidak bisa menyisihkan ruang untuk menyimpan file cadangan.
Saya dapat mendengar Anda bertanya: "Jadi, tunggu, mengapa Anda bahkan perlu membuat file cadangan? Mengapa tidak hanya rsync
file sumber dan folder?" Karena hal menjengkelkan yang disebut "Plesk" ada di dalam campuran! Ini adalah host web yang menghadap klien saya yang menggunakan Plesk untuk kenyamanan. Karena itu, saya menggunakan Plesk untuk memulai cadangan karena Plesk menambahkan segala macam sihir ekstra ke cadangan yang membuatnya memakannya selama prosedur pemulihan sangat aman.
muka sedih
sumber
ionice
untuk membatasi penulisan yang dapat dibuat oleh suatu proses. Karena saya menulis ke sistem file SSHFS, saya dapat menurunkan kelas proses pencadangan ke 3 untuk membuatnya benar-benar memberi jalan kepada proses lain yang ingin ditulis. Dengan begitu saya mendapatkan efek yang saya inginkan yaitu tidak pernah menurunkan pengalaman pengunjung situs karena bandwidth memonopoli cadangan.Jawaban:
Anda dapat menggunakan
iptables
untuk menandai paket (--pid-owner ...), lalu gunakantc
untuk membentuk lalu lintas. Juga "--sid-owner" dapat digunakan untuk menyertakan utas dan anak-anak dari proses itu.http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#OWNERMATCH
sumber
--pid-owner processid
Cocok jika paket itu dibuat oleh suatu proses dengan proses id yang diberikan ." linux.die.net/man/8/iptablesiptables -A OUTPUT -m owner --pid-owner 78
tampaknya tidak lengkap (karena hanya cocok dengan paket, ia tidak mengatakan bagaimana "menandai" mereka) dantc
tidak dijelaskan sama sekali.-j MARK --set-mark 1
. Untuk perincian lebih lanjut, lihat: wiki.archlinux.org/index.php/…Salah satu opsi yang baru saya temukan adalah menggunakan tetesan .
sumber
trickle
link yang Anda berikan mengarah ke 404.sudo apt-get install trickle
Jika Anda dapat menulis ke sebuah pipa (atau stdout), Anda dapat menginstal perintah
pv
(penampil pipa). Awalnya ditulis untuk menampilkan kemajuan data yang ditransfer melalui pipa.tar cvf - /files/to/backup | pv -L 512k > /your/file/on/sshfs
sumber
ssh my-remote-server bash -c "'find / -xdev|cpio -o|gzip -c1'"|pv --rate-limit 1M > my-remote-root.cpio.gz
.ssh my-remote-server ionice -c3 bash -c "'find / -xdev|cpio -o|gzip -c1'"|pv --rate-limit 1M > my-remote-root.cpio.gz
Saya menggunakan rsync dengan opsi --bwlimit = KBPS untuk alasan yang sama.
Ethernet 1 Gbit kami dengan mudah dapat membanjiri RAID DAS SCSI320 lama kami, dan pada dasarnya DOS adalah beberapa kotak produksi lama kami yang mengandalkannya untuk toko NFS-nya.
sumber
Bagaimana Anda mentransfer data? (rsync atas ssh? scp? sftp? sesuatu yang lain?)
rsync akan memungkinkan Anda untuk membatasi bandwidth (lihat opsi --bwlimit = KBPS). rsync -e ssh --bwlimit ..
Atau, Anda dapat mengatur qdisc atau setara untuk melakukan pembatasan tarif mewah, tetapi saya menduga bahwa dalam kasus Anda ini akan menjadi kerja keras yang berlebihan. Dokumentasi tentang ini tersedia di Linux Advanced Routing dan Traffic Control HOWTO
sumber