Чтобы избежать того, чтобы rsync истощил систему и сеть, мы используем ionice
при запуске rsync и установите --bwlimit
параметр. Например:
ionice -c2 -n7 rsync -aH --bwlimit=30000 /foo root@dest.com:/
Это действительно помогает гарантировать, что исходный сервер остается отзывчивым. Однако конечный сервер становится очень медленным из-за дискового io на 100% (как видно из atop
утилита).
Можно ли как-то использовать ionice
на целевом сервере тоже? Возможно через rsync -e
вариант? Я бы предпочел не запускать демон rsync, если это возможно.
Можно изменить команду rsync или заключить ее в сценарий оболочки, чтобы включить команду / параметры ionice. Кроме того, вы можете использовать --rsync-path
параметр, который сообщает rsync, какую команду выполнять на удаленном сервере. Что-то вроде --rsync-path="ionice -c2 -n7 rsync"
гарантирует, что ionice будет работать в пункте назначения.
Добавлю, что ionice не всегда эффективен, в зависимости от конфигурации сервера. Работает только с лифт ввода / вывода CFQ по умолчанию. Если вы выполнили настройку системы хранения, этот подход может быть неприменим.
Можете ли вы привести пример загрузки или помочь объяснить как запустили системы, делаемые за ресурсы при копировании? Я хотел бы погрузиться глубже и понять, почему rsync, особенно ограниченный низкой скоростью, которую вы указали в своем примере, может вызвать столько проблем.
Что вы копируете? Какая настройка оборудования / ОС?
Ваша команда rsync запускается rsync
также в удаленном месте назначения.
Попытайтесь поместить следующее на корневого пользователя целевого сервера .bashrc, другими словами, чтобы /root/.bashrc
alias rsync="ionice -c2 -n7 rsync"