Trouble Logging Kernel Panic for Debugging

8

J'exécute Ubuntu 12.04 sur AWS / EC2 et j'ai un grand nombre d'hôtes en hausse. J'essaie d'activer le vidage du noyau, mais lorsque je simule une panique du noyau, il n'y a aucun fichier .crash écrit nulle part sur le système de fichiers.

J'ai suivi les instructions ici: https://wiki.ubuntu.com/Kernel/CrashdumpRecipe

Et les choses semblent bien configurées:

# cat /proc/cmdline 
root=LABEL=cloudimg-rootfs ro console=hvc0  crashkernel=384M-2G:64M,2G-:128M

# dmesg |grep crash
[    0.000000] Command line: root=LABEL=cloudimg-rootfs ro console=hvc0  crashkernel=384M-2G:64M,2G-:128M
[    0.000000] Reserving 64MB of memory at 832MB for crashkernel (System RAM: 1708MB)
[    0.000000] Kernel command line: root=LABEL=cloudimg-rootfs ro console=hvc0  crashkernel=384M-2G:64M,2G-:128M

# cat /sys/kernel/kexec_crash_loaded
1

Mais quand j'exécute:

# echo c | sudo tee /proc/sysrq-trigger

Le système redémarre comme prévu, mais aucun fichier de «crash» d'aucune sorte n'est généré. Que pourrais-je faire de mal?

Stephan
la source
Quelque chose à noter /var/log/messages?
Banjer
Rien d'inhabituel dans / var / log / syslog, kern.log, ni dmesg malheureusement.
Stephan

Réponses:

2

Assurez-vous que le script de démarrage de kdump est activé. Les packages kexec_crash s'appuient sur un initscript pour contourner la routine de démarrage normale. Il détermine si l'appel en cours de ou non a initété invoqué par un plantage et l'utilise pour déterminer si l'état d'exécution précédent doit être vidé ou non avant d'effectuer un véritable redémarrage.

Cela dit, si votre système de test n'est pas assez petit pour tenir dans 64 Mo sans que vous remarquiez que chaque autre plantage réduit votre mémoire totale, ce n'est probablement pas ce qui se passe.

La principale chose que vous devez rechercher est de savoir si le second inittire. Immédiatement après avoir fait planter le système, vous devriez voir des séquences de démarrage initscript sur la console qui ne sont pas précédées d'un redémarrage .

  • Si cela ne se produit pas, votre noyau de crash ne se déclenche pas du tout.
  • Si cela se produit et que vous êtes renvoyé à une invite, votre initscript ne fait pas son travail. (soit il n'est pas activé, soit il ne détecte pas l'état post-crash)
  • Si cela se produit, le second initfeu, le redémarrage du système, initdémarre à nouveau , et malgré tout cela , vous avez encore pas de fichier ... vous devez résoudre ce qui se passe juste avant le kdump initscript délivre le redémarrage. Ironiquement, l'une des meilleures méthodes consiste à désactiver l'initscript et à exécuter les commandes à la main. (attention: assurez-vous que vos services peuvent tenir dans la mémoire du noyau de crash avant de tenter cela!)
Andrew B
la source
1
Merci beaucoup pour les suggestions! Je vais creuser maintenant. En arrière-plan, nous étudions les instances AWS EC2 qui tombent simplement à un rythme que nous n'avions jamais connu auparavant, et Amazon affirme qu'il n'y a rien du tout signalé de mal avec le matériel sous-jacent; essayant ainsi d'exclure les paniques du noyau, etc.
Stephan
@Stephan Une chance? La question est toujours ouverte.
Andrew B