CentOS/RHEL 5:如何配置 kdump

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
 ...

保留的内存量可能因系统上的内存量而异。

  1. 指定应该在哪里创建 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 文件中指定的位置。

日期:2020-09-17 00:12:51 来源:oir作者:oir