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 配置和目标。
流程
确保
kdump
和其他必要的软件包已安装在您的系统上。# dnf install kexec-tools
验证崩溃转储文件的默认位置是否在
kdump
配置文件中设置了,并且/var/crash
文件是否可用。# grep -v "#" /etc/kdump.conf path /var/crash core_collector makedumpfile -l --message-level 7 -d 31
根据 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
可以使用默认内存按预期工作。但是,您可能需要分配一个具有更多可用空间的目标。
-
Default 表示
如果您的实例需要它,请分配一个具有更多可用空间的目标,如
/mnt/crash
。为此,请编辑/etc/kdump.conf
文件并替换默认路径。$ sed s/"path /var/crash"/"path /mnt/crash"
选项 path
/mnt/crash
代表kdump
在文件系统中保存崩溃转储文件的路径。有关更多选项,比如将崩溃转储文件写入不同的分区,直接写入设备或将其保存到远程机器,请参阅 配置 kdump 目标。
如果您的实例需要它,请将崩溃内核的大小增加到足够大,以便
kdump
能够通过添加相应的引导参数来捕获vmcore
。例如,对于标准 M416-208s v2 虚拟机,足够的大小为 512 MB,因此引导参数应为
crashkernel=512M
。打开 GRUB 配置文件,并将
crashkernel=512M
添加到引导参数行中。# vi /etc/default/grub GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300 crashkernel=512M"
更新 GRUB 配置文件。
在 RHEL 9.2 及更早版本中:
# grub2-mkconfig -o /boot/grub2/grub.cfg
在 RHEL 9.3 及更高版本中:
# grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline
- 重启虚拟机,来向虚拟机分配单独的内核崩溃内存。
验证
确保
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