Kdump 收集器及使用方式

以下是 Linux 系统中 Kdump 转储收集器的详细说明及其使用方法,涵盖核心工具、配置方法及实际示例:

一、Kdump 收集器分类及作用

Kdump 的核心功能是通过 捕获内核 生成内存转储文件(vmcore),其核心收集器包括:

收集器/工具作用适用场景
makedumpfile默认核心工具,过滤和压缩内存页生成 vmcore生产环境(节省存储空间)
kexec-tools管理内核快速启动(kexec),加载捕获内核所有 Kdump 场景(基础依赖)
crashkernel 参数预留内存供捕获内核使用内核启动配置(必需)
自定义脚本通过 pre/post 钩子扩展功能(如加密、上传云存储)高级场景(自动化处理)

二、核心收集器配置与使用

1. makedumpfile

作用:生成转储文件时过滤无关内存页(如零页、缓存),并支持压缩。

配置方法/etc/kdump.conf):
# 指定过滤掩码(-d)和压缩算法(-c/-l)
core_collector makedumpfile -l --message-level 1 -d 31

过滤掩码(-d

  • 1: 过滤零页

  • 2: 过滤缓存页

  • 4: 过滤私有缓存页

  • 8: 过滤用户进程页

  • 16: 过滤空闲页

示例-d 31(1+2+4+8+16)过滤所有非关键页。

压缩选项

  • -c: zlib 压缩

  • -l: lzo 压缩(更快,压缩率较低)

  • -p: snappy 压缩(需内核支持)

手动执行
# 直接生成转储文件(需指定内存设备)
makedumpfile -l -d 31 /proc/vmcore /path/to/vmcore
2. kexec-tools

作用:快速加载捕获内核,绕过 BIOS 初始化,确保内存保留。

安装与验证
# 安装(各发行版通用)
sudo apt install kexec-tools   # Debian/Ubuntu
sudo yum install kexec-tools   # CentOS/RHEL# 验证 kexec 是否可用
kexec --version
手动加载捕获内核(调试用):
# 加载捕获内核(需指定内核镜像和初始化内存盘)
kexec -p /boot/vmlinuz-$(uname -r) \
--initrd=/boot/initramfs-$(uname -r).img \
--append="root=/dev/sda1 crashkernel=256M"
3. crashkernel 参数

作用:为捕获内核预留内存,必须在内核启动参数中配置。

修改 GRUB 配置
# 编辑 GRUB 文件(路径因发行版而异)
sudo vim /etc/default/grub# 添加 crashkernel 参数(示例为预留 256MB)
GRUB_CMDLINE_LINUX="... crashkernel=256M quiet"# 更新 GRUB 并重启
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot
动态调整(无需重启)
# 调整预留内存(需内核支持)
echo 512M > /sys/kernel/kexec_crash_size

三、存储目标配置示例

通过 /etc/kdump.conf 定义转储文件存储位置:

1. 本地磁盘
# 保存到 ext4 分区
ext4 /dev/sdb1
path /var/crash
core_collector makedumpfile -l -d 17
2. NFS 服务器
# 保存到 NFS 共享目录
nfs 192.168.1.100:/shared/kdump
path /crash_dumps
core_collector makedumpfile -c -d 31
3. SSH 远程存储
# 通过 SSH 传输到远程主机
ssh root@192.168.1.100
sshkey /root/.ssh/kdump_id_rsa
path /remote/crash
4. 加密存储
# 使用加密转储(需内核支持)
core_collector makedumpfile --encrypt AES256 --passphrase-file /etc/kdump.pass

四、触发与验证

1. 手动触发转储
# 触发内核崩溃(立即重启)
echo c > /proc/sysrq-trigger# 或使用专用工具(需安装)
sudo crashme
2. 验证转储文件
# 检查 vmcore 是否生成
ls -lh /var/crash/*/vmcore# 使用 crash 工具解析
crash /usr/lib/debug/boot/vmlinux-$(uname -r) /var/crash/*/vmcore

五、高级用法与最佳实践

1. 自动化钩子脚本

在转储前后执行自定义操作:

# 转储前清理旧文件
pre /usr/local/bin/kdump_clean.sh# 转储后上传到云存储
post /usr/local/bin/kdump_upload_s3.sh
2. 多级过滤策略

按需调整过滤规则:

最小转储(仅保留关键数据):

core_collector makedumpfile -d 31 -c

完整转储(调试复杂问题):

core_collector makedumpfile -d 0
3. 资源受限环境优化
  • 小内存系统:减少 crashkernel 预留(最低 128M)。

  • 无持久存储:保存到临时内存盘(raw /dev/ram0)。

六、故障排查

1. 转储失败常见原因
  • 预留内存不足:增大 crashkernel 值(如 512M)。

  • 存储路径权限问题

    chmod 700 /var/crash
  • 服务未启动

    systemctl enable --now kdump
2. 日志分析
# 查看 Kdump 服务日志
journalctl -u kdump# 检查内核日志
dmesg | grep -i kdump

七、总结

工具/配置核心功能关键命令/参数
makedumpfile过滤和压缩转储文件-d <掩码>-c/-l
kexec-tools快速加载捕获内核kexec -p
crashkernel预留内存crashkernel=256M
/etc/kdump.conf定义存储路径、过滤规则和钩子脚本ext4/nfs/sshcore_collector

通过合理配置收集器和存储目标,Kdump 可以高效捕获内核崩溃现场,为故障分析提供可靠数据。建议定期测试转储流程,确保其可用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Error: error:0308010C:digital envelope routines::unsupported 高版本node启动低版本项目运行报错

我的问题就是高版本node启动旧版本项目引起的问题&#xff0c;单独在配置 package.json文件中配置并运行就可以&#xff0c;大概意思就是设置node的openssl "scripts": {"dev": "SET NODE_OPTIONS--openssl-legacy-provider && vue-cli-servi…

松下机器人快速入门指南(2025年更新版)

松下机器人快速入门指南&#xff08;2025年更新版&#xff09; 松下机器人以其高精度、稳定性和易用性在工业自动化领域广泛应用。本文将从硬件配置、参数设置、手动操作、编程基础到维护保养&#xff0c;全面讲解松下机器人的快速入门方法&#xff0c;帮助新手快速掌握核心操…

【CISCO】Se2/0, Se3/0:串行口(Serial) 这里串口的2/0 和 3/0分别都是什么?

在 Cisco IOS 设备上&#xff0c;接口名称通常遵循这样一个格式&#xff1a; <类型><槽号>/<端口号>类型&#xff08;Type&#xff09;&#xff1a;表示接口的物理或逻辑类型&#xff0c;比如 Serial&#xff08;串行&#xff09;、FastEthernet、GigabitEt…

开源无人机地面站QGroundControl安卓界面美化与逻辑优化实战

QGroundControl作为开源无人机地面站软件,其安卓客户端界面美化与逻辑优化是提升用户体验的重要工程。 通过Qt框架的界面重构和代码逻辑优化,可以实现视觉升级与性能提升的双重目标。本文将系统讲解QGC安卓客户端的二次开发全流程,包括开发环境搭建、界面视觉升级、多分辨率…

基于DDPG的自动驾驶小车绕圈任务

1.任务介绍 任务来源: DQN: Deep Q Learning &#xff5c;自动驾驶入门&#xff08;&#xff1f;&#xff09; &#xff5c;算法与实现 任务原始代码: self-driving car 在上一篇使用了DQN算法完成自动驾驶小车绕圈任务之后&#xff0c;学习了DDPG算法&#xf…

缓存置换:用c++实现最近最少使用(LRU)算法

在计算机的世界里&#xff0c;缓存就像一个“快速仓库”&#xff0c;它存储着我们频繁访问的数据&#xff0c;大大提升了数据的读取速度。但这个 “仓库” 空间有限&#xff0c;当它被装满时&#xff0c;就得决定舍弃一些数据&#xff0c;为新数据腾出位置&#xff0c;这个决策…

【YOLO11改进】改进Conv、颈部网络STFEN、以及引入PIOU用于小目标检测!

改进后的整体网络架构 改进一:RFD模块(Conv) YOLOv11模型的跨步卷积下采样虽然快速聚合了局部特征,并且实现了较高的计算效率,但其固有的信息压缩机制会导致细粒度特征的不可逆丢失。针对特征保留与计算效率的平衡问题,本文采用RFD模块替换跨步卷积下采样模块。RFD模块通…

设计模式每日硬核训练 Day 18:备忘录模式(Memento Pattern)完整讲解与实战应用

&#x1f504; 回顾 Day 17&#xff1a;中介者模式小结 在 Day 17 中&#xff0c;我们学习了中介者模式&#xff08;Mediator Pattern&#xff09;&#xff1a; 用一个中介者集中管理对象之间的通信。降低对象之间的耦合&#xff0c;适用于聊天系统、GUI 控件联动、塔台调度等…

java单元测试代码

import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; import java.util.List;public class UserServiceTest {Testpublic void testSearchUserByTags() {// 模拟标签列表List<String> tagNameList List.of("tag1", "…

前端面经-VUE3篇(一)--vue3基础知识- 插值表达式、ref、reactive

目录 一、 插值表达式 1、插值表达式 ({{}}) 的本质与作用&#xff1a; 2、与 Vue 响应式系统关系&#xff1a; 二、指令 1、什么是 Vue 指令&#xff1f; 2、指令的分类 1、内置指令 ① 内容绑定&#xff1a;v-text 和 v-html ② 属性绑定&#xff1a;v-bind ③ 事件绑定…

矩阵置零(中等)

可以用两个标记数组分别记录每一行和每一列是否有零出现。 首先遍历该数组一次&#xff0c;如果某个元素为 0&#xff0c;那么就将该元素所在的行和列所对应标记数组的位置置为 true。然后再次遍历该数组&#xff0c;用标记数组更新原数组。 class Solution {public void set…

Android 实现一个隐私弹窗

效果图如下&#xff1a; 1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数 2. 《用户协议》、《隐私政策》设置成可点击的&#xff0c;且颜色要区分出来 res/layout/dialog_privacy_policy.xml 文件 <?xml version"1.0" encoding"utf-8"?&…

TCP概念+模拟tcp服务器及客户端

目录 一、TCP基本概念 二、ser服务器代码 三、cil客户端代码 四、面试常问问题 4.1 TCP的可靠性怎么保证或怎么实现? 4.2 具体说一下滑动窗口 一、TCP基本概念 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可…

Cocos Creator 自动图集资源 (Auto Atlas)使用注意事项

1、游戏打包时&#xff0c;自动图集设置选项中&#xff0c;默认会删除无关联的图片 2、自动图集设置中&#xff0c;就算勾除(Remove unused ImageAsset from the Bundle)的功能&#xff0c;无关联的图片也不会打包进入图集之中&#xff0c;会独立存在打包的游戏中。 3、使用自动…

PyTorch 2.0编译器技术深度解析:如何自动生成高性能CUDA代码

引言&#xff1a;编译革命的范式转移 PyTorch 2.0的torch.compile不仅是简单的即时编译器&#xff08;JIT&#xff09;&#xff0c;更标志着深度学习框架从‌解释执行‌到‌编译优化‌的范式跃迁。本文通过逆向工程编译过程&#xff0c;揭示PyTorch如何将动态图转换为高性能CU…

【AI面试准备】从0-1搭建人工智能模型自动化评估理论与测试,掌握测试数据集建立与优化,熟练数据处理和模型评测工作

面试要求&#xff1a;从0-1搭建人工智能模型自动化评估理论与测试&#xff0c;掌握测试数据集建立与优化&#xff0c;熟练数据处理和模型评测工作。 以下是针对从0-1搭建AI模型自动化评估体系的系统化知识总结&#xff0c;涵盖核心方法论、技术栈、高频考点及面试回答模板&…

【Linux应用】在PC的Linux环境下通过chroot运行ARM虚拟机镜像img文件(需要依赖qemu-aarch64、不需要重新安装iso)

【Linux应用】在PC的Linux环境下通过chroot运行ARM虚拟机镜像img文件&#xff08;需要依赖qemu-aarch64、不需要重新安装iso&#xff09; qemu提供了运行ARM虚拟机的方法 具体的操作方式就是建立一个硬盘img 然后通过iso安装到img 最后再运行img即可 这种方式教程很多 很简单 …

OpenCv实战笔记(1)在win11搭建opencv4.11.1 + qt5.15.2 + vs2019_x64开发环境

一. 准备工作 Visual Studio 2019&#xff08;安装时勾选 C 桌面开发 和 Windows 10 SDK&#xff09; CMake 3.20&#xff08;官网下载&#xff09; Qt 5.15.2&#xff08;下载 Qt Online Installer&#xff09;安装时勾选 MSVC 2019 64-bit 组件。 opencv 4.11.1 源码下载 git…

springboot+mysql+element-plus+vue完整实现汽车租赁系统

目录 一、项目介绍 二、项目截图 1.项目结构图 三、系统详细介绍 管理后台 1.登陆页 2.管理后台主页 3.汽车地点管理 4.汽车类别 5.汽车品牌 6.汽车信息 7.用户管理 8.举报管理 9.订单管理 10.轮播图管理 11.交互界面 12.图表管理 汽车租赁商城 1.首页 2.汽…

【算法笔记】动态规划基础(二):背包dp

目录 01背包例题状态表示状态计算初始化AC代码 完全背包例题状态表示状态计算初始化TLE代码 多重背包例题状态表示状态计算初始化AC代码 分组背包例题状态表示状态计算初始化AC代码 二维费用背包例题状态表示状态计算初始化AC代码 混合背包问题例题状态表示状态计算初始化TLE代…