[步骤] Linux Kdump 的开启 (用于收集内核崩溃时的信息) (openSUSE 版)

步骤一:确保 kdump 软件包已安装

# rpm -qa | grep kdump || zypper install kdump

(注意:此方法只有 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=128M,high......"
.....

并确保此文件其他地方没有和 crashkernel= 相关的参数


补充:这里的 crashkernel=128M,high 代表给 Kdmup 预留的内存大小是 128M,这里也可以指定其他值,例如:crashkernel=128M,high、crashkernel=256M,high 等等。这里其实还有1 个 crashkernel=<value>,low ,这个值通常可以不用设置,其默认值是 72M。当给 crashkernel=<value>,high 设置固定值时建议:
1) 1 GB 到 4 GB 内存设置成 160 M,例如:crashkernel=160M,high
2) 4 GB 到 64 GB 内存设置成 192 M,例如:crashkernel=192M,high
3) 64 GB 到 1 TB 内存设置成 256 M,例如:crashkernel=256M,high
4) 大于 1 TB 内存设置成 512 M,例如:crashkernel=512M,high

2.1.1.2 让刚刚修改的内核参数生效
2.1.1.2.1 生成新的 /boot/grub2/grub.cfg 文件
# grub2-mkconfig -o /boot/grub2/grub.cfg
2.1.1.2.2 重启系统
# reboot

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 加载刚刚设置的预留的内存大小

# 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 文件里指定的)

(注意:如果 Kdump 没有生成的话,可以适当增加 crashkernel=,high 的值,之后再执行相印的步骤,之后再测试)