fedora 下kdump 配置

相关参考:
http://lse.sourceforge.net/kdump/
http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp?search_by=深入探索+Kdump
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/myshell.sh

#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://ftp.redhat.com 下载. “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文件

你可能感兴趣的:(linux,工具,使用)