为了避免 rsync 导致系统和网络瘫痪,我们ionice
在启动 rsync 时使用并设置--bwlimit
参数。例如:
ionice -c2 -n7 rsync -aH --bwlimit=30000 /foo [email protected]:/
这确实有助于确保源服务器保持响应。但是,由于磁盘 io 达到 100%(如实用atop
程序所示),目标服务器变得非常慢。
是否也可以以某种方式ionice
在目标服务器上使用?也许通过 rsync-e
选项?如果可能的话,我宁愿不运行 rsync 守护程序。
答案1
更改 rsync 命令或将其包装在 shell 脚本中以包含 ionice 命令/参数是一种选择。此外,您还可以利用该--rsync-path
选项,它告诉 rsync 在远程服务器上执行哪个命令。类似的东西--rsync-path="ionice -c2 -n7 rsync"
将确保 ionice 在目标上运行。
我要补充的是,ionice 并不总是有效的,这取决于服务器配置。它只适用于默认 CFQ I/O 电梯。如果您已经做过任何存储系统调整,这种方法可能不适用。
你能举一个负载的例子或帮忙解释一下如何系统在复制过程中是否开始占用资源?我倾向于深入研究,看看为什么 rsync(尤其是受限于您在示例中列出的低速率)会引起这么多麻烦。
您要复制什么?硬件/操作系统设置是什么?
答案2
您的 rsync 命令rsync
也会在远程目的地启动命令。
尝试将以下内容放入目标服务器根用户 .bashrc 中,换句话说/root/.bashrc
alias rsync="ionice -c2 -n7 rsync"