Kdump 是一种先进的崩溃转储机制。
启用后,系统将从另一个内核的上下文中引导。
第二个内核保留少量内存,其唯一目的是在系统崩溃时捕获核心转储镜像。
由于能够分析核心转储非常有助于确定系统故障的确切原因,因此强烈建议启用此功能。
1.安装kexec-tools
Kexec 是一种快速启动机制,它允许从已经运行的内核的上下文中启动 Linux 内核,而无需通过 BIOS。
每当系统崩溃时,Kdump 使用 kexec 引导到第二个内核。
# up2date --nox -u kexec-tools Fetching Obsoletes list for channel: el5_i386_latest...Fetching rpm headers...Name Version Rel --------------------------------------------------------- kexec-tools 1.101 194.4.el5.0.1 i386 Testing package set / solving RPM inter-dependencies...kexec-tools-1.101-194.4.el5 ########################## Done. Preparing ########################################### [100%] Installing... 1:kexec-tools ########################################### [100%]
2.检查文件/boot/config-uname -r
指定的值应表示启用了 kexec 并且此内核可用作崩溃内核:
# cat /boot/config-`uname -r` CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y ...
3.修改系统内核为crash内核预留空间
编辑 /etc/grub.conf 文件并在内核行添加“crashkernel=128M@16M”以预留 128MB 内存,从物理地址 0x01000000 (16MB) 开始
# vi /etc/grub.conf ... title Red Hat Enterprise Linux Server (2.6.18-8.el5) root (hd0,0) kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet crashkernel=128M@16M initrd /initrd-2.6.18-8.el5.img ...
保留的内存量可能因系统上的内存量而异。
- 指定应该在哪里创建 vmcore
可以在 /etc/kdump.conf 文件中指定不同类型的转储目标位置。
我们可以在此文件中指定我们选择的目录。
例如:
path /usr/local/cores
以下是使用 NFS 作为转储目标位置的示例条目。
例如,下面将挂载文件系统并复制
vmcore 文件到 NFS 服务器
net my.server.com:/export/tmp
更多选项请查看/etc/kdump.conf。
5.更新kdump配置文件/etc/sysconfig/kdump(可选)
此文件定义转储捕获内核规范,包括其名称/位置,以及内核的命令行(如果它与当前运行的内核不同)。
# cat /etc/sysconfig/kdump KDUMP_KERNELVER="" KDUMP_COMMANDLINE="" KDUMP_COMMANDLINE_APPEND="irqpoll maxcpus=1" KEXEC_ARGS=" --args-linux" KDUMP_BOOTDIR="/boot" KDUMP_IMG="vmlinuz"
KDUMP_COMMANDLINE modify the default crash kernel command line from /proc/cmdline KDUMP_COMMANDLINE_APPEND adds irqpoll and maxcpus=1 to the command line for the crash kernel KEXEC_ARGS adds --args-linux to the kexec command line KDUMP_BOOTDIR is set to /boot KDUMP_IMG specifies the crash kernel image name, defaulting to /boot/vmlinuz with the current kernel version appended
6.开启kdump服务
设置 kdump 服务可以在系统重新启动时启动。
# chkconfig kdump on
注意:由于新的内核参数尚未生效,因此无法启动。
7.重启系统使kdump配置生效
验证 kdump 是否处于活动状态:
# cat /proc/cmdline ro root=/dev/VolGroup00/LogVol00 rhgb quiet crashkernel=128M@16M
# /etc/init.d/kdump status Kdump is operational
# /sbin/chkconfig --list |grep kdump kdump 0:off 1:off 2:on 3:on 4:on 5:on 6:off
8.通过系统崩溃测试kdump
# echo c > /proc/sysrq-trigger
这会导致内核恐慌,然后系统重新启动进入 kdump 内核。
当引导过程到达它启动 kdump 服务的点时,vmcore 文件应该被复制到磁盘到 /etc/kdump.conf 文件中指定的位置。