kdump

2020-06-15  本文已影响0人  木头_95b3

kdump 是一种先进的基于 kexec 的内核崩溃转储机制。当系统崩溃时,kdump 使用 kexec 启动
到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保
留了内存的一部分给第二内核启动用。由于 kdump 利用 kexec 启动捕获内核,绕过了 BIOS,所
以第一个内核的内存得以保留。这是内核崩溃转储的本质。

安装系统的时候,如果不做改变,默认就是开启的(centos 7)
image.png

1.安装kexec-tools

使用kdump服务,必须要用到kexec-tools工具包。(默认是已经存在了)

 yum update
 yum install kexec-tools

安装完成之后可以通过kexec -version查看kexec的版本。

2.2 配置kdump kernel

需要为kdump kernel配置内存区域,kdump要求系统正常使用时,不能使用kdump kernel所占用的内存。
1.修改grub文件
安装系统时,kdump 默认 crashkernel=auto,关闭:就没有这个字段,就需要自己添加;
我们这里自定义为: crashkernel=128M

]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=128M spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
~                                 

需要将GRUB_CMDLINE_LINUX="crashkernel=auto..."中的auto修改为128M。一般设为128M或256M。生产中给 256M。

wKioL1iZvUXASGEzAABxKlMrWLM779.png

2.更新grub配置

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

3.重启系统

reboot

2.3 修改kdump默认配置

vim /etc/kdump.conf

其中,需要注意的三行内容是

path /var/crash            #指定coredump文件放在/var/crash文件夹中(系统默认就是这个目录)
core_collector makedumpfile -c -l -message-level 1 -d 31   #加上-c表示压缩,原文件中没有
default reboot         #生成coredump后,重启系统

2.4 开启kdump服务

systemctl start kdump.service     //启动kdump
systemctl enable kdump.service    //设置开机启动

2.5 测试kdump是否开启

1.检查kdump开启成功

service kdump status

如下所示,表示开启成功

image

2.手动触发crash

#echo 1 > /proc/sys/kernel/sysrq
#echo c > /proc/sysrq-trigger

如果配置成功,系统将自动重启,重新进入系统,可以看到/var/crash文件夹下生成了相应文件,是一个以生成coredump日期为文件名的文件,如图所示:

image

作者:牧_青
链接:https://www.jianshu.com/p/8e031b28d98b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上一篇 下一篇

猜你喜欢

热点阅读