O kdump é um mecanismo de dump de falhas do kernel que captura uma imagem de memória (vmcore) quando o kernel Linux falha e preserva o conteúdo da memória do sistema para análise. Se o kdump não gerar uma imagem de memória, use o comando kdumpctl readlog para visualizar os logs de inicialização do kernel de captura de dump e identificar a causa raiz. A ferramenta kdumpctl vem pré-instalada no Alibaba Cloud Linux 3.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância do Elastic Compute Service (ECS) com mais de 2 GB de memória
Alibaba Cloud Linux 3 ou Anolis OS 8 com versão do kernel 5.10.134-14 ou posterior
kexec-tools versão 2.0.25.0.2 ou posterior
Visualizar logs de inicialização de um dump de falha do kernel
Etapa 1: Verificar o status do kdump
Execute o seguinte comando para verificar se o kdump está em execução:
sudo kdumpctl status
Se a saída contiver
kdump: Kdump is operational, o kdump está em execução. Pule para a Etapa 3.Caso a saída exiba
kdump: Kdump is not operational, prossiga para a Etapa 2 e inicie o kdump.
Etapa 2: Iniciar o kdump
sudo kdumpctl start
A saída abaixo confirma que o kdump foi iniciado:
kdump: kexec: loaded kdump kernel
kdump: Starting kdump: [OK]
Etapa 3: Provocar uma falha do kernel
Ignore esta etapa se já ocorreu uma falha do kernel desde a última reinicialização do sistema operacional.
A execução do comando a seguir provoca uma falha imediata do kernel e causa exceções no sistema ou interrupções de serviço. Não execute este comando em ambiente de produção ou em qualquer sistema com cargas de trabalho ativas.
echo c | sudo tee /proc/sysrq-trigger
Após a falha do kernel, o simulador de terminal Linux em uso perde a comunicação com a instância ECS. Reconecte-se à instância ECS para continuar.
Etapa 4: Visualizar os logs de inicialização
Execute sudo kdumpctl readlog somente após uma reinicialização do kernel provocada por falha, e não após uma reinicialização normal do sistema. Os logs de inicialização ficam armazenados na memória e são apagados em uma reinicialização completa do sistema.
sudo kdumpctl readlog
A saída contém duas seções:
console log: mensagens do kernel provenientes da sequência de inicialização do kernel de captura de dump
ttylog: mensagens de inicialização de serviços do sistema originadas do ambiente initramfs
Exemplo de saída:
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).
.........
Use a seção console log para diagnosticar falhas na inicialização do kernel de captura de dump e a seção ttylog para identificar qual serviço do initramfs não iniciou.