全部文档
当前文档

共搜索到 0 条结果

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

安装kdump的实践教程

最近更新时间:2026-06-16 17:51:51

背景信息

Kdump 利用 kexec 机制在主内核崩溃时快速启动"捕获内核",将当时内存转储为 vmcore,用于事后根因分析。

约束限制

金山云云服务器镜像自带该功能,裸金属云服务器需要选配,会占用部分内存资源。

  • 内存要求:至少需要预留 128MB 内存用于 Kdump。

  • 磁盘空间:建议保留至少 1GB 空间用于存储 crash dump 文件。

  • 内核版本:Linux kernel 2.6.17 或更高版本。

操作步骤

步骤一:安装Kdump服务

根据具体系统选择相应的安装操作。

RHEL/CentOS 7/8/9
  1. 安装 kexec-tools 和 crash 软件包。

    sudo yum install kexec-tools crash
  2. 启用并启动 kdump 服务。

    sudo systemctl enable kdump
    sudo systemctl start kdump
  3. 检查服务状态。

    sudo systemctl status kdump
Ubuntu/Debian
  1. 更新软件包列表。

    sudo apt update
  2. 安装必要软件包。

    sudo apt install kdump-tools crash
  3. 配置内核参数,编辑 /etc/default/grub,修改 GRUB_CMDLINE_LINUX 添加 crashkernel=128M

    sudo nano /etc/default/grub
  4. 更新 GRUB 配置。

    sudo update-grub
  5. 启用并启动 kdump 服务。

    sudo systemctl enable kdump-tools
    sudo systemctl start kdump-tools

步骤二:检查配置

  1. 确认配置文件位置。

    • RHEL/CentOS:/etc/kdump.conf

    • Ubuntu/Debian:/etc/default/kdump-tool

  2. 检查内核启动参数中是否已包含 crashkernel 配置。

    cat /proc/cmdline

    示例输出应包含类似:crashkernel=128M,high crashkernel=128M,low

步骤三:服务状态检查

  1. 检查 kdump 服务运行状态。

    sudo systemctl status kdump
  2. 检查内存保留情况。

    dmesg | grep -i crash
  3. 验证 kexec 是否已加载捕获内核。

    sudo kexec -p /boot/vmlinuz-$(uname -r) --initrd=/boot/initramfs-$(uname -r).img --append="root=/dev/mapper/vg00-lvroot crashkernel=128M"

步骤四:功能测试

以下操作会在测试系统上触发内核崩溃,仅在测试环境中执行。

  1. 使用 sysrq-trigger 触发崩溃(推荐)。

    sudo -i
    echo c > /proc/sysrq-trigger
  2. 使用 magic_sysrq 触发崩溃。

    sudo sync && echo 1 > /proc/sys/kernel/sysrq && echo c > /proc/sysrq-trigger
  3. 使用 crash 命令分析生成的 vmcore。

    sudo crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/*/vmcore

附录:参数配置案例(以GM402 为例)

参考前文操作完成Kdump的安装后,可进行相应参数修改。按内存阶梯分配 crashkernel 大小,适用于生产环境精准控制预留资源。

  1. 编辑 /etc/default/grub.d/kdump-tools.cfg,添加按内存阶梯分配的 crashkernel 参数。

    vim /etc/default/grub.d/kdump-tools.cfg
    GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M"
  2. 编辑 /etc/default/grub,删除 crashkernel=auto 以避免参数冲突。

    vim /etc/default/grub
  3. 重新生成 GRUB 配置使参数生效。

    grub-mkconfig -o /boot/grub/grub.cfg
  4. 验证配置是否已生效。

    cat /proc/cmdline
    dmesg | grep crash
  5. 触发内核 panic 验证 Kdump 完整流程。

    echo 1 > /proc/sys/kernel/sysrq
    echo c > /proc/sysrq-trigger
    • 运行成功后,触发内核 panic,系统会断连,进入到 Kdump 捕获内核收集信息,收集完毕后系统自动重启并正常进入系统。

    • 重启完毕后,在 /var/crash 目录中会生成一个以当前日期命名的目录,包含 dmesg.xdump.x 两个文件。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈