第 7 章 内核崩溃转储指南
7.1. kdump 简介
7.1.1. 关于 kdump 和 kexec
kdump
是提供崩溃转储机制的服务。该服务允许您保存系统内存内容进行分析。
kdump
使用 kexec
系统调用在不重启的情况下引导至第二个内核( 捕获内核),然后捕获崩溃内核的内存( 崩溃转储 或 vmcore)的内容,并将其保存到文件中。这个第二个内核位于系统内存保留的一部分。
内核崩溃转储可能是失败时唯一可用的信息,将这些数据置于业务关键型环境中的重要性是不容忽视的。红帽建议系统管理员在正常内核更新周期内定期更新和测试 kexec-tools
。这在部署了新内核功能时尤为重要。
HP Watchdog 定时器(hpwdt)驱动程序在作为 RHEV 系统管理程序运行的 HP 系统中预先加载,因此这些系统可以使用 NMI 监视器。更新了 kexec-tools 软件包,从 kexec-tools-2.0.15-33.el7.x86_64 开始预加载 hpwdt 驱动程序。
如果 knx2x 和 bmx2fc 没有在 kdump 内核中列入黑名单,则第二个内核会导致 panic,且转储不会被捕获。
7.1.2. 内存要求
为了使 kdump 能够捕获内核崩溃转储并保存以便进一步分析,系统内存部分必须永久保留给捕获内核。保留时,系统内存的这一部分不适用于主内核。
内存要求因某些系统参数而异。主要因素之一就是系统的硬件构架。要找出机器架构(如 x86_64
)的确切名称并将其输出到标准输出,在 shell 提示符下键入以下命令:
uname -m
影响要保留的内存量的另一个因素是安装的系统内存总量。例如,在 x86_64 体系结构中,每 4 KB RAM 的保留内存大小为 160 MB + 2 位。在安装了 1 TB 物理内存的系统上,这意味着 224 MB(160 MB + 64 MB)。如需基于系统架构和物理内存量的 kdump 的完整内存要求列表,请参阅 第 7.8.1 节 “kdump 的内存要求”。
在很多系统中,kdump 可以估算所需内存量并自动保留。默认情况下,此行为是启用的,但仅适用于内存总量超过特定数量的系统,这些内存因系统架构而异。有关根据系统架构自动内存保留的最低要求列表,请参阅 第 7.8.2 节 “自动内存保留的最小阈值”。
如果系统自动分配所需的最小内存量小于自动分配所需的最小内存量,或者您的用例需要不同的值,则可以手动配置保留的内存量。有关如何在命令行中执行此操作的详情请参考 第 7.2.2.1 节 “配置内存用量”。有关如何在图形用户界面中配置保留内存量的详情请参考 第 7.2.3.1 节 “配置内存用量”。
强烈建议您在设置 kdump 服务后测试配置,即使使用自动内存保留。有关如何测试配置的步骤,请参阅 第 7.4 节 “测试 kdump 配置”。