7.2. 安装和配置 kdump


7.2.1. 安装 kdump

许多情况下,在新的 Red Hat Enterprise Linux 7 安装中默认安装并激活 kdump 服务。在使用图形或文本界面执行交互式安装时,Anaconda 安装程序为 kdump 配置提供了一个屏幕。安装程序屏幕名为 Kdump,可在主 安装概述 屏幕中访问,且只允许有限的配置 - 您只能选择是否启用了 kdump 以及保留多少内存。有关 kdump 的内存要求的信息请参考 第 7.8.1 节 “kdump 的内存要求”。安装程序中的 Kdump 配置屏幕记录在 Red Hat Enterprise Linux 7 安装指南中

注意

在之前的 Red Hat Enterprise Linux 版本中,kdump 配置 在安装 完成后自动执行的 Firstboot 实用程序中可用,该系统第一次重启。从 Red Hat Enterprise Linux 7.1 开始,kdump 配置已移至安装程序。

有些安装选项(如自定义 Kickstart 安装)在默认情况下不必安装或启用 kdump。如果您的系统中是这种情况,且您想要额外安装 kdump,请在 shell 提示符后以 root 用户身份执行以下命令:

# yum install kexec-tools

假设您的系统有一个有效的订阅或包含用于您的系统构架的 kexec-tools 软件包的自定义软件仓库,以上命令可保证 kdump 的安装和其他所有必要的软件包的安全。

注意

如果您不知道系统中是否安装了 kdump,您可以使用 rpm 进行检查:

$ rpm -q kexec-tools

此外,如果使用上述命令,也可以使用图形配置工具,但默认情况下不会安装。要安装这个工具,如 第 7.2.3 节 “在图形用户界面中配置 kdump” 所述,以 root 用户身份 运行以下命令:

# yum install system-config-kdump

有关如何使用 Yum 软件包管理器在 Red Hat Enterprise Linux 7 中安装新软件包的更多信息,请参阅 Red Hat Enterprise Linux 7 系统管理员指南

重要

从 Red Hat Enterprise Linux 7.4 开始,kdump 支持 Intel IOMMU 驱动程序 从 7.3 或更早版本运行内核时,建议禁用 Intel IOMMU 支持。

7.2.2. 在命令行中配置 kdump

7.2.2.1. 配置内存用量

在系统引导过程中,为 kdump 内核保留的内存始终保留,这意味着在系统的引导装载程序配置中指定了内存量。

要指定 kdump 内核保留的内存,将 crashkernel= 选项设置为所需的值。例如:要保留 128 MB 内存,请使用:

crashkernel=128M

有关如何使用 GRUB2 引导装载程序在 AMD64 和 Intel 64 系统以及 IBM Power Systems 服务器以及使用 zipl 在 IBM Z 中更改 crashkernel= 选项的详情请参考 第 3.1.1 节 “设置内核命令行参数”

crashkernel= 选项可以通过多种方式定义。自动值启用根据系统中的内存总量自动配置 保留内存。第 7.8.1 节 “kdump 的内存要求”较大的内存系统(达到操作系统的既定限制)根据 crashkernel=auto 选项的架构进行计算。

auto 值替换为特定内存量来更改此行为。

crashkernel= 选项对于较小的内存系统特别有用。例如:要保留 128 MB 内存,请使用:

crashkernel=128M

您还可以根据安装的内存总量,将保留内存量设置为变量。变量内存保留的语法为 crashkernel=<range1>: <size1>,<range2>:<size2>。例如:

crashkernel=512M-2G:64M,2G-:128M

如果系统内存总量为 512 MB 或高于 2 GB,则上述示例保留 64 MB 内存。如果内存总量超过 2 GB,则为 kdump 保留 128 MB。

有些系统需要使用特定的固定偏移保留内存。如果设置了偏移,则保留内存从此偏移开始。要偏移保留的内存,请使用以下语法:

crashkernel=128M@16M

上面的例子意味着 kdump 从 16 MB 开始保留 128 MB 内存(物理地址 0x01000000)。如果偏移参数设为 0 或完全省略,kdump 会自动偏移保留内存。如上所述,在设置变量内存保留时也可以使用此语法;在本例中,偏移始终被最后指定(例如 crashkernel=512M-2G:64M,2G-:128M@16M)。

7.2.2.2. 配置 kdump 目标

当捕获内核崩溃时,核心转储可以作为文件存储在本地文件系统中,直接写入设备,或使用 NFS (网络文件系统)或 SSH (Secure Shell)协议通过网络发送。目前只能设置这些选项中的一个。默认选项是将 vmcore 文件存储在本地文件系统的 /var/crash 目录中。

  • 要将 vmcore 文件存储在本地文件系统的 /var/crash/ 目录中,编辑 /etc/kdump.conf 文件并指定路径:

    path /var/crash

    选项 路径 /var/crash 代表 kdump 保存 vmcore 文件的文件系统路径。

    注意
    • 当您在 /etc/kdump.conf 文件中指定转储目标时,路径相对于 指定的转储目标。
    • 当您没有在 /etc/kdump.conf 文件中指定转储目标时,该路径代表根目录 的绝对路径

    根据当前系统中挂载的内容,会自动执行转储目标和调整的转储路径。

    例 7.1. kdump 目标配置

    grep -v ^# etc/kdump.conf | grep -v ^$
    ext4 /dev/mapper/vg00-varcrashvol
    path /var/crash
    core_collector makedumpfile -c --message-level 1 -d 31

    此处指定转储目标(ext4 /dev/mapper/vg00-varcrashvol),因此 path 选项也会设置为 /var/crash,因此 kdump 会将 vmcore 文件保存在 /var/crash /var/crash 目录中。

要更改转储位置,以 root 用户身份打开文本编辑器中的 /etc/kdump.conf 配置文件并编辑选项,如下所述。

要更改保存内核转储的本地目录,请从 #path /var/crash 行的开头删除 hash 符号("#"),并使用所需的目录路径替换值。

path /usr/local/cores
重要

在 Red Hat Enterprise Linux 7 中,当 kdump systemd 服务启动 - 否则服务失败时,使用 path 指令定义为 kdump 目标的目录必须存在。此行为与早期版本的 Red Hat Enterprise Linux 不同,如果启动服务时不存在 目录,则会自动创建该目录。

另外,如果您要将文件写入不同的分区,请按照以 #ext4 开头的行之一执行相同的步骤。您可以在此处使用设备名称( #ext4 /dev/vg/lv_kdump 行)、文件系统标签( #ext4 LABEL=/boot 行)或 UUID( #ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937 行)。将文件系统类型以及设备名称、标签或者 UUID 更改为所需值。

注意
指定 UUID 值的正确语法是 UUID="correct-uuid"'UUID=correct-uuid

例如:

ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937
重要

建议使用 LABEL= 或 UUID= 指定存储设备。无法保证 /dev/sda3 等磁盘设备名称在重启后保持一致。有关持久磁盘设备命名的详情,请查看 Red Hat Enterprise Linux 7 存储管理指南

重要

在 s390x 硬件中转储到 DASD 时,在继续前在 /etc/dasd.conf 中正确指定转储设备非常重要。

要将转储直接写入设备,请从 #raw /dev/vg/lv_kdump 行的开头删除哈希符号("#"),并使用所需的设备名称替换该值。例如:

raw /dev/sdb1

要使用 NFS 协议将转储保存到远程机器中,请从 #nfs my.server.com:/export/tmp 行的开头删除 hash 符号("#"),并使用有效的主机名和目录路径替换该值。例如:

nfs penguin.example.com:/export/cores

要使用 SSH 协议将转储保存到远程机器中,请从 #ssh user@my.server.com 行的开头删除 hash 符号(":user@my.server.com"),并将该值替换为有效的用户名和密码。要在配置中包含您的 SSH 密钥,请从 #sshkey /root/.ssh/kdump_id_rsa 行的开头删除哈希符号,并将值改为您要转储的服务器中有效密钥的位置。例如:

ssh john@penguin.example.com
sshkey /root/.ssh/mykey

有关如何配置 SSH 服务器和设置基于密钥的身份验证的详情,请参考 Red Hat Enterprise Linux 7 系统管理员指南

有关当前支持的和不受支持的目标的完整列表,请参阅 表 7.3 “支持的 kdump 目标”

7.2.2.3. 配置内核收集器

要减少 vmcore 转储文件的大小,kdump 允许您 指定一个外部应用程序( 内核收集器)来压缩数据,并选择性地排除所有不相关的信息。目前,唯一完全支持的核心收集器是 makedumpfile

要启用核心收集器,以 root 用户身份打开文本编辑器中的 /etc/kdump.conf 配置文件,请从 #core_collector makedumpfile -l --message-level 1 -d 31 行的开头删除 hash 符号("#")。

要启用转储文件压缩,请添加 -l 参数。例如:

core_collector makedumpfile -l

要从转储中删除某些页面,请添加 -d value 参数,其中 值是您要省略的页面值总和,如 表 7.4 “支持的过滤级别” 所述。例如:要删除零和可用页面,请使用:

core_collector makedumpfile -d 17 -c

有关可用选项的完整列表,请参阅 makedumpfile(8)手册页

7.2.2.4. 配置默认操作

默认情况下,kdump 使用 kexec 系统调用在没有重启的情况下引导至第二个内核( 捕获内核),然后捕获崩溃内核的内存( 崩溃转储vmcore)并将其保存到文件中。成功保存后,kdump 重启机器。

但是,当 kdump 无法在 第 7.2.2.2 节 “配置 kdump 目标” 中指定的目标位置创建内核转储时,kdump 会在不保存 vmcore 的情况下重启系统。要更改此行为,以 root 用户身份打开文本编辑器中的 /etc/kdump.conf 配置文件,从 #default shell 行的开头删除 hash 符号("#"),并将值替换为所需的操作,如 表 7.5 “支持的默认操作” 所述。

例如:

default reboot

7.2.2.5. 启用服务

要在引导时启动 kdump 守护进程,以 root 用户身份在 shell 提示符后输入以下内容:

systemctl enable kdump.service

这为 multi-user.target 启用服务。同样,按 systemctl disable kdump 可 禁用 kdump。要在当前会话中启动该服务,以 root 用户身份运行以下命令:

systemctl start kdump.service
重要

在 Red Hat Enterprise Linux 7 中,kdump systemd 服务启动时,定义为 kdump 目标的目录必须存在 - 否则服务失败。此行为与早期版本的 Red Hat Enterprise Linux 不同,如果启动服务时不存在 目录,则会自动创建该目录。

有关 systemd 和配置服务的更多信息,请参阅 Red Hat Enterprise Linux 7 系统管理员指南

7.2.3. 在图形用户界面中配置 kdump

要启动 内核转储配置 实用程序,请 从面板选择Activities Other Kernel crash dumps,或者在 shell 提示符下键入 system-config-kdump。因此,会出现一个窗口,如 图 7.1 “基本设置” 所示。

工具允许您配置 kdump,并在引导时启用或禁用启动该服务。完成后,单击 Apply 以保存更改。除非您已通过身份验证,否则请输入超级用户密码。实用程序向您发出一个提醒,您需要重新引导系统才能应用您对配置所做的任何更改。

重要

在在强制模式中运行的 SELinux 的 IBM Z 或 PowerPC 系统中,启动内核转储配置程序前必须启用 kdumpgui_run_bootloader 布尔值。这个布尔值允许 system-config-kdump 在 bootloader_t SELinux 域中运行引导装载程序。要永久启用该布尔值,请以 root 用户身份运行以下命令:

# setsebool -P kdumpgui_run_bootloader 1
重要

在 s390x 硬件中转储到 DASD 时,在继续前在 /etc/dasd.conf 中正确指定转储设备非常重要。

7.2.3.1. 配置内存用量

Basic Settings 标签页可让您配置为 kdump 内核保留的内存量。为此,可选择" 手动设置 "单选按钮,然后单击 新建 kdump Memory 字段旁边的向上和向下箭头按钮,以增加或减少要保留的内存量。请注意,Usable Memory 字段会相应地更改,显示可供系统使用的剩余内存。有关 kdump 内存要求的详情,请查看 第 7.1.2 节 “内存要求”

图 7.1. 基本设置

基本设置

7.2.3.2. 配置 kdump 目标

Target Settings 选项卡允许您指定 vmcore 转储的目标位置。转储可以作为文件存储在本地文件系统中,直接写入设备,或者使用 NFS (网络文件系统)或 SSH (Secure Shell)协议通过网络发送。

图 7.2. 目标设置

目标设置

要将转储保存到本地文件系统,请选择 本地文件系统 单选按钮。另外,您还可以使用 Path 字段选择 分区 下拉列表和目标目录不同的分区来自定义设置。

重要

在 Red Hat Enterprise Linux 7 中,kdump systemd 服务启动时,定义为 kdump 目标的目录必须存在 - 否则服务失败。此行为与早期版本的 Red Hat Enterprise Linux 不同,如果启动服务时不存在 目录,则会自动创建该目录。

要将转储直接写入设备,请选择 Raw 设备 单选按钮,然后从其旁边的下拉菜单中选择所需的目标设备。

要通过网络连接将转储发送到远程计算机,请选择 网络 单选按钮。要使用 NFS 协议,请选择 NFS 单选按钮,并填写 服务器名称和 目录路径 字段。要使用 SSH 协议,请选择 SSH 单选按钮,再将 Server namePath to directoryUser name 字段分别填入远程服务器地址、目标目录和有效用户名。

有关如何配置 SSH 服务器和设置基于密钥的身份验证的详情,请参考 Red Hat Enterprise Linux 7 系统管理员指南。有关当前支持的目标的完整列表,请参阅 表 7.3 “支持的 kdump 目标”

7.2.3.3. 配置内核收集器

Filtering Settings 选项卡允许您选择 vmcore 转储的过滤级别。

图 7.3. 过滤设置

过滤设置

要排除 零页面缓存页面缓存页面、 缓存、用户数据 或从转储中 可用页面,请选中相应标签旁边的复选框。

7.2.3.4. 配置默认操作

要在 kdump 无法创建内核转储时选择要执行的操作,如果转储失败,请从操作 中选择一个适当的选项。可用选项有:

  • 转储到 rootfs 并重启会尝试在本地保存内核,然后重新启动系统
  • 重启重启系统的默认操作
  • 启动 Shell 以显示具有相互活跃 shell 提示符的用户
  • 停止系统
  • poweroff 关闭系统

图 7.4. 过滤设置

专家设置

要自定义传递给 makedumpfile 内核收集器的选项,编辑 Core 收集器 文本字段;如需更多信息,请参阅 第 7.2.2.3 节 “配置内核收集器”

7.2.3.5. 启用服务

要在引导时启动 kdump 服务,点工具栏上的 启用 按钮,然后点击 Apply 按钮。这为 multi-user.target 启用并激活服务。单击"禁用 "按钮,然后单击"应用 "按钮以立即禁用该服务。

重要

在 Red Hat Enterprise Linux 7 中,kdump systemd 服务启动时,定义为 kdump 目标的目录必须存在 - 否则服务失败。此行为与早期版本的 Red Hat Enterprise Linux 不同,如果启动服务时不存在 目录,则会自动创建该目录。

有关 systemd 目标和配置服务的更多信息,请参阅 Red Hat Enterprise Linux 7 系统管理员指南

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.