У меня такая ситуация: В сети есть набор машин (NAS и прочие "серверы"). Есть еще одна машина для резервного копирования. Он регулярно собирает данные со всех 4 машин с помощью rsync и создает инкрементные резервные копии. Резервное копирование выполняется по запросу, и все сценарии запускаются с ionice -c idle nice -19
. Для наблюдения за стабильностью всей системы на всех машинах Linux установлена система мониторинга (munin). Munin просматривает с интервалом в 10 минут различные системные переменные и состояния и отправляет электронные письма в случае проблем / предупреждений.
Каждую ночь в конце резервного копирования (особенно после длительного резервного копирования самой большой машины) munin жалуется на большие задержки диска. Я уже увеличил допустимые пределы, но все же ожидание ввода-вывода в конце такого резервного копирования составляет 10 секунд или более. На мой взгляд, это довольно высокий показатель.
Скрипт резервного копирования написал я. Нужен был подход, аналогичный программе rsnapshot, но с небольшими изменениями. Таким образом, я создал его сам (с гораздо меньшей функциональностью). На самом деле это rsync
s удаленные машины во временную папку, помимо других резервных копий, а затем соответственно меняют / удаляют старые резервные копии. Согласно моим исследованиям, проблема возникает при записи новой резервной копии (в основном при жесткой привязке) или при ротации / удалении резервных копий. Я не могу точно сказать, в чем проблема, поскольку детализация munin составляет всего 10 минут.
Место назначения резервных копий находится в цепочке уровней абстракции: Физические разделы собираются в большой массив RAID5 (mdadm). В md
устройство используется как LVM PV. Внутри VG находится большой раздел (помимо других незашифрованных), который зашифрован с помощью LUKS, и внутри него находится второй LVM, который позволяет назначать хранилище различным разделам.
Любые исследования в сети приводили в основном к проблемам с сетевым подключением и задержкам, возникающим на этом уровне. Хотя мое резервное копирование также выполняется по сети, проблема здесь в локальной производительности на сервере резервного копирования.
Что я сделал до сих пор:
--bwlimit
не поможет, поскольку жесткие ссылки создаются локально приемником. Верный?cron
. Я добавил ionice
/nice
но большой разницы не было.atop
на машине, чтобы изучить другие процессы. Я не вижу там ничего ненормального (кроме 100% CPU iowait большую часть времени на конечных этапах резервного копирования).Теперь я хотел бы задать несколько вопросов:
rsync
процесс истощает любое действие io? Таким образом, если бы был другой процесс, он был бы обслужен первым, но поскольку его нет, диск используется с высокой скоростью, и для этого rsync
процесс, задержка записи настолько высока (что нормально).Чтобы прояснить мое утверждение: я прекрасно понимаю, что создание резервной копии создаст некоторую нагрузку на систему (особенно на диски), когда дело доходит до записи файлов / создания ссылок.
Если вам нужна дополнительная информация, скажите, что вам нужно.