本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
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). .........