处理系统崩溃 配置crash kernel crashdump

Crash Kernel 是指系统崩溃时启动的一个小型内核,专门用于捕获系统崩溃时的内存状态(称为 crashdump)。在现代 Linux 系统中,通常通过 kexec 机制来实现 crash kernel。

  1. 用途
    • 当系统遇到致命错误或崩溃时,通常会重启系统。但在重启之前,我们希望捕获崩溃时的内存信息,以便后续分析。
    • Crash kernel 提供一个简化的环境,可以在主内核崩溃时迅速启动,避免因为重启而丢失有价值的调试信息。
  2. 工作原理
    • 在正常系统运行时,预留一部分内存给 crash kernel。当主内核崩溃时,kexec 机制会立即启动 crash kernel,而不是执行传统的引导过程。
    • Crash kernel 启动后,会从主内核的内存中提取数据并保存为 crashdump 文件。

一些常见发行版在下载时会顺便将 crashkernel 配置成默认值,下载相关工具后重启即可。

Crashdump 是指在系统崩溃时保存的内存映像文件,用于诊断和调试系统问题。

  1. 用途
    • 记录崩溃时系统的状态,包括内存、寄存器和其他关键数据。
    • 提供详细的信息给开发者或系统管理员,以便分析崩溃原因和调试内核错误。
  2. 生成过程
    • 当系统崩溃时,crash kernel 启动并从主内核的内存中提取数据。
    • 这些数据通常会保存到磁盘或通过网络传输到远程服务器。
    • 常用的工具如 kdump 可以管理 crashdump 的生成和存储。
  3. 分析
    • 生成的 crashdump 文件可以使用调试工具如 crashgdb 来分析。
    • 开发者可以通过这些工具检查内存状态、调用栈、进程信息等,找到导致崩溃的原因。

下载 crashdump

Ubuntu

https://ubuntu.com/server/docs/kernel-crash-dump

apt install linux-crashdump

配置内核启动参数(可选)

如果重启后 /proc/cmdline 中未出现 crashkernel 的内核参数,表示自动配置失败,必须手动配置;亦或是想修正 crashkernel 的大小,可以在 /etc/default/grub.d/kdump-tools.cfg 里面加上:

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT crashkernel=2G-16G:512M,16G-:768M"

上面的启动参数代表:

  • 当 2g < 内存 < 16g 时,保留 512m 内存给 crashkernel
  • 当 内存 >= 16g 时,保留 768m 内存给 crashkernel

重新生成 grub 配置文件

修改完内核启动参数后运行update-grub

验证

运行 cat /proc/cmdline

BOOT_IMAGE=/vmlinuz-5.15.0-107-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro crashkernel=512M-:192M

输出中应该出现 crashkernel=xxxx

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇