web-dev-qa-db-ja.com

rsync帯域幅を制限するnfscopy

現在、バックアップ帯域幅をネットワーク外のnfsディスク(VPN経由)に制限する必要があります。これは、モデムキャッシュがいっぱいになり、接続を回復するために再起動する必要があるためです。

0 22 * * *   flock rsync_wan_lock -c "rsync --rsync-path=\"Nice -n5 ionice -c2 -n3 rsync\" --bwlimit 2000 -avrPq --delete-after /var/data/ /mnt/somedrive"

しかし、それだけでは十分ではありません。 2000 KiBは転送速度の50%(30Mbps)であるはずですが、それでもバッファがいっぱいになります。

だから、私はrsyncがバーストしてから、bwlimitを尊重するためにサイレントになり、メタデータがまだbwlimitを尊重しないことを読みました。だから私は今trickleを試しています。

問題は、私が見つけたすべてのドキュメントが、-eオプションを介してssh接続でtrickleを使用していることです。 sshをコピーしないと、-eが機能しないと思いますが、フォークが原因で--rsync-pathにトリクルを入れても機能しない理由があります。 rsyncはそうします。

0 22 * * *   flock rsync_wan_lock -c "rsync --rsync-path=\"Nice -n5 ionice -c2 -n3 trickle -s -u 1000 -d 10000 rsync\" -avrPq --delete-after /var/data/ /mnt/somedrive"

アイデア/コメントはありますか?そして、モデムがオーバーフローしやすいので、このモデムはどうなっているのでしょうか。以前のファイアウォールは10000に制限されており、キャッシュの問題は発生しませんでした。

2
quimnuss

ユーザーレベルのrsyncに関する限り、送信元ディレクトリ/var/dataと宛先/mnt/somedriveの間にネットワークはありません(NFSサーバーへのネットワーク転送はバックグラウンドで行われます) 。したがって、このユースケースではtrickleは機能しません。一方、--bwlimit修飾子はローカル転送では機能します。

ioniceオプションが役立つはずですが、ローカル転送では--rsync-pathオプションが無視されるため、そこに適用しようとしても意味がありません。

これがどのように機能するかをご覧ください

Nice -n5 ionice -c2 -n3 rsync --bwlimit 2000K -avP --delete-after /var/data/ /mnt/somedrive

--bwlimit 2000Kは実際には20Mb/sであり、これは最大帯域幅の50%をかなり超えることに注意してください。

0
roaima

同じ名前のパッケージから wondershaper を試すことができます。これは、カーネルのトラフィックシェーピングtcコマンドを使用してグローバルな帯域幅の制限を設定する簡単なスクリプトです。

0
meuh