![限制 rsync 带宽 nfs 复制](https://linux22.com/image/713792/%E9%99%90%E5%88%B6%20rsync%20%E5%B8%A6%E5%AE%BD%20nfs%20%E5%A4%8D%E5%88%B6.png)
我们目前被迫将备份带宽限制到我们网络之外的 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
现在正在尝试。
问题是,我找到的每个文档都使用trickle
通过选项的 ssh 连接-e
。-e
如果我不通过复制,我认为不会起作用,但他们给出的理由是,由于分叉 rsync 起作用,因此ssh
将 trickle 放入不会起作用。--rsync-path
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,没有遇到缓存问题。
答案1
就您的用户级别而言,源目录和目标rsync
之间没有网络(到 NFS 服务器的网络传输在后台进行)。因此在此用例中无法工作。另一方面,限定符在本地传输上确实有效。/var/data
/mnt/somedrive
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%。
答案2
你可以试试奇迹塑造者,来自同名软件包,这是一个使用内核的流量整形tc
命令设置全局进出带宽限制的简单脚本。