kdump快速起步

Linux内核Kdump 默认在Red Hat Enterprise Linux已经安装和激活,提供内核崩溃转储机制的服务。当Linux内核崩溃时, kdump 使用 kexec 系统调用在不重启情况下引导到第二内核( 捕获内核capture kernel ),然后捕获崩溃内核的内存(奔溃转储 crash dumpvmcore ),然后将期保存。注意,所谓 第二内核 位于系统内存保留的一部分。

快速安装和配置

注解

本文安装以 Fedora 和 CentOS 8 为案例,所以使用 DNF包管理器 安装命令; CentOS 7或更低版本使用 yum 命令替代

  • 安装 kexec-tools

    sudo dnf install kexec-tools
    
  • 配置 /etc/kdump.conf

    path /var/crash
    core_collector makedumpfile -l --message-level 1 -d 31
    
  • 激活 kdump

    sudo systemctl enable --now kdump
    
  • 配置 /etc/default/grub ,在 GRUB_CMDLINE_LINUX 行添加 crashkernel=auto 类似如下:

    GRUB_CMDLINE_LINUX="crashkernel=auto ..."
    
  • 生成grub2配置:

    grub2-mkconfig -o /boot/grub2/grub.cfg
    

注解

如果需要排查的服务器极不稳定,需要在系统hung时立即crash掉系统成成kernel core dump,则可以采用NMI watchdog: 在内核参数上再加上 nmi_watchdog=1

手工触发kernel core dump

方法一: SysRq

  • 登陆服务器执行以下命令触发:

    echo 1 | sudo tee /proc/sys/kernel/sysrq
    echo c | sudo tee /proc/sysrq-trigger
    

方法二: unknown NMI panic

  • 登陆服务器激活 unknown_nmi_panic

    echo 1 | sudo tee /proc/sys/kernel/unkown_nmi_panic
    
  • 远程通过 IPMI 发送 unknown_nmi_panic 信号给服务器触发kernel core dump:

    ipmitool -I lanplus -U <username> -P <password> -H <oobip> chassis power diag