Что такое kdump centos 7

Обновлено: 21.11.2024


Kdump — это надежный механизм сброса аварийных дампов ядра, в котором аварийный дамп захватывается вторым ядром (аварийным ядром), загружаемым при сбое основного ядра.

Это второе ядро ​​(краш-ядро) использует небольшой объем памяти для загрузки и записи файла образа дампа (vmcore). Часть памяти, зарезервированная основным ядром, используется вторым ядром для загрузки. Сохранение аварийного дампа основного ядра является результатом механизма kexec, который позволяет загрузить второе ядро ​​без необходимости перезагрузки системы и прохождения процедур BIOS.

Время захвата файла vmcore зависит от объема занимаемой памяти при сбое. Среднее время захвата файла vmcore размером 5 ГБ составляет примерно 20–25 минут.

Когда kdump успешно создается во время системного сбоя, файл vmcore создается в расположении дампа (обычно в каталоге /var/crash/), а затем система перезагружается. После сбоя необходимо проанализировать файл vmcore, чтобы определить основную причину сбоя.

Ниже мы покажем, как настроить и управлять службой kdump в CentOS 7 / RHEL 7.

1. Требования к памяти

Основным фактором, влияющим на объем резервируемой памяти, является общий объем установленной системной оперативной памяти.

физическая оперативная память объем зарезервированной памяти
2 ГБ и более< /td> 160 МБ + 2 бита на каждые 4 КБ ОЗУ
1 ТБ минимум: 224 МБ (160 МБ + 64 МБ)

<р>2. Конфигурация Kdump

В таблице ниже представлена ​​конфигурация kdump по умолчанию, которая поставляется с системой:

< tr > < /tr> < /tbody>
параметр значение описание
расположение файла дампа /var/crash значение, установленное в файле /etc/kdump.conf
настройки памяти автоматический параметр crashkernel=auto устанавливается в файле /boot/grub/grub.conf, 128 МБ назначается системой автоматически (если ОЗУ >= 2 ГБ)
сжатие включено Значение, установленное в файле /etc/kdump.conf для уменьшения размера vmcore (сжатие выполняется перед записью vmcore на диск)
уровень дампа 31 значение, установленное в файле /etc/kdump.conf для дампа только ядра (ненужные страницы исключены)
уровень сообщения 1 значение, установленное в файле /etc/kdump.conf для отображения индикатора выполнения
действие по умолчанию (в случае сбоя дампа) перезагрузка значение, заданное в файле /etc/kdump.conf

<р>3. Установите и включите kdump во время установки системы

Kdump можно включить и частично настроить в конце процесса установки CentOS 7/Red Hat 7. Программа установки Anaconda предоставляет экран для настройки kdump при выполнении установки с использованием графического интерфейса:

Параметры резервирования памяти:

  • Автоматически: 128 МБ назначается системой автоматически (если объем физической памяти >= 2 ГБ).
  • Вручную — назначение вручную
<р>4. Установите kdump на уже установленную систему

Некоторые параметры установки, такие как выборочная установка Kickstart, могут не устанавливать или включать kdump по умолчанию.
Чтобы установить службу kdump вручную, выполните следующую команду:

При необходимости установите графический инструмент настройки kdump (необязательно):

<р>5. Настроить службу kdump

Объем памяти, зарезервированный для kdump, указан в системном загрузчике — GRUB2.

Чтобы настроить/изменить резервирование памяти для kdump, отредактируйте файл конфигурации grub:

Измените следующий параметр в соответствии со своими предпочтениями:

Далее обновите настройки GRUB2:

В системах UEFI вместо этого выполните следующее:

<р>6. Резервирование места на диске для каталога /var/crash

Хорошей практикой является монтирование каталога /var в отдельный раздел или логический том и резервирование достаточного дискового пространства в разделе /var для каталога /var/crash для создания нескольких файлов vmcore, если один за другим происходит серия сбоев. Если наш сервер обычно работает с повышенным потреблением памяти и некоторые сбои происходят один за другим, файлы vmcore могут занимать несколько гигабайт дискового пространства в каталоге /var.
Поддержка Red Hat предлагает выделять место на диске для каталога /var/crash по следующей схеме: RAM + 2% больше, то есть если у нас на сервере установлено 32GB RAM, то нам нужно выделить ~ 33 ГБ (32,64 ГБ) дискового пространства для каталога /var/crash. Конечно, это место, необходимое для одного файла vmcore с полным уровнем дампа (все страницы, включенные в дамп) без сжатия.При включенном сжатии и уровне дампа 31 размер файла vmcore значительно уменьшается (в несколько раз).

<р>7. Управление службой kdump

Команды ниже используются для управления службой kdump.

Проверить статус службы kdump:

Запустить службу kdump:

Остановить службу kdump:

Включить службу kdump (постоянно после перезагрузки):

Отключить службу kdump (постоянно после перезагрузки):

<р>8. Проверка механизма kdump

Прежде чем мы начнем тестировать kdump, убедитесь, что служба запущена:

Самый простой (и, возможно, самый быстрый) способ протестировать механизм kdump – вызвать сбой с помощью следующих команд:

Примечание: приведенные выше команды вызовут сбой ядра! Не используйте эти команды в рабочей среде!

Во время сбоя механизм kdump создает каталоги сбоя в формате метки времени (адрес-ГГГГ-ММ-ДД-ЧЧ:ММ:СС) в ранее заданном расположении файла дампа (обычно /var/crash). После сбоя при перезагрузке системы мы можем проверить каталоги сбоя и файлы vmcore, сгенерированные внутри:

Оставить ответ Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

kdump — это усовершенствованный механизм аварийного дампа. При включении система загружается из контекста другого ядра. Это второе ядро ​​резервирует небольшой объем памяти, и его единственная цель — захватить образ дампа ядра на случай сбоя системы. Поскольку возможность анализа дампа ядра значительно помогает определить точную причину системного сбоя, настоятельно рекомендуется включить эту функцию.

<р>1. Установите пакет kexec-tools, если он еще не установлен.
Чтобы использовать службу kdump, у вас должен быть установлен пакет kexec-tools. Установите kexec-tools, если он еще не установлен.

<р>2. Настройка использования памяти в GRUB2
Чтобы настроить объем памяти, зарезервированный для ядра kdump, измените /etc/default/grub и измените GRUB_CMDLINE_LINUX , установите параметр crashkernel=[size] в список параметров ядра.

Выполните приведенную ниже команду, чтобы восстановить конфигурацию grub:

Перезагрузите систему, чтобы параметр ядра вступил в силу.

<р>3. Настройка расположения дампа
Чтобы настроить kdump, нам нужно отредактировать файл конфигурации /etc/kdump.conf. По умолчанию файл vmcore хранится в каталоге /var/crash/ локальной файловой системы. Чтобы изменить локальный каталог, в котором должен быть сохранен дамп ядра, и замените значение на желаемый путь к каталогу.
Например:

При желании вы также можете сохранить дамп ядра непосредственно в необработанный раздел.
Например:

<р>5. Изменение действия по умолчанию
Мы также можем указать действие по умолчанию, которое будет выполняться, когда дамп ядра не будет создан в нужном месте. Если действие по умолчанию не указано, по умолчанию предполагается «перезагрузка».
Например:

<р>6. Запустите демон kdump
Проверьте и убедитесь, что в командной строке ядра указана конфигурация kdump, а память зарезервирована для аварийного ядра:

Установить возможность запуска службы kdump при перезагрузке системы.

Чтобы запустить службу в текущем сеансе, используйте следующую команду:

<р>7. Тестирование kdump (запуск kdump вручную)
Чтобы проверить конфигурацию, мы можем перезагрузить систему с включенным kdump и убедиться, что служба запущена.

Затем введите в командной строке следующие команды:

Это приведет к сбою ядра Linux, и файл с адресом ГГГГ-ММ-ДД-ЧЧ:ММ:СС/vmcore будет скопирован в место, выбранное вами в конфигурации (то есть в /var/ сбой/ по умолчанию)

Kdump — это механизм аварийного дампа ядра Linux. В случае сбоя системы Kdump предоставляет образ дампа памяти (vmcore). Это изображение может помочь в определении причины сбоя. Настоятельно рекомендуется включить функцию Kdump.

Kexec и Kdump вместе обеспечивают более быструю загрузку и создание надежных виртуальных ядер ядра для диагностических целей. Kexec — это механизм быстрой загрузки, который позволяет загружать ядро ​​Linux из контекста уже работающего ядра без прохождения через BIOS. Kdump использует Kexec для загрузки второго ядра при сбое системы. Аварийный дамп записывается из контекста только что загруженного ядра, а не из контекста аварийного ядра. Это второе ядро ​​загружается с очень небольшим объемом памяти и создает образ дампа.

Установка и настройка kdump

Чтобы включить и использовать Kdump, установите следующий пакет:

Включение Kdump требует, чтобы вы зарезервировали часть системной памяти для ядра захвата. Эта часть памяти недоступна для других целей. Объем памяти, зарезервированный для ядра Kdump, представлен параметром загрузки crashkernel. Это добавляется к строке ядра в файле конфигурации GRUB, /boot/grub2/grub.cfg. В следующем примере включается Kdump и резервируется 128 МБ памяти:

Помимо резервирования памяти, вы можете указать начальный адрес (смещение) этой зарезервированной памяти. Например, добавление следующего параметра в строку ядра резервирует 128 МБ памяти, начиная с физического адреса 0x01000000 (16 МБ):

– Чтобы установить смещение на 48M:

– Если у вас более 128 ГБ ОЗУ, используйте следующую настройку:

– Если требуется больший контроль над размером и размещением зарезервированной памяти, используйте следующий формат:

– значение range[n] указывает диапазон значений, которые сопоставляются с объемом физической оперативной памяти, имеющейся в системе. Соответствующее значение size[n] указывает объем памяти Kexec для резервирования.

– В следующем примере Kexec сообщает, что нужно зарезервировать 64 МБ ОЗУ, если в системе содержится от 512 МБ до 2 ГБ памяти. Если в системе более 2 ГБ физической памяти, зарезервируйте 128 МБ:

– В системах x86_64 с объемом памяти не менее 2 ГБ можно автоматически выделить память для kdump. Используйте следующий параметр для автоматического выделения памяти для kdump:

Включение kdump

После добавления параметра crashkernel в файл /boot/grub2/grub.cfg перезагрузите систему, чтобы память была зарезервирована для ядра захвата. Команда «free –m» правильно показывает, что системе доступно меньше памяти.

Используйте команду systemctl, чтобы разрешить запуск службы Kdump во время загрузки. Используйте команду systemctl для запуска службы Kdump.

Это загружает ваш образ kernel-kdump через Kexec, оставляя вашу систему готовой к захвату vmcore при сбое.

Создать аварийный дамп

Вы можете протестировать конфигурацию kdump, выполнив принудительный сбой системы с помощью следующей команды:

Это приводит к отображению паники, после чего система перезагружается в ядро ​​Kdump. Когда процесс загрузки достигает точки запуска службы Kdump, vmcore копируется на диск в папку по умолчанию, /var/crash/[ГГГГ-ММ-ДД-ЧЧ:ММ]/vmcore. Затем система перезагружается обратно в нормальное ядро.

Примечание. Kdump не поддерживается в гостевых системах Xen domU. Виртуализированные системы могут использовать команду xm dump-core для паники.

kdump — это надежный механизм аварийного дампа ядра, использующий программное обеспечение kexec. Аварийные дампы перехватываются из контекста только что загруженного ядра; не из контекста разбившегося ядра. Kdump использует kexec для загрузки второго ядра при сбое системы. Это второе ядро, часто называемое ядром захвата, загружается с очень небольшим объемом памяти и записывает образ дампа.

Использование kdump позволяет загрузить ядро ​​захвата без прохождения через BIOS, поэтому содержимое памяти первого ядра сохраняется, что по сути является дампом ядра после сбоя.

Требования к памяти

Чтобы kdump мог захватить дамп сбоя ядра и сохранить его для дальнейшего анализа, часть системной памяти должна быть постоянно зарезервирована для ядра захвата. Когда эта часть системной памяти зарезервирована, она недоступна основному ядру.

Требования к памяти зависят от определенных системных параметров. Одним из основных факторов является аппаратная архитектура системы. Чтобы узнать точное имя архитектуры компьютера (например, x86_64) и вывести его на стандартный вывод, введите в командной строке следующую команду:

Другим фактором, влияющим на объем резервируемой памяти, является общий объем установленной системной памяти. Например, на архитектуре x86_64 объем зарезервированной памяти составляет 160 МБ + 2 бита на каждые 4 КБ ОЗУ. В системе с установленной общей физической памятью 1 ТБ это означает 224 МБ (160 МБ + 64 МБ).

Установка kdump

Чтобы использовать службу kdump в вашей системе, убедитесь, что у вас установлен пакет kexec-tools.

Для этого введите в командной строке от имени root следующее:

В IBM Power (ppc64) и IBM System z (s390x) ядро ​​перехвата предоставляется в отдельном пакете kernel-kdump, который необходимо установить для работы kdump:

Добавление параметров загрузки

Опция " crashkernel= " может быть определена несколькими способами.

    Значение auto включает автоматическую настройку зарезервированной памяти на основе общего объема памяти в системе. Начиная с ядер RHEL7, обычно следует использовать crashkernel=auto. Ядро автоматически зарезервирует соответствующий объем памяти для ядра kdump.

Приведенный выше пример означает, что kdump резервирует 128 МБ памяти, начиная с 16 МБ (физический адрес 0x01000000). Если для параметра смещения установлено значение 0 или оно полностью опущено, kdump автоматически смещает зарезервированную память

Пример файла конфигурации GRUB2 ( /etc/sysconfig/grub )

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed, выпуск .*$,,g' /etc/system-release)"
GRUB_DEFAULT=сохранено
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="консоль"
GRUB_CMDLINE_LINUX цвет: салатовый;">crashkernel= авто "
GRUB_DISABLE_RECOVERY="true"

После изменения /etc/sysconfig/grub заново создайте конфигурацию GRUB2, используя отредактированный файл по умолчанию. Если в вашей системе используется прошивка BIOS, выполните следующую команду:

ПРИМЕЧАНИЕ. После добавления параметра Crashkernel систему необходимо перезагрузить, чтобы память Crashkernel была зарезервирована для использования kdump.

Где найти сгенерированные vmcores?

Когда гипервизор снова заработает, vmcore по умолчанию можно будет найти в /var/crash/:

ВАЖНОЕ ПРИМЕЧАНИЕ. Убедитесь, что свободное дисковое пространство раздела, который вы указали для хранения vmcore, как минимум больше, чем вся физическая память в системе. Если ваша физическая память составляет 131 ГБ, оставьте дисковое пространство / размер местоположения не менее 131 ГБ, которые вы используете в kdump.conf

Настройка основного сборщика

Чтобы уменьшить размер файла дампа vmcore, kdump позволяет указать внешнее приложение (сборщик ядер) для сжатия данных и, при желании, исключить всю ненужную информацию. В настоящее время единственным полностью поддерживаемым сборщиком ядра является makedumpfile.

Чтобы включить сжатие файла дампа, добавьте параметр -c. Например:

Чтобы удалить определенные страницы из дампа, добавьте параметр значения -d, где значение представляет собой сумму значений страниц, которые вы хотите исключить.
Например, чтобы удалить как нулевые, так и свободные страницы, используйте следующее:

Включение службы

Чтобы запустить демон kdump во время загрузки, введите в командной строке от имени root следующее:

Это включает службу для multi-user.target. Точно так же ввод systemctl stop kdump отключает его. Чтобы запустить службу в текущем сеансе, используйте следующую команду от имени пользователя root:

Тестирование конфигурации kdump

Чтобы проверить конфигурацию, перезагрузите систему с включенным kdump и убедитесь, что служба запущена:

Затем введите в командной строке следующие команды:

Это приводит к сбою ядра Linux, и файл с адресом ГГГГ-ММ-ДД-ЧЧ:ММ:СС/vmcore копируется в место, выбранное вами в конфигурации (то есть в /var/crash/ по умолчанию).

Анализ зависшей задачи

Мы должны использовать "hung_task_panic", который управляет поведением ядра при обнаружении зависшей задачи.
Этот файл отображается, если включен параметр CONFIG_DETECT_HUNG_TASK.

Для временных изменений:

Для постоянных изменений

При этом всякий раз, когда наблюдается видимый блокирующий процесс, происходит паника ядра и создается дамп ядра, который можно дополнительно проанализировать для устранения проблемы.

ядро: ИНФОРМАЦИЯ: задача taskMonitor:6223 заблокирована более чем на 120 секунд.
ядро: ИНФОРМАЦИЯ: задача top:7355 заблокирована более чем на 120 секунд.

Читайте также: