3.12. 为 Microsoft Azure 实例配置 kdump


如果在 RHEL 实例中发生内核崩溃,您可以使用 kdump 服务来确定崩溃的原因。如果您的实例在内核意外终止时 kdump 被正确配置,则 kdump 会生成一个转储文件,称为崩溃转储或 vmcore 文件。然后,您可以分析文件,以查找崩溃发生的原因并调试您的系统。

要使 kdump 在 Microsoft Azure 实例上工作,您可能需要调整 kdump 保留的内存和 vmcore 目标,以适应虚拟机大小和 RHEL 版本。

先决条件

  • 您可以使用支持 kdump 的 Microsoft Azure 环境:

    • Standard_DS2_v2 VM
    • 标准 NV16as v4
    • 标准 M416-208s v2
    • 标准 M416ms v2
  • 您在系统上具有 root 权限。
  • 您的系统满足 kdump 配置和目标的要求。详情请查看支持的 kdump 配置和目标

流程

  1. 确保 kdump 和其他必要的软件包已安装在您的系统上。

    # dnf install kexec-tools
  2. 验证崩溃转储文件的默认位置是否在 kdump 配置文件中设置了,并且 /var/crash 文件是否可用。

    # grep -v "#" /etc/kdump.conf
    
    path /var/crash
    core_collector makedumpfile -l --message-level 7 -d 31
  3. 根据 RHEL 虚拟机(VM)实例的大小和版本,决定是否需要一个具有更多可用空间的 vmcore 目标,如 /mnt/crash。为此,请使用下表。

    表 3.4. 已在 Azure 上使用 GEN2 虚拟机 测试了的虚拟机大小
    RHEL 版本标准 DS1 v2 (1 vCPU, 3.5GiB)标准 NV16as v4 (16 vCPU, 56 GiB)标准 M416-208s v2 (208 vCPU, 5700 GiB)标准 M416ms v2 (416 vCPU, 11400 GiB)

    RHEL 9.0 - RHEL 9.3

    default

    default

    目标

    目标

    • Default 表示 kdump 使用默认的内存和默认的 kdump 目标可以正常工作。默认的 kdump 目标为 /var/crash
    • Target 表示 kdump 可以使用默认内存按预期工作。但是,您可能需要分配一个具有更多可用空间的目标。
  4. 如果您的实例需要它,请分配一个具有更多可用空间的目标,如 /mnt/crash。为此,请编辑 /etc/kdump.conf 文件并替换默认路径。

    $ sed s/"path /var/crash"/"path /mnt/crash"

    选项 path /mnt/crash 代表 kdump 在文件系统中保存崩溃转储文件的路径。

    有关更多选项,比如将崩溃转储文件写入不同的分区,直接写入设备或将其保存到远程机器,请参阅 配置 kdump 目标

  5. 如果您的实例需要它,请将崩溃内核的大小增加到足够大,以便 kdump 能够通过添加相应的引导参数来捕获 vmcore

    例如,对于标准 M416-208s v2 虚拟机,足够的大小为 512 MB,因此引导参数应为 crashkernel=512M

    1. 打开 GRUB 配置文件,并将 crashkernel=512M 添加到引导参数行中。

      # vi /etc/default/grub
      
      GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300 crashkernel=512M"
    2. 更新 GRUB 配置文件。

      • 在 RHEL 9.2 及更早版本中:

        # grub2-mkconfig -o /boot/grub2/grub.cfg
      • 在 RHEL 9.3 及更高版本中:

        # grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline
  6. 重启虚拟机,来向虚拟机分配单独的内核崩溃内存。

验证

  • 确保 kdump 处于活跃状态且正在运行。

    # systemctl status kdump
    ● kdump.service - Crash recovery kernel arming
       Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor prese>
       Active: active (exited) since Fri 2024-02-09 10:50:18 CET; 1h 20min ago
      Process: 1252 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCES>
     Main PID: 1252 (code=exited, status=0/SUCCESS)
        Tasks: 0 (limit: 16975)
       Memory: 512B
       CGroup: /system.slice/kdump.service
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.