当前位置: 首页 > news >正文

/etc/kdump.conf 配置详解

/etc/kdump.conf 是 Linux kdump 机制的核心配置文件,用于定义内核崩溃转储(vmcore)的生成规则、存储位置、过滤条件及触发后的自定义操作。以下是对其配置项的详细解析及常见用法示例:

一、配置文件结构

文件通常位于 /etc/kdump.conf,包含 键值对 和 动作指令,注释以 # 开头。

基本格式:

# 注释行
key value
action [args]

二、核心配置项详解

1. 转储目标(Storage Target)

指定 vmcore 的保存位置,支持本地、远程和特殊设备存储:

配置项说明示例
path /path定义转储文件在目标位置的子目录(默认 /var/crashpath /kdump_dumps
raw /dev/sdX直接将内存转储到裸设备(如磁盘分区)raw /dev/sdb1
ext4 /dev/sdX转储到 ext4 文件系统的分区ext4 /dev/sdb1
nfs host:/path保存到 NFS 服务器目录nfs 192.168.1.100:/shared/kdump
ssh user@host通过 SSH 传输到远程主机ssh root@192.168.1.100
sshkey /root/.ssh/kdump_id_rsa
san lunpath使用 SAN 存储(需配置光纤通道或 iSCSI)san /dev/disk/by-id/scsi-3600508b1001c60e1
2. 过滤规则(Filtering)

控制转储内容以减小文件大小:

配置项说明示例
core_collector指定转储收集工具(默认 makedumpfilecore_collector makedumpfile -l --message-level 1 -c
default定义默认动作(reboot/halt/poweroff/dump_to_rootfsdefault reboot
extra_bins包含指定二进制文件到 initramfs(用于复杂转储场景)extra_bins /usr/bin/lsof
extra_modules加载额外内核模块(如网络驱动)extra_modules igb(加载 Intel 网卡驱动)
dracut_args向 dracut 传递参数(调整 initramfs 生成行为)dracut_args --add-drivers "nvme"
3. 过滤级别(Compression & Filter)

通过 makedumpfile 参数过滤内存页,常用选项:

# 过滤所有零页和缓存页(最小化转储)
core_collector makedumpfile -l --message-level 1 -d 31# 保留关键页(推荐生产环境)
core_collector makedumpfile -l --message-level 1 -c -d 17# 压缩转储文件(gzip/zstd/lzo)
core_collector makedumpfile -l --message-level 1 --compress zstd

过滤掩码(-d 参数)

  • 1: Zero pages

  • 2: Cache pages

  • 4: Cache private

  • 8: User pages

  • 16: Free pages

说明:组合值如 -d 17(1+16)表示过滤零页和空闲页。

4. 网络配置(Network)

远程转储需配置网络接口和认证:

# 静态 IP(优先级高于 DHCP)
net 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1
net eth1# SSH 密钥认证
ssh root@192.168.1.100
sshkey /root/.ssh/kdump_id_rsa
5. 钩子脚本(Hooks)

在转储前后执行自定义脚本:

# 转储前执行(如清理旧文件)
pre /usr/bin/clean_old_dumps.sh# 转储后执行(如发送通知)
post /usr/bin/send_email.sh

三、完整配置示例

# /etc/kdump.conf# 目标:保存到远程 NFS 服务器
nfs 192.168.1.100:/storage/kdump
path /hostname_$(uname -n)/date_$(date +%Y%m%d)# 过滤规则:压缩 + 排除零页/空闲页
core_collector makedumpfile -l --message-level 1 -c -d 17# 网络配置:静态 IP
net eth0
net 192.168.1.50 netmask 255.255.255.0 gateway 192.168.1.1# 钩子脚本
pre /usr/local/bin/pre_dump.sh
post /usr/local/bin/post_dump.sh# 默认动作:转储后重启
default reboot

四、配置验证与调试

1. 语法检查
kdump-config validate  # Debian/Ubuntu
kdumpctl check         # CentOS/RHEL
2. 重建 initramfs

修改配置后需重新生成 initramfs:

# Debian/Ubuntu
update-initramfs -u -k all# CentOS/RHEL
mkinitrd -f /boot/initramfs-$(uname -r).img $(uname -r)
3. 服务重启
systemctl restart kdump
4. 测试转储

手动触发崩溃以验证配置:

echo c > /proc/sysrq-trigger
5. 日志查看

排查转储失败问题:

journalctl -u kdump
dmesg | grep -i kdump

五、高级配置场景

1. 多路径转储

同时保存到本地和远程:

# 主目标:本地磁盘
ext4 /dev/mapper/vg_kdump-lv_kdump
path /kdump_local# 备用目标:NFS
nfs 192.168.1.100:/backup/kdump
path /kdump_remote
2. 加密转储

使用 SSH 加密传输:

ssh user@192.168.1.100
sshkey /root/.ssh/kdump_encrypted_key
core_collector makedumpfile --encrypt AES256 --passphrase-file /etc/kdump.pass
3. 云存储集成

转储到 AWS S3:

post /usr/bin/aws s3 cp /var/crash/vmcore s3://my-bucket/kdump/

六、常见问题与解决

1. 转储文件未生成

原因:存储路径权限不足或磁盘空间不足。

解决

chmod 700 /var/crash
df -h /var/crash
2. SSH 连接失败

原因:密钥认证错误或网络不通。

解决

ssh -i /root/.ssh/kdump_id_rsa root@192.168.1.100  # 手动测试连接
systemctl status firewalld  # 检查防火墙
3. 过滤后文件仍然过大

原因:过滤掩码未正确设置。

解决:调整 -d 参数,例如 -d 31(过滤所有非关键页)。

七、最佳实践

路径隔离
为每个主机或时间戳创建独立子目录,避免文件覆盖:

path /kdump/$(hostname)/$(date +%Y%m%d)

定期清理
添加 post 脚本自动删除旧转储文件:

post /usr/bin/find /var/crash -type f -mtime +30 -delete

安全加固

  • 限制 kdump 用户权限(非 root)。

  • 使用 SSH 密钥而非密码认证。

  • 加密敏感转储文件。

通过合理配置 /etc/kdump.conf,可以精确控制内核转储行为,适配复杂生产环境需求。建议结合 crash 工具和 debuginfo 符号文件,构建完整的内核故障分析体系。

相关文章:

  • backward梯度返回顺序要求(forward的输入、backward的输出)
  • 2025年中国光电子器件产业链分析
  • 大模型基础(五):transformers库(下):快速分词器、自动配置类、快速微调
  • 认识并理解什么是链路层Frame-Relay(帧中继)协议以及它的作用和影响
  • Spring-使用Java的方式配置Spring
  • 每日c/c++题 备战蓝桥杯(P1886 滑动窗口 /【模板】单调队列)
  • 大模型推理框架简介
  • 微前端qiankun动态路由权限设计与数据通信方案
  • 反常积分(广义积分)
  • 机器学习模型训练模块技术文档
  • XZ03_Overleaf使用教程
  • 名词解释DCDC
  • Wannier90文件与参数
  • Three.js + React 实战系列 - 项目展示区开发详解 Projects 组件(3D 模型 + 动效 + 状态切换)✨
  • DeepSeek技术发展详细时间轴与技术核心解析
  • 【KWDB 创作者计划】基于 ESP32 + KWDB 的智能环境监测系统实战
  • 人工智能浪潮中Python的核心作用与重要地位
  • DeepSeek成本控制的三重奏
  • 学习路线(工业自动化软件架构)
  • 【将你的IDAPython插件迁移到IDA 9.x:核心API变更与升级指南】
  • 美CIA发布视频“招募中国官员窃取机密”,外交部:赤裸裸的政治挑衅
  • AI世界的年轻人|横跨教育与产业,他说攻克前沿问题是研究者的使命
  • 泽连斯基拒绝普京72小时停火提议,坚持应尽快实现30天停火
  • 朝中社:美在朝鲜半岛增兵将进一步增加其本土安全不确定性
  • 美国证实加拿大及墨西哥汽车零部件免关税
  • 中国固体火箭发动机领域杰出专家赵殿礼逝世,享年92岁