CentOS/RHEL 中的 kdump 问题故障排除

kdump 机制是 Linux 内核的一项功能,它允许我们在内核崩溃时创建转储。
它生成内存的精确副本,可以分析崩溃的根本原因。
这是一个配置 kdump(内核转储)的脚本。
当内核出现严重问题时,Kdump 会将内存转储到名为 vmcore 的文件中。
通常需要 Vmcore 来调查该问题。
崩溃转储是从新启动的内核的上下文中捕获的,而不是从崩溃内核的上下文中捕获的。
每当系统崩溃时,Kdump 使用 kexec 引导到第二个内核。
Kexec 是一种快速启动机制,它允许从正在运行的内核的上下文中重新启动新的 Linux 内核,而无需通过任何固件或者热启动。

这篇文章解释了解决常见 kdump 问题的步骤。

当 kdump 服务无法运行时

  1. 按照上述部分验证 kdump 设置。

  2. 启动kdump服务

# service kdump status        ### In CentOS/RHEL 6
# systemctl status kdump      ### In CentOS/RHEL 7
  1. 从终端检查错误。

  2. 可以在 /var/log/messages 中找到有关服务 kdump 启动失败的更多信息。

www. On IT Road .com

当 kdump 设置正常且服务 kdump 状态可运行但触发崩溃时未生成 vmcore 时

  1. 编辑 /etc/kdump.conf 文件并添加以下行以在 vmcore 生成失败时获取 shell:
default shell
  1. 在shell中,检查可用存储,检查vmcore目标文件系统是否挂载,然后尝试手动复制vmcore,看是否失败。
# cp /proc/vmcore [destination]

当未获得 shell 且 crashkernel 在启动时卡住时

  1. 查看控制台消息,查找crashkernel的启动消息。
    寻找卡住的地方。

  2. 如果我们看到页面分配错误消息,那么很有可能是crashkernel 保留不够,需要增加'crashkernel' 内核参数的值。

验证 kdump 设置

  1. 检查系统中是否安装了kexec-tools包。
# rpm -qa | grep kexec
  1. 在当前运行的内核中检查内核命令行中的参数'crashkernel':
# cat /proc/cmdline
  1. 检查内核启动时是否为crashkernel预留了内存:
# dmesg | grep Reserving
  1. 检查转储路径:
# grep -v ^# /etc/kdump.conf
  1. 检查上一步中 path 参数指定的文件系统上的可用存储空间:
# df -h
  1. 查看kdump服务的状态:
# service kdump status         ### In CentOS/RHEL 6
# systemctl status kdump       ### In CentOS/RHEL 7
日期:2020-09-17 00:14:12 来源:oir作者:oir