CentOS/RHEL 6:如何配置 kdump

kdump 是一种高级崩溃转储机制。
启用后,系统将从另一个内核的上下文中引导。
第二个内核保留少量内存,其唯一目的是在系统崩溃时捕获核心转储镜像。
由于能够分析核心转储非常有助于确定系统故障的确切原因,因此强烈建议启用此功能。
本 Note 解释了如何在 CentOS/RHEL 6 中配置、测试和使用 kdump 服务。

  1. 如果尚未安装 kexec-tools 包,请安装
    要使用 kdump 服务,我们必须安装 kexec-tools 包。
# yum install kexec-tools
  1. 在 GRUB 中配置内存使用
    要配置为 kdump 内核保留的内存量,请修改文件 /boot/grub/grub.conf 并将 crashkernel=[size]M(或者 crashkernel=auto)参数添加到内核选项列表中。
    然后重新启动让它生效。

例如:

# vi /boot/grub/grub.conf
...
title Oracle Linux Server-uek (2.6.39-200.24.1.el6uek.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.39-200.24.1.el6uek.x86_64 ro root=/dev/mapper/vg_ol6desktop-lv_root crashkernel=128M
    initrd /initramfs-2.6.39-200.24.1.el6uek.x86_64.img
...
# reboot
  1. 配置转储位置
    要配置 kdump,我们需要编辑配置文件 /etc/kdump.conf 。
    默认选项是将 vmcore 文件存储在本地文件系统的 /var/crash/ 目录中。
    要更改要保存核心转储的本地目录,请删除 #path /var/crash 行开头的井号(“#”),并将该值替换为所需的目录路径。

例如:

path /usr/local/cores

或者,我们还可以将核心转储直接保存到原始分区。

例如:

raw /dev/sdb4

要使用 NFS 协议将转储存储到远程计算机,请删除 #net my.server.com:/export/tmp 行开头的哈希符号(“#”),并将该值替换为有效的主机名和目录路径。

例如:

net my.server.com:/export/cores
  1. 配置核心收集器
    为了减小 vmcore 转储文件的大小,kdump 允许我们指定一个外部应用程序来压缩数据,并可选择忽略所有不相关的信息。
    目前,唯一完全支持的核心收集器是 makedumpfile。

要启用核心收集器,请修改配置文件 /etc/kdump.conf ,删除#core_collector makedumpfile -c -message-level 1 -d 31 行开头的井号(“#”),然后编辑命令行选项如下所述。

例如:

core_collector makedumpfile -c
  1. 更改默认操作
    默认情况下,当捕获到内核崩溃时,会挂载根文件系统,并运行 /sbin/init。
    要更改此行为,请打开 /etc/kdump.conf 配置文件,从 #default shell 行的开头删除井号(“#”),并将该值替换为所描述的所需操作。

例如:

default halt
  1. 启动 kdump 守护进程
    检查并确保内核命令行包含 kdump 配置,并且为崩溃内核保留了内存:
# cat /proc/cmdline
ro root=/dev/mapper/vg_ol6desktop-lv_root crashkernel=128M

设置 kdump 服务可以在系统重新启动时启动。

# chkconfig kdump on

要在当前会话中启动服务,请使用以下命令:

# service kdump start
No kdump initial ramdisk found.                            [WARNING]
Rebuilding /boot/initrd-2.6.39-200.24.1.el6uek.x86_64kdump.img
Starting kdump:                                            [  OK  ]
  1. 测试kdump
    要测试配置,请在启用 kdump 的情况下重新启动系统,并确保服务正在运行。

例如:

# service kdump status
Kdump is operational

然后在 shell 提示符下键入以下命令:

# echo 1 > /proc/sys/kernel/sysrq
# echo c > /proc/sysrq-trigger

这会强制Linux内核崩溃,地址-YYYY-MM-DD-HH:MM:SS/vmcore 文件会被复制到你在配置中选择的位置(默认也就是/var/crash/))

日期:2020-09-17 00:11:56 来源:oir作者:oir