百度收录网站关键字地推app
1. kdump基本原理
1.1 内核崩溃处理机制
当 Linux 系统内核发生崩溃时,通常会触发 panic,系统停止正常运行。Kdump 在这种情况下:
- 使用一个备用的内核(称为 crash kernel)来启动最小化的环境。
- 从崩溃的主内核中复制内存内容(转储文件)。
- 将转储文件保存到预定义的存储位置(如本地磁盘、网络服务器等)。
1.2 Crash Kernel 的作用
Kdump 的核心是依赖 Crash Kernel,这是一段预留的内存和独立的内核,用于在主内核崩溃后接管系统。
- 主内核崩溃后,控制权切换到 Crash Kernel。
- Crash Kernel 通过访问主内核的内存(物理地址)生成转储文件。
2 Kdump 的工作流程
2.1 内存预留
在系统启动时,通过内核参数(crashkernel)为 Crash Kernel 预留一部分内存(通常是 128M 或更多)。
编辑 GRUB 配置文件,添加 crashkernel 参数预留内存:
GRUB_CMDLINE_LINUX="crashkernel=256M"
2.2 Crash Kernel 加载
系统启动时,Crash Kernel 和主内核一起加载到内存中,但 Crash Kernel处于非活动状态。
2.3 触发崩溃
- 主内核发生崩溃(如 panic)
- 或人为触发崩溃(通过 echo c > /proc/sysrq-trigger)
2.4 Crash Kernel 启动
系统重启到 Crash Kernel 环境。
Crash Kernel 通过访问崩溃的主内核内存区域,捕获内存内容并保存。
2.5 保存转储文件
Crash Kernel 将捕获的内存转储文件(vmcore)保存到本地磁盘、NFS、或其他预定义路径。
3. Kdump 的配置
3.1 内核支持
Kdump 的关键组件是 kexec,它允许系统在内核崩溃时直接加载并启动一个新的内核(Crash Kernel)。因此,标准内核必须启用 kexec 功能。
检查是否启用了 kexec
可以通过以下命令检查是否启用了 kexec:
$ grep CONFIG_KEXEC /boot/config-$(uname -r)CONFIG_KEXEC=y
如果没有启用,您需要重新编译内核并启用该功能,或者安装一个启用了该功能的预编译内核。
检查是否支持 crashkernel
通过检查内核配置文件(如 /boot/config-$(uname -r))确认是否启用支持:
$ grep CONFIG_CRASH_KEXEC /boot/config-$(uname -r)CONFIG_CRASH_KEXEC=y
## 或者
CONFIG_CRASH_DUMP=y
CONFIG_CRASH_CORE