全部產品
Search
文件中心

Alibaba Cloud Linux:使用kdumpctl工具查看核心崩潰轉儲的開機記錄

更新時間:Oct 09, 2024

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工具查看核心崩潰轉儲的開機記錄。

  1. 運行以下命令,查看kdump服務狀態。

    sudo kdumpctl status

    回顯資訊說明如下:

    • 回顯資訊為kdump: Kdump is operational,表示服務正常運行,您可以跳過步驟2,直接執行步驟3

    • 回顯資訊為kdump: Kdump is not operational,表示服務未運行,您需要執行步驟2,手動啟動服務。

  2. (條件可選)運行以下命令,啟動kdump服務。

    sudo kdumpctl start

    回顯資訊如下,表示服務啟動成功。

    kdump: kexec: loaded kdump kernel
    kdump: Starting kdump: [OK]
  3. (條件可選)運行以下命令,強制Linux核心崩潰,以便後續查看轉儲捕獲核心開機記錄。

    如您的Linux系統在上一次重啟操作之後發生過核心崩潰事件,則可以跳過此步驟,直接執行步驟4查看核心崩潰轉儲的開機記錄。

    警告

    強制Linux核心崩潰操作執行後會立刻導致核心崩潰,請勿在生產環境或者正在運行業務的系統上執行此操作,否則會導致系統異常以及服務中斷,請謹慎操作。

    echo c | sudo tee /proc/sysrq-trigger
    重要

    執行上述命令後,您當前使用的Linux終端模擬器將無法與該Linux執行個體進行互動。請重新串連Linux執行個體後再進行後續操作。

  4. 運行以下命令,查看轉儲捕獲核心開機記錄。

    重要

    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).
    .........