centos5.7下的kdump

我的centos5.7是台虚拟机,用的是virtual box安装的。安装的时候安装模式我没有选择图像界面,而是最小化安装,即只有命令行。

1,从上图可以看出我的kdump没有安装(5.7最小化安装没有装kdump),我的内存给的是4096而到了这里只能使用3个G。

2,接下来安装kexec-tools、kernel-debuginfo和kernel-debuginfo-common。kexec-tools这个包装了之后才有kdump服务,安装kernel-debuginfo和kernel-debuginfo-common是因为crash分析vmcore文件时要用到它的vmlinux文件,不安装的话找不到vmlinux文件就无法使用crash分析vmcore文件了。我这儿kernel-debuginfo和kernel-debuginfo-common事先已经从官网下载好了。

3,安装好了之后我们看一眼kdump的状态。看到状态是not operational,即不能操作,因为我们还没有配置kdump,也还没有启动它。

4,配置kdump。我把配置过程放进了脚本当中。当然这个配置过程的来自我的导师钟会,只不过我把它放到了脚本当中而已。执行脚本即可。

 

5,脚本执行完成之后配置文件/etc/kdump.conf的内容变成了这样

第一行是 / 分区对应的设备和文件系统。

第二行是捕捉崩溃保存的文件所存放的位置。

第三行设置保存内核镜像内容的级别,-c表示使用makedumpfile压缩数据, --message-level 1表示提示信息的级别(1表示只显示进度信息)-d 31表示不复制所有可以去掉的内存页(包括zero page, cache page, cache private, user data, free page等)。

第四行是一些额外的模块。

第五行是崩溃后默认自动重启。

 5,启动kdump。并查看状态。我这里没有这2个模块,所以启动失败。

6,去掉这2个模块再次启动并检查状态。(⊙o⊙)哦!!!还是无法启动,真尴尬!注意划线部分Please reserve memory by passing "crashkernel=x@y" parameter to the kernel.查看/var/log/messages文件里头也有提示错误: No crashkernel parameter specified for running kernel

7,网上查了一下资料说将crashkernel=auto改为crashkernel=128M@48M或者更大,取决于内存是否足够。那么接下来我就照搬过来改一下。

8,再次启动kdump并检查状态。

9,糟糕的是还是启动失败,难道是要重启服务器?于是我就重启了。由于kdump是开机启动的,重启后直接查看状态即可。

10,这回终于成功了。从开始的kdump is not operational变成了现在的kdump is operational,说明kdump配置成功可以使用了。config_kdump.sh内容现在是这样的:

#!/usr/bin/env bash
device=`df -lh /var |tail -1 |awk '{print $1}'`
filesystem=`mount|grep -w $device|awk '{print $(NF-1)}'` > /etc/kdump.conf
echo "$filesystem $device" >> /etc/kdump.conf
echo "path /var/crash" >> /etc/kdump.conf
echo "core_collector makedumpfile -c --message-level 1 -d 31" >> /etc/kdump.conf
#echo "extra_modules mpt2sas mpt3sas megaraid_sas hpsa ahci" >> /etc/kdump.conf
echo "extra_modules mpt2sas megaraid_sas ahci" >> /etc/kdump.conf
echo "default reboot" >> /etc/kdump.conf
sed -i "s/mkdumprd -d/mkdumprd --allow-missing -d/" /etc/init.d/kdump
chkconfig --level 2345 kdump on
#grubby --args='crashkernel=auto' --update-kernel=ALL
grubby --args='crashkernel=128M@48M' --update-kernel=ALL

11,接下来验证一下kdump是否能够捕捉内核崩溃。

开启Magic System Request Key功能:echo 1 >/proc/sys/kernel/sysrq

制造系统崩溃:echo c >/proc/sysrq-trigger

 下面这是崩溃后重启的画面。

 

12,现在重新登录系统,进入/var/crash目录

 进入目录我们看的一个ip+时间戳构成的子目录,进入该子目录我们看到了vmcore文件,这个文件就是kdump捕捉到内核崩溃产生的信息然后生成的文件。

现在我们可以通过crash命令对该文件进行分析了。

 

 12,如何分析vmcore文件可以参照我的这篇文章。

http://www.cnblogs.com/sonwnja/p/6802844.html

原文地址:https://www.cnblogs.com/sonwnja/p/6808079.html