首页/安全/取证与溯源速查/kdump 内核转储与 /var/crash
Linux 取证135 条

kdump 内核转储与 /var/crash

kdump 在内核崩溃时由预留内核导出内存到 /var/crash;这类转储能解释主机重启原因,也提供崩溃时刻的内存镜像。

取证与溯源速查安全更新于 2026-10-13

kdump 内核转储与崩溃记录

kdump 在内核崩溃时由预先保留的内存区域启动一个转储内核,把崩溃前的内存内容导出到 /var/crash 下,产物通常为 vmcore 目录与对应的 vmcore-dmesg.txt。这类转储能解释主机重启原因:正常关机不会产生该目录,出现记录说明当时发生了内核级别的崩溃。它同时也是崩溃时刻的内存镜像,可用于进一步分析。kdump 依赖启动参数中预留的内存区域,未预留时崩溃不会生成任何转储。

基本信息

配置/etc/kdump.conf,启动参数中的 crashkernel 预留
产物/var/crash/<时间>/ 下的 vmcore 与 vmcore-dmesg.txt
查看命令kdumpctl status(RHEL 系)
体积转储大小通常与内存规模相当

典型使用场景

  • 解释主机非预期重启的真实原因
  • 确认某次重启是硬件或内核问题还是人为操作
  • 为崩溃时间点提供精确的时间锚
  • 在内存侧分析中获得已有崩溃时刻的内存材料
  • 评估导出转储所需的空间与时间成本

核查转储

核查转储
ls -lt --time-style=long-iso /var/crash/ 2>/dev/null | head   # 有哪些崩溃记录
kdumpctl status 2>/dev/null | head -12         # 服务与预留状态(RHEL 系)
grep -o 'crashkernel=[^ ]*' /proc/cmdline      # 是否预留了转储内存
df -h /var/crash                               # 导出前确认可用空间
cat /etc/kdump.conf 2>/dev/null | grep -vE '^\s*#|^\s*$' | head   # 转储路径配置
head -20 /var/crash/*/vmcore-dmesg.txt 2>/dev/null   # 崩溃时的内核消息

/var/crash 内容读法

内容含义判读要点
日期时间目录崩溃发生的时刻与重启时间接近即为非正常重启
vmcore崩溃时内存镜像体积大,导出前确认空间
vmcore-dmesg.txt崩溃时刻的内核消息文本可直接阅读,优先使用
未预留内存时 kdump 无法启动,也就不会产生转储;查不到记录不等于没有崩溃,需要转向内核日志与系统日志中的崩溃迹象。
vmcore-dmesg.txt 是文本文件,体积极小,优先采集与阅读;完整 vmcore 按需导出,避免在大容量介质上无谓搬运。
vmcore 含崩溃时刻的完整内存内容,可能包含凭据与业务数据,导出与留存按敏感材料处理并限制访问范围。
转储生成后系统随即重启,可用目录时间与最后一次启动时间对照来判断崩溃时刻;若两者相差很远,说明这批目录是更早的遗留记录,不能用来解释本次重启。

易错点

  • 未检查 crashkernel 预留情况,误判为系统从未崩溃
  • 直接导出完整 vmcore 而忽略文本 dmesg,浪费大量时间与空间
  • 把转储目录时间与重启时间混为一谈,时间线出现偏差
  • vmcore 被当作普通日志文件复制到不受控设备

数据来源与参考

  • Red Hat 文档(kdump 配置与 vmcore)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌