限制 rsync 带宽 nfs 复制

限制 rsync 带宽 nfs 复制

我们目前被迫将备份带宽限制到我们网络之外的 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/somedrivetrickle--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命令设置全局进出带宽限制的简单脚本。

相关内容