Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

7.8. 支持的 kdump 配置和目标

7.8.1. kdump 的内存要求

为了使 kdump 能够捕获内核崩溃转储并保存以便进一步分析,系统内存部分必须永久保留给捕获内核。

有关如何在命令行中更改内存设置的详情请参考 第 7.2.2.1 节 “配置内存用量”。有关如何在图形用户界面中设置保留内存量的步骤,请参考 第 7.2.3.1 节 “配置内存用量”

表 7.1 列出 kdump内核和 kernel -alt 软件包中自动保留的内存。kdump 根据 CPU 架构和可用物理内存自动保留内存。

表 7.1. kdump自动保留崩溃内存总数

CPU 架构可用内存崩溃内存自动保留

AMD64 和 Intel 64(x86_64)

2 GB 及更多

每个 1 TB 161 MB + 64 MB

64 位 ARM 架构(arm64)

2 GB 及更多

512 MB

IBM POWER ppc64/ppc64le

2 GB 到 4 GB

384 MB

4 GB 到 16 GB

512 MB

16 GB 到 64 GB

1 GB

64 GB 到 128 GB

2 GB

128 GB 及更多

4 GB

IBM Z (s390x)

4 GB 及更多

每个 1 TB 的 161 MB + 64 MB
[1] 160 MB on RHEL-ALT-7.6

有关各种 Red Hat Enterprise Linux 技术功能和限制的详情请参考 https://access.redhat.com/articles/rhel-limits

7.8.2. 自动内存保留的最小阈值

在某些系统中,可以使用引导加载器配置文件中的 crashkernel=auto 参数自动为 kdump 分配内存,也可以在图形配置工具中启用这个选项。但是,要使此自动预留发挥作用,系统中需要提供一定大小的总内存。这一数量因系统架构而异。

下表列出了 内核和 kernel -alt 软件包自动分配内存的阈值。如果系统内存少于表中指定的内存,则需要手动保留内存。

有关如何在命令行中更改这些设置的详情请参考 第 7.2.2.1 节 “配置内存用量”。有关如何在图形用户界面中更改保留内存量的步骤请参考 第 7.2.3.1 节 “配置内存用量”

表 7.2. 自动内存保留所需的最小内存量

构架所需的内存

AMD64 和 Intel 64(x86_64)

2 GB

IBM POWER(ppc64)

2 GB

IBM Z (s390x)

4 GB

64 位 ARM 架构(ARM64)

2 GB

7.8.3. 支持的 kdump 目标

当捕获内核崩溃时,核心转储可以直接写入到设备中,作为文件存储在本地文件系统中,或者通过网络发送。下表包含 kdump 支持或明确不支持的转储目标的完整列表。

有关如何在命令行中配置目标类型的详情请参考 第 7.2.2.2 节 “配置 kdump 目标”。有关如何在图形用户界面中做到这一点的详情请参考 第 7.2.3.2 节 “配置 kdump 目标”

表 7.3. 支持的 kdump 目标

类型支持的目标不支持的目标

原始设备

所有本地附加的原始磁盘和分区。

 

本地文件系统

直接附加的磁盘驱动器、硬件 RAID 逻辑驱动器、LVM 设备以及 mdraid 阵列中的 ext 2、ext3、ext4 和 xfs 文件系统。

在此表中未明确列出的任何本地文件系统,包括 自动 类型(自动文件系统检测)。

远程目录

使用 NFSSSH 协议通过 IPv4 访问的远程目录。

使用 NFS 协议访问的 rootfs 文件系统上的远程目录。

使用 FCoE以太网光纤通道)协议访问的远程目录。

qla2xxxlpfcbfa 硬件 FCoE 目标.bnx2fcixgbe 软件 FCoE 目标.

 

通过硬件和软件启动器使用 iSCSI 协议访问的远程目录。

使用 be2iscsi 硬件上的 iSCSI 协议访问的远程目录.

基于多路径的存储。

 

通过 IPv6 访问的远程目录.

 

使用 SMBCIFS 协议访问的远程目录.

 

使用无线网络接口访问的远程目录。

注意

当转储到软件 FCoE 目标时,您可能会遇到内存不足(OOM)问题。在这种情况下,会增加默认的 crashkernel=auto 参数值。有关如何设置这个内核引导参数的详情请参考 第 7.2.2.1 节 “配置内存用量”

7.8.4. 支持的 kdump 过滤等级

要缩小转储文件的大小,kdump 使用 makedumpfile 内核收集器压缩数据,并选择性地退出不相关的信息。下表包含 makedumpfile 实用程序目前支持的过滤级别的完整列表。

有关如何在命令行中配置内核收集器的说明,请参阅 第 7.2.2.3 节 “配置内核收集器”。有关如何在图形用户界面中做到这一点的详情请参考 第 7.2.3.3 节 “配置内核收集器”

表 7.4. 支持的过滤级别

选项描述

1

零页

2

缓存页

4

缓存私有

8

用户页

16

可用页

注意

makedumpfile 命令支持在 Red Hat Enterprise Linux 7.3 及之后的版本中删除透明大内存页和 hugetlbfs 页面。考虑这两种类型的大页用户页面,并使用 -8 级别将其删除。

7.8.5. 支持的默认操作

默认情况下,当 kdump 创建内核转储失败时,操作系统会重启。但是,您可以将 kdump 配置为在将内核转储保存到主目标时执行不同的操作。下表列出了 kdump 目前支持的所有默认操作。

有关如何在命令行中设置默认操作的详情请参考 第 7.2.2.4 节 “配置默认操作”。有关如何在图形用户界面中做到这一点的详情请参考 第 7.2.3.4 节 “配置默认操作”

表 7.5. 支持的默认操作

选项描述

dump_to_rootfs

尝试将内核转储保存到 root 文件系统。这个选项在与网络目标合并时特别有用:如果网络目标无法访问,这个选项配置 kdump 以在本地保存内核转储。之后会重启该系统。

reboot

重启系统,这个过程会丢失 core 转储文件。

halt

关闭系统,这个过程会丢失 core 转储文件。

poweroff

关闭系统,这个此过程会丢失 core 转储。

shell

从 initramfs 内运行 shell 会话,允许用户手动记录核心转储。

7.8.6. 估算 kdump 大小

在规划和构建 kdump 环境时,需要知道在生成转储文件前需要多少空间。makedumpfile 命令可以帮助执行此操作。

使用 --mem-usage 功能估算转储文件所需的空间,如下所示:

# makedumpfile -f --mem-usage /proc/kcore

注意

使用 -f 选项的 --mem-usage 功能适用于内核版本的 v4.11 及更新的版本。

对于早于 v4.11 的内核版本,在使用 --mem-usage 选项 -f 之前,请确保内核通过上游提交 464920104bf7 进行补丁。

mem-usage 选项提供有关可扩展页面的有用报告,可用于确定您要分配的转储级别。当系统处于代表负载下时运行此命令,否则 makedumpfile 会返回比生产环境中预期的值小的值。

[root@hostname ~]# makedumpfile -f --mem-usage /proc/kcore

TYPE            PAGES                   EXCLUDABLE      DESCRIPTION
----------------------------------------------------------------------
ZERO            501635                  yes             Pages filled with zero
CACHE           51657                   yes             Cache pages
CACHE_PRIVATE   5442                    yes             Cache pages + private
USER            16301                   yes             User process pages
FREE            77738211                yes             Free pages
KERN_DATA       1333192                 no              Dumpable kernel data
重要

makedumpfile 命令在页面中 报告。这意味着您必须根据内核页面大小(在 Red Hat Enterprise Linux 内核中)计算使用的内存大小(在 Red Hat Enterprise Linux 内核中)对于 AMD64 和 Intel 64 构架,以及 64 KB 用于 IBM POWER 架构。

7.8.7. 支持 内核和 kernel -alt 软件包中的构架

下表提供了 内核和 kernel -alt 软件包上的架构和可用内存支持概述。

表 7.6. 内核和 kernel -alt 软件包支持的构架

CPU 架构可用内存RHEL 7.5 及更早版本RHEL 7.6 及更新的版本RHEL-ALT-7.4rhel-ALT-7.5 及更新的版本

AMD64 和 Intel 64(x86_64)

2GB 及更多

每个 1TB 161MB + 64MB

161MB + 64MB/1TB

2GB 到 160MB

2GB 到 160MB

64 位 ARM 架构(arm64)

2GB 及更多

不适用

不适用

2GB 到 512MB

2GB 到 512MB

IBM POWER ppc64/ppc64le(下至 POWER8)

2GB 到 4GB

384MB

384MB

不适用

不适用

4GB 到 16GB

512MB

512MB

不适用

不适用

16GB 到 64GB

1GB

1GB

不适用

不适用

64GB 到 128GB

2GB

2GB

不适用

不适用

128GB 及更多

4GB

4GB

不适用

不适用

IBM POWER ppc64/ppc64le(下至 POWER9)

2GB 到 4GB

384MB

384MB

384MB

384MB

4GB 到 16GB

512MB

512MB

512MB

512MB

16GB 到 64GB

1GB

1GB

1GB

1GB

64GB 到 128GB

2GB

2GB

2GB

2GB

128GB 及更多

4GB

4GB

4GB

4GB

IBM POWER ppc64le(POWER9)

2GB 到 4GB

不适用

不适用

384MB

384MB

4GB 到 16GB

不适用

不适用

512MB

512MB

16GB 到 64GB

不适用

不适用

1GB

1GB

64GB 到 128GB

不适用

不适用

2GB

2GB

128GB 及更多

不适用

不适用

4GB

4GB

IBM Z (s390x)

4GB 及更多

每个 1TB 161MB + 64MB

每个 1TB 161MB + 64MB

每个 1TB 161MB + 64MB

160MB