O serviço kdump nativo do sistema operacional em instâncias bare metal do ECS pode falhar ao gerar arquivos de crash dump devido à incompatibilidade entre o tipo de instância e o sistema operacional.
Descrição do problema
A geração de arquivos de crash dump falha após a troca a quente de dispositivos nas seguintes instâncias:
-
Famílias de ECS Bare Metal Instance de sexta geração (incluindo ebmg6, ebmc6 e ebmr6) com as seguintes imagens:
Imagens do CentOS 8.3 ou anteriores
Imagens do Ubuntu 16/18
Imagens do Debian 10
Imagens do Alibaba Cloud Linux 2 com versão de kernel anterior a 4.19.91-24.al7
Famílias de ECS Bare Metal Instance de sétima geração (incluindo ebmg7, ebmc7 e ebmr7) com imagens do Debian 10.
Causa
Durante a fase crashkernel em uma instância ECS, o Kdump falha ao alocar o pci_resource para o dispositivo de bloco vda. Isso causa falha na geração do crash dump. A causa raiz é a incompatibilidade entre o tipo de instância e o sistema operacional.
Gave up waiting for root file system device. Common problems:
- Boot args (cat /proc/cmdline)
- Check rootdelay= (did the system wait long enough?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT! UUID=33ead8c1-41b6-4f85-84ec-xxx does not exist. Dropping to a shell!
Solução
Use um dos métodos a seguir para resolver esse problema:
Atualize o kernel do sistema operacional para a versão 5,10.
-
Aplique os patches a seguir no sistema operacional e recompile o kernel:
Benjamin Herrenschmidt (1): PCI: Don't auto-realloc if we're preserving firmware config Kelsey Skunberg (1): PCI: Make pci_hotplug_io_size, mem_size, and bus_size private Logan Gunthorpe (1): PCI: Don't disable bridge BARs when assigning bus resources Nicholas Johnson (2): PCI: Add "pci=hpmmiosize" and "pci=hpmmioprefsize" parameters PCI: Avoid double hpmemsize MMIO window assignmentNotaAlgumas versões do kernel já incluem parte desses patches. Adicione apenas os ausentes. Por exemplo, o kernel 4,19 do Debian 10 já contém o primeiro e o terceiro patches. Para que o kdump funcione, aplique o segundo, o quarto e o quinto patches.
Atente-se também aos pontos a seguir:
Em kernels Debian ou Ubuntu, modifique o parâmetro crashkernel para ajustar a memória reservada ao kdump. Configurações recomendadas:
crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M
Para certas imagens de sistema operacional, como o Debian 10, aumente a memória reservada para 384 MB ou 512 MB. Caso contrário, ocorrerá uma exceção OOM durante a fase crashkernel, impedindo a geração dos arquivos de crash dump.
Para reservar 256 MB de memória quando a memória total do sistema ultrapassar 384 MB, ajuste o parâmetro crashkernel conforme descrito a seguir:
-
Abra o arquivo /kdump-tools.cfg.
vim /etc/default/grub.d/kdump-tools.cfg -
Pressione I para entrar no modo de inserção e modifique o parâmetro crashkernel:
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT crashkernel=384M-:256M"Pressione Esc, insira
:wqe pressione Enter para salve e fechar o arquivo. -
Atualize a configuração do GRUB.
update-grub -
Reinicie a instância ECS para aplicar a configuração.
Reinicie as instâncias ECS fora do horário de pico para minimizar impactos nos negócios. Consulte Reiniciar uma instância.