ionice позволяет снизить нагрузку на диск при копировании.
Файлы копируются обычно при помощи rsync, который может сильно нагружать систему если существует ограничение по операциям ввода-вывода.
Чтобы максимально ограничить нагрузку, создаваемую rsync на диск его нужно запускать с ionice.
Чтобы максимально упростить синтаксис команды можно добавить алиас в .bashrc пользователя root (если копирование выполняется им).
mcedit /root/.bashrc
В конец файла допишем алиас в следующем виде:
alias rsync="ionice -c2 -n7 rsync"
Теперь каждый раз при запуске rsync команда будет выполняться только тогда когда диск находится в состоянии Idle, т.е. когда никаких операций с ним другими процессами не производится
Ключи утилиты ionice
Приоритета по операциям с диском у ionice три, нужный указывается с ключем -c
- real time
- best effort
- idle (операция, запущенная с -с 3 будет выполняться когда процессор не использует HD)
С ключом -n задается класс передаваемой информации, 7 — минимальный приоритет, 1 — максимальный.
Также процесс можно запустить и с nice, задающим приоритет обработки процесса системой.
Дополненное выражение алиаса может выглядеть как
alias rsync="nice 16 ionice -c2 -n7 rsync"
Для nice значение выбирается из диапазона -20 — 19
- -20 — наиболее приоритетный для системы процесс
- (default или 10) — используется по умолчанию если приоритет не указан
- 19 — наименее приоритетный для системы процесс
Для rsync можно ограничить и пропускную способность канала указав ограничение в Кб/сек. Можно указать, например, bwlimit=10000, что ограничит максимальную скорость передачи данных 9,7 Мб/сек.
Скомбинировав все перечисленные методы ограничения приоритета выполнения процесса можно получить алиас для rsync, запустив команду на сервере при этом можно с минимальным потреблением ресурсов скопировать необходимую информацию.
alias rsync="bwlimit=10000 nice 17 ionice -c2 -n7 rsync"
Пример .bashrc с алиасом для ionice приведен на скриншоте:
Само копирование выполняется как обычно:
rsync -av . [email protected]:/home/remote
Чтобы при подключении к серверу с адресом 123.123.123.123 не запрашивался пароль можно настроить подключение по ssh ключу.
Занять копирование с максимально заниженным приоритетом может довольно длительное время.