Kdump 是一种基于 kexec的 Linux内核崩溃捕获机制,将 kernel崩溃前的内存镜像保存,程序员通过分析该文件找出 kernel崩溃的原因,从而进行系统改进。
本次测试环境:Redhat 6.5
注意:设置kdump需要重启操作系统
1. 确定kdump相关package已安装好
[root@server01 ~]# rpm -qa | grep kdump
system-config-kdump-2.0.5-15.el6.noarch
[root@server01 ~]# rpm -qa | grep kexec
kexec-tools-2.0.0-273.el6.x86_64
2. 修改启动参数,在内核行末尾添加红色部分
vim /etc/grub.conf
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=4f9abead-007c-4594-b870-793b53ab329d rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet crashkernel=128M
# 注意:上面是一行
3. 修改/etc/kdump.conf,配置dump文件保存在何处,默认保存在/var/crash下,可以不用修改,但要保证/var/crash下有足够磁盘空间
4. 设定kdump服务开机启动
chkconfig kdump on
5. 重启服务器使配置生效:reboot
6. 验证是否生效
128M内存不被正常的系统使用,为捕获内核保留,free -m的输出会显示内存比不加参数时少了128M;
[root@server01 ~]# service kdump status
Kdump is operational
通过sysrq强制系统崩溃,注意:不要在生产环境做此步操作
echo "c" > /proc/sysrq-trigger
系统会重启内核,重启后查看宕机文件:
[root@server01 ~]# ll /var/crash/
total 4
drwxr-xr-x 2 root root 4096 Aug 21 14:47 127.0.0.1-2017-08-21-14:45:14
[root@server01 ~]# ll /var/crash/127.0.0.1-2017-08-21-14\:45\:14/
total 24244
-rw------- 1 root root 24727586 Aug 21 14:45 vmcore
-rw-r--r-- 1 root root 89720 Aug 21 14:45 vmcore-dmesg.txt