我的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文件可以参照我的这篇文章。
- •VMware Workstation Pro 16安装CentOS7超详细图文步骤
- •CentOS7下配置使用JumpServer 堡垒机 (图文教程)
- •CentOS安装jdk的几种方法及配置环境变量方式
- •CentOS忘记密码修改方案以及centos卡在开机登录界面,命令失效的解决方法
- •解决笔记本安装centos7后无法调节屏幕亮度
- •VMware安装CentOS 8.1(CentOS 8系列可参考)的图文详细教程
- •CentOS7 minimal 最小化安装网络设置过程
- •CentOS7下搭建JumpServer
- •CentOS安装rpm包出现冲突时的解决办法
- •Vmware下CentOS7最小化安装方式