- 启用pstore保存系统在shutdown之前的log
添加启动参数 printk.always_kmsg_dump=Y reserve_mem=2M:4096:oops pstore.backend=ramoops ramoops.mem_name=oops
在配置了systemd-pstore.service的情况下
pstore的数据保存在 /var/lib/systemd/pstore/*
原始数据保存在 /sys/kernel/pstore/
- 配置kdump
配置kdump内核启动参数
crashkernel=2G-64G:256M,64G-:512M
在启动时内核根据此配置预留kexec加载内核和initramfs内存
此参数会被kdump.service自动配置覆盖,需要修改/etc/kdump.conf 在不使用自动配置的情况下,需要禁用auto_reset_crashkernel
....
auto_reset_crashkernel no
path /var/crash
core_collector makedumpfile -l --message-level 7 -d 31
failure_action shell
final_action reboot
....
kdump.service 默认使用dracut生成kexec 启动内核使用的initramfs, 和安装内核时使用的方法相同, dracut会根据配置文件从根文件系统收集启动时需要的ramdisk内容和内核模块
配置完成使用
systemctl restart kdump.service
充气kdump服务
- 使用kdumpctl 测试配置是否成功
kdumpctl test
测试会触发panic,由于kdump会使用kexec 将内核加载到内存中,在panic时会自动加载新内核并在kexec的内核运行makedumpfile 将/proc/vmcore 的内容保存在磁盘或者收集kdump的服务器
发表回复