/etc/kdump.conf 配置详解

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

一、配置文件结构

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

基本格式:

复制代码
# 注释行
key value
action [args]

二、核心配置项详解

1. 转储目标(Storage Target)

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

配置项 说明 示例
path /path 定义转储文件在目标位置的子目录(默认 /var/crash path /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 指定转储收集工具(默认 makedumpfile core_collector makedumpfile -l --message-level 1 -c
default 定义默认动作(reboot/halt/poweroff/dump_to_rootfs default 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 符号文件,构建完整的内核故障分析体系。

相关推荐
两个人的幸福10 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
zzzzzz31010 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
BingoGo12 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack12 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820713 天前
PHP 扩展——从入门到理解
php
鹏仔先生14 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
大树8814 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
小宇宙Zz14 天前
Maven依赖冲突
java·服务器·maven
网络研究院14 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智14 天前
ARP代理--工作原理
运维·网络·arp·arp代理