系统崩溃怎么办?教你开启麒麟系统崩溃日志功能

鹏大搞运维 2025-03-26 13:03:10

原文链接:

Hello,大家好啊!今天给大家带来一篇麒麟终端操作系统上安装配置 Kdump 的文章。在日常使用过程中,系统如果发生崩溃(Kernel Panic),将可能导致工作中断甚至数据丢失。为了及时获取崩溃现场信息,分析故障根源,我们可以使用 Linux 内核自带的 Kdump 崩溃转储机制。本篇文章将手把手教大家如何在麒麟终端系统中正确安装、配置并启用 Kdump,让系统在关键时刻拥有“黑匣子”一样的应急记录能力!欢迎大家分享点赞,点个在看和关注吧!

什么是 Kdump?

Kdump 是 Linux 提供的一种内核崩溃转储机制。当系统发生致命错误(如内核崩溃)时,会自动重启到一个事先准备好的最小内核(crash kernel)环境,并将出错时的内存镜像(vmcore)保存下来,供日后排查分析使用。

1.安装软件

pdsyw@pdsyw1024:~/桌面$ sudo apt install linux-crashdump apport crash -y

linux-crashdump:提供开启和使用 kdump(内核崩溃转储)的支持。

apport:Ubuntu 的故障报告工具,可以收集并上报崩溃信息。

crash:内核转储分析工具,用于分析生成的 vmcore 文件。

-y:在安装过程中自动回答“是”,无需再次手动确认。

2.选择是

3.选择是

4.编辑日志文件存储位置

pdsyw@pdsyw1024:~/桌面$ sudo vim /etc/default/kdump-tools 输入密码 pdsyw@pdsyw1024:~/桌面$ grep KDUMP_CORE /etc/default/kdump-tools # KDUMP_COREDIR - local path to save the vmcore to.KDUMP_COREDIR="/var/crash"KDUMP_COREDIR="/var/crash"

/etc/default/kdump-tools 文件中包含了 kdump-tools 的默认配置,如转储保存路径、启动选项等。

KDUMP_COREDIR="/var/crash" 指定内核崩溃转储文件(vmcore)要保存到 /var/crash 目录下。

grep KDUMP_CORE 用于查看文件中的 KDUMP_COREDIR 行,确认其配置值。

5.编辑crashkernel大小

pdsyw@pdsyw1024:~/桌面$ sudo vim /etc/default/grub.d/kdump-tools.cfg pdsyw@pdsyw1024:~/桌面$ cat /etc/default/grub.d/kdump-tools.cfg GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT crashkernel=512M"

这条配置会追加在系统的内核启动参数中。 在 /etc/default/grub.d/kdump-tools.cfg 文件中,设置了 crashkernel=512M。

这表示在内核启动时,预留 512MB 内存给 kdump 使用,一旦出现内核崩溃,kdump 会利用这部分预留的内存来生成转储文件。

常见的经验/参考值

小内存系统(少于 4GB):一般设置为 crashkernel=256M 或者 crashkernel=384M 即可。

中等内存系统(4GB~16GB 左右):可以设置为 crashkernel=512M,对于大部分场景足以完成转储操作。

大内存系统(16GB 以上):通常可适当增大到 crashkernel=1G 或更多,比如 crashkernel=2G。在非常高内存(上百 GB)场景中,如需完全转储所有内存,可能需要预留更多。

使用 auto 或 auto指定值(某些发行版支持):某些发行版(如 RHEL/CentOS 7+)支持在 grub 中配置 crashkernel=auto,系统会根据总内存自动计算预留大小。Ubuntu 默认并不一定启用这个功能,但可以查看发行版文档。

6.更新grub

pdsyw@pdsyw1024:~/桌面$ sudo update-grub

更新 grub 的配置文件使前一步的 crashkernel 参数生效。

update-grub 会读取 /etc/default/grub 及相关 grub.d 目录内容,生成最终的 /boot/grub/grub.cfg。

7.关机并且重启

需要重启系统,才能使新设置的内核启动参数(如 crashkernel=512M)真正生效。

8.查看cmdline

pdsyw@pdsyw1024:~/桌面$ cat /proc/cmdline

cat /proc/cmdline 显示当前正在运行的内核所使用的启动参数。

如果您看到其中含有 crashkernel=512M,说明上面的配置和重启已生效。

9.查看kdump配置

pdsyw@pdsyw1024:~/桌面$ kdump-config show

kdump-config 是管理 kdump 的工具,可以查看或控制其运行状态、配置等。

show 子命令会列出当前的 kdump 设置,例如:

是否启用 kdump

内存保留大小

转储存放路径

内核启动参数等

10.查看kdump-tools状态

pdsyw@pdsyw1024:~/桌面$ systemctl status kdump-tools

检查 kdump-tools 服务是否处于激活状态,如果正常配置并运行,状态应该是 active 或类似状态。

如果未启动,可以使用 sudo systemctl start kdump-tools 来启动。

11.打开sysrq功能

pdsyw@pdsyw1024:~/桌面$ sudo sysctl -w kernel.sysrq=1输入密码 kernel.sysrq = 1pdsyw@pdsyw1024:~/桌面$ sudo sysctl -a |grep kernel.sysrqkernel.sysrq = 1

sysrq(Magic SysRq Key)是 Linux 内核提供的一种紧急控制机制,可以通过 /proc/sysrq-trigger 来触发某些内核操作。

sysctl -w kernel.sysrq=1 表示允许通过 sysrq 触发一系列特殊操作(包括模拟崩溃)。

sudo sysctl -a | grep kernel.sysrq 查看当前 sysrq 的设置值是否为 1(已启用)。

12.模拟内核崩溃

pdsyw@pdsyw1024:~/桌面$ sudo -iroot@pdsyw1024:~# echo c > /proc/sysrq-trigger

切换到 root(sudo -i),然后执行 echo c > /proc/sysrq-trigger,这是一个触发命令,会让内核“主动”崩溃。

当系统收到这个命令,kdump 会在您之前预留的内存空间中启动第二内核,并生成转储文件(vmcore)。

警告:这条命令会直接导致系统崩溃重启,不要在生产环境随意使用。

13.查看日志

pdsyw@pdsyw1024:~/桌面$ cd /var/crash/

重启后,可以在 /var/crash 目录中查看是否生成了崩溃转储文件以及相关的日志信息。

如果成功捕获内核转储,会在这里看到相应的文件或目录。

通过安装并配置 Kdump,麒麟终端操作系统在面对突发内核崩溃时,就能像飞机“黑匣子”一样记录“事故现场”,为后续分析故障提供第一手资料。对于企业级用户、开发者、测试人员来说,这无疑是提高系统可靠性的重要手段。如果您觉得这篇文章对您有帮助,欢迎分享点赞,记得点个在看和关注哦!

0 阅读:3

鹏大搞运维

简介:感谢大家的关注