Le service kdump intégré au système d'exploitation des instances ECS Bare Metal peut ne pas générer de fichiers de vidage sur incident en raison d'une incompatibilité entre le type d'instance et le système d'exploitation.
Description du problème
La génération des fichiers de vidage sur incident échoue après un remplacement à chaud de périphérique sur les instances suivantes :
-
Familles d'instances ECS Bare Metal de sixième génération (ebmg6, ebmc6 et ebmr6) avec les images suivantes :
CentOS 8.3 ou versions antérieures
Ubuntu 16/18
Debian 10
Alibaba Cloud Linux 2 avec une version du noyau antérieure à 4.19.91-24.al7
Familles d'instances ECS Bare Metal de septième génération (ebmg7, ebmc7 et ebmr7) avec Debian 10.
Cause
Lors de la phase crashkernel sur une instance ECS, Kdump ne parvient pas à allouer la ressource pci_resource au périphérique bloc vda. La génération du vidage sur incident échoue donc. Cette erreur provient d'une incompatibilité entre le type d'instance et le système d'exploitation.
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!
Solution
Pour résoudre ce problème, appliquez l'une des méthodes suivantes :
Mettez à jour le noyau du système d'exploitation vers la version 5.10.
-
Ajoutez les correctifs suivants au système d'exploitation et reconstruisez le noyau :
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 assignmentRemarqueCertaines versions du noyau incluent déjà certains de ces correctifs. Ajoutez uniquement ceux qui manquent. Par exemple, le noyau 4,19 de Debian 10 intègre les premier et troisième correctifs. Pour que kdump fonctionne, vous devez ajouter les deuxième, quatrième et cinquième correctifs.
Tenez compte des points suivants :
Pour les noyaux Debian ou Ubuntu, modifiez le paramètre crashkernel afin d'ajuster la mémoire réservée pour kdump. Voici les paramètres recommandés :
crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M
Pour certaines images de système d'exploitation telles que Debian 10, vous devez augmenter la mémoire réservée à 384 Mo ou 512 Mo. Sinon, une exception OOM se produit lors de la phase crashkernel et la génération des fichiers de vidage sur incident échoue.
Pour réserver 256 Mo de mémoire lorsque la mémoire totale du système dépasse 384 Mo, ajustez le paramètre crashkernel comme suit :
-
Ouvrez le fichier /kdump-tools.cfg.
vim /etc/default/grub.d/kdump-tools.cfg -
Appuyez sur I pour passer en mode Insertion et modifiez le paramètre crashkernel :
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT crashkernel=384M-:256M"Appuyez sur Échap, saisissez
:wqpuis appuyez sur Entrée pour enregistrer et fermer le fichier. -
Mettez à jour la configuration GRUB.
update-grub -
Redémarrez l'instance ECS pour prendre en compte la configuration.
Redémarrez les instances ECS pendant les heures creuses afin de minimiser l'impact sur vos activités. Consultez la rubrique Redémarrer une instance.