为了避免rsync挨饿系统和networking,我们在启动rsync时使用ionice
并设置--bwlimit
参数。 例如:
ionice -c2 -n7 rsync -aH --bwlimit=30000 /foo [email protected]:/
这确实有助于确保源服务器保持响应。 但是,目标服务器由于100%的磁盘IO而变得非常慢(如atop
工具所见)。
是否有可能以某种方式在目标服务器上使用ionice
? 也许通过rsync -e
选项? 如果可能,我宁愿不运行rsync守护进程。
更改rsync命令或将其封装在shell脚本中以包含ionice命令/参数是一个选项。 另外,您可以利用--rsync-path
选项,它告诉rsync在远程服务器上执行哪个命令。 类似于--rsync-path="ionice -c2 -n7 rsync"
将确保ionice在目的地上运行。
我会补充说,ionice并不总是有效的,这取决于服务器的configuration。 它只适用于默认的CFQ I / O电梯 。 如果您已经完成了任何存储系统调整,则此方法可能不适用。
你能举出一个负载的例子,或者帮助解释在复制过程中系统如何启动资源? 我倾向于深入研究,看看为什么一个rsync,特别是限于你在例子中列出的低利率,会造成很大的麻烦。
你在复制什么? 什么是硬件/操作系统设置?
您的rsync命令也会在远程目标上启动rsync
命令。
尝试将以下内容放到目标服务器root用户.bashrc中,换句话说就是/root/.bashrc
alias rsync="ionice -c2 -n7 rsync"