У меня большой объем данных (300 ГБ) на сервере Linux. Теперь я хочу перейти на другой сервер Linux, используя rsync
через ssh. Когда я передаю данные, это создает огромную нагрузку на сервер. Могу ли я узнать, как избежать нагрузки на сервер при передаче огромного количества данных по ssh?
Используйте более слабый шифр ssh (например, arcfour), например:
rsync -av source --rsh="ssh -c arcfour" foo@bar:/destination
Могут быть и более слабые шифры, но я предпочитаю arcfour, поскольку это не лучший компромисс между безопасностью и скоростью (в моем случае ищите тесты шифрования, их много).
Или вообще не используйте ssh и запустите демон rsync на конечном сервере.
Я нашел решение, чтобы избежать нагрузки на сервер во время файла между удаленным и локальным сервером, включив команду ionice и nice в rsync
ionice - get/set program io scheduling class and priority
nice - run a program with modified scheduling priority
#rsync -r -az --rsync-path="ionice -c 3 nice rsync" -e "ssh -p 8363" username@ip-address:/source-file /destination
Или, если вас интересует нагрузка на ЦП и у вас современный ЦП с инструкциями AES (хотя это кажется маловероятным из вашего описания), вы можете использовать Intel Accelerator Engine. Есть README
внутри с информацией о том, как его настроить. Также может быть какой-то способ настройки, связанный с дистрибутивом.
Чтобы узнать, есть ли у вас «современный» процессор, используйте grep aes /proc/cpuinfo
.
Вы можете дополнить его Rsync --whole-file
Rsync по умолчанию для локальных копий просто копирует файл целиком, но для уменьшения сетевого трафика удаленные синхронизации различаются, что значительно увеличивает нагрузку на ЦП.
rsync -av --whole-file -e ssh {source} {destination}