Механизм kdump – это функция ядра Linux, которая позволяет создавать дампы в случае сбоя ядра.
Он производит точную копию памяти, которую можно проанализировать на предмет первопричины сбоя.
Это скрипт, который настраивает kdump (дамп ядра).
Kdump предоставляет дамп памяти в файл с именем vmcore, когда в ядре возникает критическая проблема.
Vmcore часто требуется, чтобы исследовать проблему.
Аварийный дамп записывается из контекста недавно загруженного ядра, а не из контекста аварийного ядра. Kdump использует kexec для загрузки второго ядра при сбое системы.
Kexec – это механизм быстрой загрузки, который позволяет перезагружать новое ядро Linux из контекста работающего ядра без прохождения прошивки или горячего запуска.
В этом посте объясняются шаги по устранению распространенных проблем с kdump.
Проверка настройки kdump
1. Проверьте, установлен ли в системе пакет kexec-tools.
# rpm -qa | grep kexec
2. Проверьте командную строку ядра в текущем работающем ядре на наличие параметра «crashkernel»:
# cat /proc/cmdline
3. Проверьте, зарезервирована ли память для аварийного ядра при запуске ядра:
# dmesg | grep Reserving
4. Проверьте путь к дампу:
# grep -v ^# /etc/kdump.conf
5. Проверьте объем памяти, доступный в файловой системе, указанной в параметре пути на предыдущем шаге:
# df -h
6. Проверьте состояние сервиса kdump:
# service kdump status ### В CentOS/RHEL 6 # systemctl status kdump ### В CentOS/RHEL 7
Когда служба Kdump не работает
1. Проверьте настройку kdump, следуя приведенному выше разделу.
2. Запустите сервис kdump
# service kdump status ### In CentOS/RHEL 6 # systemctl status kdump ### In CentOS/RHEL 7
3. Проверьте ошибку с терминала.
4. Дополнительную информацию об ошибке запуска службы kdump можно найти в /var/log/messages.
Когда настройка kdump в порядке, а состояние службы kdump работает, но vmcore не генерируется при возникновении сбоя
1. Отредактируйте файл /etc/kdump.conf и добавьте следующую строку, чтобы получить оболочку при сбое генерации vmcore:
default shell
2. В оболочке проверьте доступное хранилище, проверьте, смонтирована ли целевая файловая система vmcore, а затем попробуйте скопировать vmcore вручную и определить,работает ли он.
# cp /proc/vmcore [destination]
Когда оболочка не получена и crashkernel застряло при загрузке
1. Проверьте сообщения на консоли и найдите сообщения о запуске аварийного ядра.
Ищите, где оно застряло.
Crashkernel – это то же самое ядро, которое запускается при запуске системы, и, следовательно, можно увидеть сообщения, похожие на обычные сообщения о загрузке ядра, но с активированными ограниченными устройствами. Например: в аварийном ядре включен только 1 процессор. Обнаружен только целевой диск хранения.
2. Если вы видите сообщения об ошибках выделения страниц, высока вероятность того, что зарезервированного crashkernel недостаточно, и вам потребуется увеличить значение параметра ядра ‘crashkernel’.