步骤一:确保 crash 和 kernel-debuginfo 两个软件包已安装
# rpm -qa | grep crash || zypper install crash ; rpm -qa | grep kernel-debug || zypper install kernel-debug
(注意:此方法只有 openSUSE & SLES 可以使用)
步骤二:给 Kdump 预留内存
2.1 给 Kdump 预留内存
2.1.1 方法一:通过在 /etc/default/grub 配置文件里修改 crashkernel 参数
2.1.1.1 在 /etc/default/grub 配置文件里修改 crashkernel 参数
# vim /etc/default/grub
在这一行里:
.....
GRUB_CMDLINE_LINUX_DEFAULT="......"
.....
确保有:
.....
GRUB_CMDLINE_LINUX="crashkernel=auto......"
.....
并确保此文件其他地方没有和 crashkernel= 相关的参数
(
补充:这里的 auto 代表系统会根据内存大小自动设置一个值,也可以指定一个值,例如:crashkernel=128M,high、crashkernel=256M,high 等等。如果设置成一个固定值,建议
1) 1 GB 到 4 GB 内存设置成 160 M
2) 4 GB 到 64 GB 内存设置成 192 M
3) 64 GB 到 1 TB 内存设置成 256 M
4) 大于 1 TB 内存设置成 512 M
)
2.1.1.2 让刚刚修改的内核参数生效
# grub2-mkconfig -o /boot/grub2/grub.cfg
2.1.2 方法二:通过 yast 工具修改 crashkernel 参数
2.1.2.1 方法二:通过 yast 工具修改 crashkernel 参数
# yast kdump
之后将 –Start-Up 中的 Kdump Low Memory [MiB] (72 – 3069) 修改为 256,将 –Start-Up 中的 Kdump High Memory [MiB] (0 – 7168) 修改为 512,之后再选择 [ OK ]
(补充:当 Kdump Low Memory 设置为 256,Kdump High Memory 设置为 512 时更易触发 Kdump)
(注意:此方法只有 openSUSE & SLES 可以使用)
2.1.2.2 让刚刚修改的内核参数生效
# reboot
2.2 显示给 Kdump 预留内存的大小
# makedumpfile --mem-usage /proc/kcore
步骤三:修改 Kdump 的配置信息
3.1 修改 Kdump 的配置文件
# vim /etc/kdump.conf
将以下内容:
......
path /var/crash
core_collector makedumpfile -l --message-level 1 -d 31
......
修改为:
......
path /var/crash
core_collector makedumpfile -c -l --message-level 1 -d 31
default reboot
......
(
补充:
1) path /var/crash
2) -c 参数会对搜集的内核崩溃时的信息进行压缩
3) default reboot 参数会让 KDUMP 收集完内核崩溃时的信息后重启
)
3.2 让刚刚修改的 Kdump 配置文件生效
# systemctl enable kdump.service ; systemctl restart kdump.service
步骤四:测试 Kdump
4.1 造成系统内核崩溃
# echo 1 > /proc/sys/kernel/sysrq ; echo c > /proc/sysrq-trigger
(注意:此时系统会自动崩溃并重启)
4.2 显示 Kdump 生成内核崩溃信息
# ls /var/crash/<date>/vmcore
(补充:这里的内核崩溃信息存放目录 /var/crash/,是刚刚在 /etc/kdump.conf 文件里指定的)