本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
kdump是一种为Linux内核提供崩溃转储机制的服务,旨在系统发生崩溃时捕获内存快照(vmcore)。通过该机制,用户能够在系统故障后分析内核崩溃时的状态,以确认导致崩溃的原因。当kdump服务异常时,可能导致内存快照生成失败,此时可以通过kdumpctl工具查看内核崩溃转储的启动日志,以分析kdump服务异常及未生成内存快照的原因,该工具在Alibaba Cloud Linux 3中已默认安装。本文以Alibaba Cloud Linux 3为例,介绍如何使用kdumpctl工具查看内核崩溃转储的启动日志。
使用限制
使用kdumpctl工具查看内核崩溃转储的启动日志时,您的实例配置、镜像及工具需要满足下述要求:
实例内存必须大于2 GB。
实例使用的操作系统必须为Alibaba Cloud Linux 3或Anolis OS 8,且内核版本为5.10.134-14及以上版本。
kexec-tools工具的版本应为2.0.25.0.2或更高。
使用说明
您可以按照以下使用说明,通过kdumpctl工具查看内核崩溃转储的启动日志。
运行以下命令,查看kdump服务状态。
sudo kdumpctl status
回显信息说明如下:
(条件可选)运行以下命令,启动kdump服务。
sudo kdumpctl start
回显信息如下,表示服务启动成功。
kdump: kexec: loaded kdump kernel kdump: Starting kdump: [OK]
(条件可选)运行以下命令,强制Linux内核崩溃,以便后续查看转储捕获内核启动日志。
如您的Linux系统在上一次重启操作之后发生过内核崩溃事件,则可以跳过此步骤,直接执行步骤4查看内核崩溃转储的启动日志。
警告强制Linux内核崩溃操作执行后会立刻导致内核崩溃,请勿在生产环境或者正在运行业务的系统上执行此操作,否则会导致系统异常以及服务中断,请谨慎操作。
echo c | sudo tee /proc/sysrq-trigger
重要执行上述命令后,您当前使用的Linux终端模拟器将无法与该Linux实例进行交互。请重新连接Linux实例后再进行后续操作。
运行以下命令,查看转储捕获内核启动日志。
重要sudo kdumpctl readlog
命令应在内核崩溃引发的内核重启之后执行。该命令所查看的日志存储于内存中,因此在系统重启操作后,会导致日志读取为空。sudo kdumpctl readlog
回显信息示例如下:
console log: [ 0.000000] Linux version 5.10.134-17.2.al8.x86_64 (mockbuild@h87c01383.na61) (gcc (GCC) 10.2.1 20200825 (Alibaba 10.2.1-3.8 2.32), GNU ld version 2.35-12.3.al8) #1 SMP Fri Aug 9 15:49:42 CST 2024 [ 0.000000] Command line: BOOT_IMAGE=(hd0,gpt3)/boot/vmlinuz-5.10.134-17.2.al8.x86_64 ro rhgb cgroup.memory=nokmem spec_rstack_overflow=off vring_force_dma_api kfence.sample_interval=100 kfence.booting_max=0-2G:0,2G-32G:2M,32G-:32M preempt=none biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8 noibrs nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 cryptomgr.notests rcupdate.rcu_cpu_stall_timeout=300 vring_force_dma_api irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 rootflags=nofail acpi_no_memhotplug transparent_hugepage=never nokaslr novmcoredd hest_disable disable_cpu_apicid=0 ramoops.mem_address=0xaf000000 ramoops.mem_size=0x60000 ramoops.console_size=0x48000 ramoops.ttyprobe_size=0x10000 ramoops.ecc=0 ramoops.dump_oops=0 elfcorehdr=3063156K [ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers' [ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers' [ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers' [ 0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers' ......... ttylog: Welcome to Alibaba Cloud Linux 3.2104 U10 (OpenAnolis Edition) dracut-049-228.git20230802.0.1.al8 (Initramfs)! [ OK ] Listening on udev Kernel Socket. [ OK ] Reached target Timers. [ OK ] Reached target Initrd Root Device. [ OK ] Reached target Local File Systems. [ OK ] Listening on Journal Socket. [ OK ] Started Memstrack Anylazing Service. [ OK ] Reached target Swap. [ OK ] Listening on Journal Socket (/dev/log). .........