zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    实战篇之实现 OutLook 中以 EDM 形式发送通知邮件
    ASP.NET MVC5 之路由器
    ASP.NET MVC5 之数据迁移
    说不出的烦
    ASP.NET MVC5 之 Log4Net 的学习和使用
    读取配置文件参数和文件路径
    序列化和反序列化示例
    面向对象之封装
    面向对象4之常用的乱七八糟
    面向对象三之继承和派生
  • 原文地址:https://www.cnblogs.com/sonwnja/p/6808079.html
Copyright © 2011-2022 走看看