Chinaunix首页 | 论坛 | 博客
  • 博客访问: 601279
  • 博文数量: 353
  • 博客积分: 1104
  • 博客等级: 少尉
  • 技术积分: 1457
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-23 23:02
个人简介

1、刚工作时做Linux 流控;后来做安全操作系统;再后来做操作系统加固;现在做TCP 加速。唉!没离开过类Unix!!!但是水平有限。。

文章存档

2015年(80)

2013年(4)

2012年(90)

2011年(177)

2010年(1)

2009年(1)

分类:

2012-08-17 09:47:04

七:Crash的准备工作
    Crash这个工具真是非常的强大,具体就不说了,详细的介绍、安装请看Kdump & Crash 学习笔记(一)
    如果大家仔细的看了前面的几篇文章,那现在就是介绍如何实验的时候了!首先需要触发一个Crash,有以下几种方法可以选择:
    1) AltSysRq C
        Kdump能够通过键盘的组合键来触发:Alt+SysRq+C。如果使用的是HMC,那还可以通过Ctrl+O+C来触发
    2) NMI_WATCHDOG
        如果是硬件导致的Hang,很可能造成AltSysRq C这种方法失效,因为你的键盘可能都没有反应了。这个时候,NMI Watchdog的特性就能够派上用场了。注意的是,这个特性必须在内核之中启用
    3) Kernel OOPs
        这也可以产生一个Dump,如果你希望每次Kernel OOPs的时候,都产生一个Dump的话,那么可以:
echo 1 > /proc/sys/kernel/panic_on_oops
    4) NMI button
        如果系统已经是处在Hang的状态的话,那么可以使用NMI按钮来触发Kdump。开启这个选项可以:
echo 1 > /proc/sys/kernel/unknown_nmi_panic
        需要注意的是,启用这个特性的话,是不能够同时启用NMI_WATCHDOG的!否则系统会Panic!!!
    5) Force-crash
        最后,也是实验需要用的方法。强制触发一个Crash:
[root@Derek-Laptop derek]# echo c > /proc/sysrq-trigger 
        需要注意的是,一旦你这么做了,你的系统就死了!所以,如果你已经保存好你的数据了,并且不担心原地复活过程中SELinux可能的Relabel的话,同时非常冒险、学习的精神!那你可以敲下回车了!
    6) PPC还有一些别的方法,就不细说了,还是以ix86和x86_64为主,如果有需要,请Mail、留言、谷老师!

    先贴一下我的配置文件,首先是/boot/grub/grub.conf:
[root@Derek-Laptop derek]# cat /boot/grub/grub.conf 
default=0
timeout=3
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.34.6-54.fc13.i686.PAE)
root (hd0,0)
kernel /vmlinuz-2.6.34.6-54.fc13.i686.PAE ro root=/dev/mapper/vg_dereklaptop-lv_root rd_LVM_LV=vg_dereklaptop/lv_root rd_LVM_LV=vg_dereklaptop/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us rhgb quiet rdblacklist=nouveau crashkernel=256M
initrd /initramfs-2.6.34.6-54.fc13.i686.PAE.img
    然后是/etc/kdump.conf:
[root@Derek-Laptop derek]# tail /etc/kdump.conf 
#kdump_post /var/crash/scripts/kdump-post.sh
#extra_bins /usr/bin/lftp
#disk_timeout 30
#extra_modules gfs2
#default shell

ext4 UUID=2c560b75-fc2b-4346-a669-6403e954498a
path /var/kdump
core_collector makedumpfile -c --message-level 1 -d 31
default shell
    手动强制触发Kdump之前,确认一下Kdump服务
[root@Derek-Laptop derek]# service kdump status
Kdump is operational
    如果你的不是operational,建议你别回车,否则,你的Fedora就真的死了!
    现在,可以敲下回车了!短暂的花屏、神秘字符之后,会出现很多信息了!具体的我就不贴出来了,也没办法贴,因为那个时候已经没有办法复制了!
    在这个过程之中,眼睛好使的话,能够看到trigger a crash这样的信息的,还能看到Crash Kernel启动的很多信息,比如说加载模块、等待磁盘准备、等待网络设备、挂载分区等等很多信息,跟Primary Kernel启动的时候是一样的!如果顺利的话,很快就能保存好vmcore,重启电脑了!这个时候需要插一句,如果你没有使用-d选项,那么你是多大的内存就会完整的保存多大的vmcore。根据需要选择自己的filter Level吧!
    重启完成之后,就能回到死而复生的Fedora了!如果你跟我一样,2GB的内存,使用-d 31的级别,不是那么老古董的机子,并且没有遇到SELinux的Relabel的话,估计5分钟就能完成了。
    现在来看看我的成果吧:
[root@Derek-Laptop derek]# ll /var/kdump/127.0.0.1-2010-09-18-00\:07\:09/vmcore 
-rw------- 1 root root 21494214  9月 18 08:07 /var/kdump/127.0.0.1-2010-09-18-00:07:09/vmcore
    成功保存了vmcore,好好保留这个文件,以后还指望他分析出当初Crash的原因呢!

Tips:
本来是有一些文档的,但是涉及一些版权的诸多问题,以后有机会拿出来分享!
阅读(1055) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~