当前位置: 首页 > Linux

Linux中的Kdump服务

时间:2023-04-06 19:47:44 Linux

我们知道Linux中的系统分为内核态和用户态。一般用户行为发生在用户态,内核自己管理。但是如果内核因为错误而崩溃,你可以使用Kdump来分析错误的原因。Kdump服务提供了内核崩溃转储机制,可以在内核崩溃时保存系统内存信息。kdump在崩溃时使用kexec系统调用进入第二个内核抓取并保存崩溃内核的内存信息。第二个内核以服务的形式占用一部分系统内存。也就是说,Kdump服务利用系统内存提供一个临时备份内核,用来保存内核日志信息。安装KdumpKdump服务由kexec-tools包提供,安装命令为$rpm-qkexec-tools$yuminstallkexec-tools注意内核崩溃转储机制需要内核命令行参数来设置崩溃转储,必须在“firstkernel”中启动,为捕获内核保留crashkernel内存。需要在/etc/default/grub配置中设置crashkernel=256M。当内核崩溃时,可以将crashlogcoredump保存在一个文件中,remotedevice,ornetworkdevice.如果没有设置,一般保存在/var/crash/目录下,如果要修改保存位置,可以修改/etc/kdump.conf补丁的地址配置文件中的参数。Kdump服务管理Kdump作为服务管理启用kdump$systemctlenablekdump.service启动kdump$systemctlstartkdump.service停止kdump$systemctlenablekdump.service禁用kdump$systemctldisablekdump.service强制内核崩溃手动制作内核crash$systemctlis-activekdump$echo1>/proc/sys/kernel/sysrq$echoc>/proc/sysrq-trigger$重启后在/var/crash/目录下可以看到vmcore日志文件crashTool如果Kdump正常运行并成功获取内核崩溃日志,那么下一步就是分析崩溃日志。我们可以使用crash工具查看vmcore日志文件。crash工具是一个类似GDB的分析coredump的工具。安装crash$yuminstallcrash$yuminstallkernel-debuginfo使用crash分析日志$crash/usr/lib/debug/lib/modules/4.18.0-5.el8.x86_64/vmlinux/var/crash/127.0.0.120190-03-01-11:06:33/vmcore我们可以看到crash命令的第一个参数是当前系统的debug-info,第二个参数是vmcore文件。执行完crash命令后,会进入crash工具的CLI,输入更多命令来操作#displaymessagesbuffer$crash>log#displaykernelbacktrace$crash>bt#displayprocessstatus$crash>ps#displayvirtualmemory$crash>vm#显示打开的文件$crash>files