Avamar. Сбой резервного копирования по протоколу NDMP с ошибкой сегментации Fatal Signal 11 из-за использования памяти тома
Summary: Резервное копирование по протоколу NDMP (Network Data Management Protocol) Avamar может быть прервано с ошибкой «Fatal signal 11» (ошибка сегментации), когда очень большой том (например, 5 Тбайт, 3 млн файлов) выполняет несколько потоков, потребляя приблизительно 15 Гбайт оперативной памяти (ОЗУ) и превышая ограничения памяти. Устраните проблему, разделив том, уменьшив количество параллельных резервных копий или файлов, скопировав более низкий уровень каталога или увеличив количество параллельных потоков. ...
Symptoms
Индикация сбоев резервного копирования
При возникновении ошибки сегментации (сигнал 11) резервного копирования NDMP Avamar наблюдаются следующие признаки:
- Задание резервного копирования прерывается с сообщением о неустранимой ошибке, подобным следующему:
2017-10-13 19:42:00 avtar FATAL <5889>: Fatal signal 11 in pid 31103
- Записи журнала показывают обрабатываемые необычно большие наборы данных, например:
avtar Info <8688>: Status 2017-10-13 19:32:37, 3,050,352 files, 2,419,299 directories, 5,119 GB (3,050,352 files, 1.913 GB, 41.42% new) 15049MB 60% CPU (1 open files)
- Сообщается о высоком потреблении памяти, часто превышающем 15 ГБ ОЗУ/подкачку для одного потока резервного копирования.
- Активное множество потоков NDMP (до 8 на клиент), каждый из которых может использовать 2 Гбайт или более памяти.
- Несколько крупных резервных копий могут выполняться одновременно, что увеличивает общую нагрузку на систему.
- Затронутый том содержит миллионы файлов и каталогов (например, 3 млн файлов в каталогах размером 2,4 млн данных, охватывающих 5,1 Тбайт данных).
- Даже если изменен лишь небольшой объем данных (например, 1,9 Гбайт), процесс резервного копирования пытается отправить все файлы с NAS на обработку.
Cause
Факторы, лежащие в основе рокового сигнала 11.
Сигнал 11 (ошибка сегментации) генерируется, когда процесс обращается к памяти, которая ему не выделена. Следующие условия непосредственно вызвали это событие во время резервного копирования NDMP Avamar:
- Одновременно выполнялось несколько крупных резервных копий NDMP.
- Одна резервная копия обработала 3 050 352 файла и 2 419 299 каталогов, что в общей сложности составило 5,1 ТБ данных, при этом только 1,9 ГБ этих данных были изменены.
- Каждый поток NDMP может потреблять ≥ 2 Гбайт памяти. Клиенту было разрешено до 8 потоков, и несколько клиентов были активны одновременно, что приводило к высокому совокупному потреблению памяти.
- В процессе резервного копирования до сбоя использовалось около 15 ГБ ОЗУ/подкачки.
- Avamar ограничивает количество потоков на клиент, но НЕ применяет глобальное ограничение на общее количество потоков. Это позволяет совокупному использованию памяти превышать доступные ресурсы.
Эти условия, потребляющие много памяти, привели к тому, что процесс avtar столкнулся с ошибкой сегментации, записанной в журнале следующим образом:
2017-10-13 19:42:00 avtar FATAL <5889>: Fatal signal 11 in pid 31103
Resolution
Исправление сбоев резервного копирования NDMP Avamar, вызванных сигналом 11 (ошибка сегментации)
Шаг 1 - Оцените текущую нагрузку резервного копирования.
Используйте консоль администрирования Avamar или интерфейс командной строки для определения томов, создающих большие резервные копии NDMP.
Выводит список активных заданий NDMP и использование ими ресурсов.
$ avtar -listjobs -type ndmp
Шаг 2. Сокращение количества одновременных операций резервного копирования томов.
- Ограничьте количество томов, для которых выполняется одновременное резервное копирование, чтобы избежать чрезмерного потребления ОЗУ и подкачки.
- В Avamar Administrator измените расписание резервного копирования и отмените выбор перекрывающихся окон.
Шаг 3 - Разделите большие тома на более мелкие подтома
- Определите тома с более чем 3 миллионами файлов или более 5 Тбайт данных (как в примере).
- Создайте логические подтома на один уровень ниже в дереве каталогов.
- Настройте каждый подтом как отдельный клиент NDMP в Avamar.
- Пример. Создание нового клиента NDMP для подкаталога
$ avtar -addclient -name subvol1 -path /data/level2/subvol1
Шаг 4 - Настройте параметры потока NDMP.
- Увеличьте максимальное количество потоков NDMP на клиента, если сетевая система хранения данных поддерживает эту возможность.
- В конфигурации NDMP сетевой системы хранения данных по возможности увеличьте предельное значение потоков с 4 до 8 по умолчанию.
Шаг 5 - Ограничьте количество файлов на поток
- При создании политик резервного копирования установите более низкое пороговое значение «файлов на поток», чтобы объем памяти каждого потока не превышал 2 Гбайт.
- Для настройки этого значения используйте Avamar Administrator → Policies → Advanced Settings .
Шаг 6 - Мониторинг использования памяти во время резервного копирования
- Наблюдайте за использованием ОЗУ и подкачки на сервере Avamar во время выполнения резервного копирования.
- Убедитесь, что общий объем доступной памяти не превышает (например, менее 12 Гбайт для задания объемом 15 Гбайт).
- Мониторинг памяти в режиме реального времени
$ top -b -n 1 | grep avtar
Шаг 7. Проверьте исправление
- Запустите резервное копирование, которое ранее завершилось сбоем, еще раз.
- Убедитесь, что журнал больше не содержит
Fatal signal 11. - Убедитесь, что резервное копирование завершено успешно и что указанный объем данных соответствует ожиданиям.
- Проверьте последний журнал резервного копирования на наличие ошибок
$ tail -n 50 /var/log/avtar/backup.log