У меня есть cron, который ночью выполняет простой tar zcf.
На сервере есть:
Как видно на экране мониторинга хост:
Почти все время использования tar дисковый ввод-вывод достигает> 90% и заставляет все остальные приложения (mysql, apache) сильно замедляться.
2 вопроса:
Спасибо!
Ожидается, что во время резервного копирования будет наблюдаться большое количество операций ввода-вывода, потому что они обычно создаются для больших файловых деревьев с большими файлами. Ты можешь использовать ionice
для определения приоритетов заданий ввода-вывода в Linux с помощью классов и уровней. IIRC, класс 2, уровень 7 - это самый низкий уровень нехватки, который делает его практически невидимым для других нагрузок ввода-вывода и пользователей. Видеть man ionice
для использования и деталей.
Помимо довольно общего подхода с ionice
есть хорошая цель сопоставления устройств (ioband), которая позволяет точно контролировать пропускную способность блочного устройства (DM). К сожалению, это не часть стандартного ядра.
Кроме того, вы, вероятно, можете ускорить tar с помощью
find /source/path -printf ""
find /source/path -perm 777 -printf ""
tar ... | mbuffer -m 256M -P 100 -p 1 ...
Я бы рекомендовал отказаться от tar и перейти на rsync (как упоминалось Dogsbody). Я использую BackupPC для резервного копирования файлов в своих системах Windows и Linux, он поддерживает использование tar, а также rsync и автоматически заботится о жестких ссылках, а также предоставляет приятный веб-интерфейс.
Как ответили другие, да, это нормально, и ionice
это хороший общий способ не позволить этому повлиять на вашу систему.
Несколько раз я видел людей tar
дела обстоят лучше, когда им это не нужно. Если какой-либо процент данных, которые вы копируете, не изменился с момента последней копии, я предлагаю указать rsync
попытка.
Это уменьшит ввод-вывод за счет копирования только файлов, которые были изменены с момента последней копии. вы не сможете уменьшить количество операций ввода-вывода более чем наполовину, так как все данные все равно нужно будет прочитать, но вы значительно уменьшите объем записываемых данных (что в зависимости от вашего оборудования также может быть более медленным).
Если вы хотите создавать отдельные копии / резервные копии каждый раз, когда он запускается, наиболее мощным вариантом является –link-dest, который позволяет жестко связать неизмененные файлы с предыдущей резервной копией. Это экономит ОГРОМНОЕ количество места на сервере резервного копирования. например Я создаю резервную копию машины (Фред), у Фреда есть жесткий диск объемом 20 ГБ, и я создаю резервную копию / копирую весь диск, за исключением / proc и / dev. Теперь у меня на сервере резервного копирования есть каталог размером 20 ГБ. На следующий день я снова делаю резервную копию Фреда и –link-dest на вчерашнюю резервную копию. Rsync сравнивает удаленные файлы с локальной копией и, если точно так же, не будет беспокоить их перенос, но жестко свяжет новый файл с вчерашним файлом. Любые измененные файлы копируются заново (или частично копируются с использованием вчерашней резервной копии, если это возможно). Если со вчерашнего дня было изменено только 100 МБ файлов, у меня теперь есть два каталога, оба по 20 ГБ файлов, но занимающие только 20,1 ГБ места на сервере резервного копирования!
Я надеюсь, что это поможет и все еще отвечает на ваш вопрос.