kdump是一种基于kexec的内核崩溃转储技术。kdump需要两个内核,分别是生产内核和捕获内核,生产内核是捕获内核服务的对象,且保留了内存的一部分给捕获内核启动使用。当系统崩溃时,kdump使用kexec启动捕获内核,以相应的ramdisk一起组建一个微环境,用以对生产内核下的内存进行收集和转存。
配置kdump
实验环境:CentOS7
实验内核:linux-3.10.0-514.el7.x86_64
安装kexec-tools
使用kdump服务,必须要用到kexec-tools工具包。
| 1 | sudo yum update | 
安装完成之后可以通过kexec -version查看kexec的版本。
配置kdump kernel
需要为kdump kernel配置内存区域,kdump要求系统正常使用时,不能使用kdump kernel所占用的内存。
修改grub文件
| 1 | vim /etc/default/grub | 
需要将GRUB_CMDLINE_LINUX=”crashkernel=auto…”中的auto修改为128M。一般设为128M或256M。
更新grub配置
只要更改了grub文件,都需要更改grub配置
| 1 | sudo grub2-mkconfig -o /boot/grub2/grub.cfg | 
重启系统
| 1 | reboot | 
修改kdump默认配置
| 1 | vim /etc/kdump.conf | 
其中,需要注意的三行内容是
| 1 | path /var/crash #指定coredump文件放在/var/crash文件夹中 | 
开启kdump服务
| 1 | systemctl start kdump.service //启动kdump | 
测试kdump是否开启
检查kdump开启成功
| 1 | service kdump status | 
如下所示,表示开启成功

kdump开启成功
手动触发crash
| 1 | echo 1 > /proc/sys/kernel/sysrq | 
如果配置成功,系统将自动重启,重新进入系统,可以看到/var/crash文件夹下生成了相应文件,是一个以生成coredump日期为文件名的文件,如图所示:


