mp Kdump基本概念:
 Kexec:节省kernel重启的时间。
 Kexec是实现kdump机制的关健,它由两部分组成:
 1,内核空间的kexec_load系统调用。负责在主内核(first kernel)启动时将备用内核(sencond kernel)加载到指定的地址。
 2,用户空间的kexec-tools工具,它将备用内核的地址告诉给主内核,从而在主内核崩溃时候能够找到备用内核的地址并运行备用内核。(与相应的ramdisk一起组建一个微环境,用以对主内核下的内存进行收集和转存)
A):部署Kdump
 
部署 kdump 收集故障信息的步骤如下:
 
1) 设置好相关的内核启动参数
 
在 /boot/grub/menu.lst 中加入如下内容
 crashkernel=128M@16M nmi_watchdog=1
 其中crashkernel参数是用来为kdump的内核预留内存的; nmi_watchdog=1 是用来
 激活NMI中断的, 我们在未确定故障是否关闭了中断的情况下, 需要部署NMI watchdog才能确保触发panic. 重启系统确保设置生效
 
2) 设置好相关的sysctl内核参数
 
在/etc/sysctl.conf 中最后加入一行
 kernel.softlookup_panic = 1 
 该设置确保softlock发生时会调用panic, 从而触发kdump行为
 执行 #>sysctl -p 确保设置生效
 
3) 配置 /etc/kdump.conf
 
在 /etc/kdump.conf 中加入如下几行内容
ext3 /dev/sdb1
 core-collector makedumpfile -c –message-level 7 -d 31 -i /mnt/vmcoreinfo
 
path /var/crash
#kdump_post   /sbin/
#extra_modules ramcache_stor  (自定义修改)
default reboot
 其中 /dev/sdb1 是用于放置dumpfile 的文件系统, dumpfile 文件放置在/var/crash下, 要事先在/dev/sdb1分区下创建/var/crash 目录. “-d 31”指定对dump内容的过滤级别,这参数对于dump分区放不下全部内存内容或用户不想让dumping中断业务太长时间时很重要. vmcoreinfo 文件放置在 /dev/sdb1 分区的 / 目录下, 需要使用如下命令产生:
#>makedumpfile -g //vmcoreinfo -x /usr/lib/debug/lib/modules/2.6.18-128.el5.x86_64/vmlinux “vmlinux” 文件是由kernel-debuginfo 包提供的,在运行makedumpfile 之前需要安装相应内核的 kernel-debuginfo 和 kernel-debuginfo-common 两个包,该两个包需从 http:// 下载. “default reboot” 用来告诉kdump, 收集完dump信息后重启系统
 
4) 激活kdump
 
运行 #>service kdump start 命令,你会看到,在成功完成的情况下会在/boot/目录下生成一个initrd-2.6.18-128.el5.x86_64kdump.img 文件,该文件就是kdump加载的内核的 initrd文件,收集dump信息的工作就是在该initrd的启动环境下进行的. 查看/etc/init.d/kdump脚本的代码,你可看到其中会调用mkdumprd命令创建用于dump的initrd文件
 
 
                     
            
        













 
                    

 
                 
                    