Итак, для сохранения дампа при падении ядра в Linux или kernel panic, необходимо настроить сервис kdump и установить несколько дополнительных пакетов.
Сам механизм представляет собой дополнительное маленькое ядро, смысл существования которого состоит в том, чтобы после падения основного ядра системы, перехватить управление, сохранить дамп и перезагрузить систему.
Для Fedora Linux устанавливается всё хозяйство просто командой:
yum install –enablerepo=fedora-debuginfo –enablerepo=updates-debuginfo kexec-tools crash kernel-debuginfo
А вот для Oracle Linux 6.4 чуть сложнее:
yum install crash -y
export DLP=”https://oss.oracle.com/ol6/debuginfo”
Команды приведены для текущего ядра системы. Если нужны пакеты для других версий ядра, то нужно указать версию вместо `uname -r`.
Далее, необходимо добавить в конфиг загрузчика (/boot/grub/grub.conf или /boot/efi/EFI/redhat/grub.conf – зависит от того, используется UEFI при загрузке сервера или нет): параметр ядра “crashkernel=128M“. Цифра указывает, сколько ОЗУ резервируется под резервное ядро. Через @ можно указать так же смещение в памяти, если необходимо. Например 128M@16 – зарезервирует 128 Мб ОЗУ начиная с физического адреса 0x01000000 (16MB).
Теперь надо включить службу kdump для автозагрузки:
chkconfig kdump on
Также можно подредактировать конфиг /etc/kdump, но он и по-умолчанию достаточно хорош.
Теперь перезагрузим сервер, чтобы ядро загрузилось с новым параметром:
shutdown -r now
Проверяем, правильно загрузилось ядро с нашими параметрами:
cat /proc/cmdline
Также проверим, работает ли kdump:
service kdump status
Kdump is operational
Теперь, искусственно вызовем kernel panic командой:
echo c > /proc/sysrq-trigger
При этом будет подгружаться маленькое резервное ядро и сохранит дамп. На сохранение дампа нужнон екторое время, потому в определенный момент может показаться, что ядро подвисло – нужно дождаться окончания процесса.
После перезагрузки, мы сможем найти наши дампы (по-умолчанию) в папке /var/crash. Запускаем анализатор дампа:
После запуска crash покажет нам некоторую полезную инфу и даст свою командную строку:
Помощь по командам: help или help command
Но, чтобы создавались дампы от процессов необходимо подредактировать файл /etc/limits.conf, например, командой:
sed -i ‘s/.. *soft *core *0/*tsoftttcorettunlimited/g’ /etc/security/limits.conf
Всем удачи и поменьше багов! 🙂