kdumpは、カーネルがクラッシュしたときにメモリイメージ (クラッシュダンプまたはvmcore) をキャプチャできるLinuxのカーネルクラッシュダンプメカニズムです。 メモリイメージには、問題の分析とトラブルシューティングに役立つクラッシュ時のシステムメモリの内容が含まれています。 kdumpが異常に遭遇した場合、kdumpはメモリイメージを生成できない可能性があります。 この場合、kdumpctlツールを使用して、カーネルクラッシュダンプのブートログを表示し、ログに基づいてkdump異常とメモリイメージ生成失敗の原因を分析できます。 デフォルトでは、kdumpctlツールはAlibaba Cloud Linux 3にプリインストールされています。 このトピックでは、kdumpctlツールを使用して、Alibaba Cloud Linux 3を実行するElastic Compute Service (ECS) インスタンスのカーネルクラッシュダンプのブートログを表示する方法について説明します。
前提条件
kdumpctlツールを使用してECSインスタンスのカーネルクラッシュダンプのブートログを表示する前に、インスタンスとツールが次の要件を満たしていることを確認してください。
ECSインスタンスには2 GBを超えるメモリがあります。
ECSインスタンスは、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が開始されたことを示します。
kdump: kexec: loaded kdump kernel kdump: Starting kdump: [OK]次のコマンドを実行して、Linuxカーネルクラッシュをトリガーします。
Linuxオペレーティングシステムを最後に再起動した後にカーネルクラッシュが発生した場合は、この手順をスキップしてステップ4を実行します。
警告次のコマンドを実行すると、カーネルはすぐにクラッシュします。 カーネルクラッシュは、システム例外またはサービスの中断を引き起こします。 本番環境または業務が実行されているシステムでは、この操作を実行しないでください。
echo c | sudo tee /proc/sysrq-trigger重要上記のコマンドを実行すると、使用するLinuxターミナルシミュレーターはECSインスタンスと通信できなくなります。 ECSインスタンスに再接続して、以降の操作を実行します。
次のコマンドを実行して、カーネルクラッシュダンプのブートログを表示します。
重要sudo kdumpctl readlogコマンドは、クラッシュトリガーによるカーネルの再起動後にのみ実行しますが、システムの再起動は実行しません。 次のコマンドを実行して表示するブートログは、メモリに保存されます。 Linuxオペレーティングシステムの再起動後にコマンドを実行すると、コマンドの出力は空になります。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). .........