現在、バックアップ帯域幅をネットワーク外の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に制限されており、キャッシュの問題は発生しませんでした。
ユーザーレベルの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%をかなり超えることに注意してください。
同じ名前のパッケージから wondershaper を試すことができます。これは、カーネルのトラフィックシェーピングtc
コマンドを使用してグローバルな帯域幅の制限を設定する簡単なスクリプトです。