Kernel paniek in Azure Linux-VM's

Van toepassing op: ✔️ Virtuele Linux-machines

Overzicht

In dit artikel worden meerdere voorwaarden besproken die kunnen leiden tot een kernel paniek en richtlijnen voor probleemoplossing bieden.

Over het algemeen is een kernel paniek een situatie wanneer de kernel niet goed kan laden, en daarom kan het systeem niet worden opgestart. Een andere vorm van kernel panic treedt op wanneer de kernel een situatie tegenkomt die het niet weet te afhandelen en zichzelf beschermt door te stoppen.

Voorwaarden

Zorg ervoor dat de seriële console is ingeschakeld en functioneel is in de Virtuele Linux-machine.

Hoe kan ik een kernel-paniek identificeren?

Gebruik de Azure-portal om de uitvoer van de seriële console van de virtuele machine weer te geven op de blade met diagnostische gegevens over opstarten, de seriële console-blade, of AZ CLI om de specifieke kernel-panic-string te identificeren.

Een kernel paniek lijkt op de onderstaande uitvoer en wordt weergegeven aan het einde van het seriële consolelogboek:

Probing EDD (edd=off to disable)... ok
Memory KASLR using RDRAND RDTSC...
[  300.206297] Kernel panic - xxxxxxxx
[  300.207216] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G               ------------ T 3.xxx.x86_64 #1

Enkele van de meest voorkomende kernel panic-voorvallen:

Paniekbericht Reden
Oops: 0000 [#1] SMP " (logboek controleren op details) Het systeem ging in paniek door dereferencing van een onjuist adres.
SysRq: een crashdump activeren Coredump is door de gebruiker geïnitieerd met sysrq-c of door c te echoën in /proc/sysrq-trigger.
kernel BUG bij <padnaam/bestandsnaam>:<regelnummer>! Deze indeling is de standaard voor een mislukte BUG-controle (dit is net als een ASSERT, maar de logica wordt omgekeerd). De bestandsnaam en het regelnummer geven aan welke BUG-controle is mislukt.
Kernel-paniek - niet aan het synchroniseren: softlockup: vastgelopen taken De zachte vergrendelingsdetector heeft een CPU gevonden die de watchdog-taak niet heeft gepland binnen de drempelwaarde voor zachte vergrendeling.
Kernel paniek - niet aan het synchroniseren: Watchdog heeft harde LOCKUP gedetecteerd op CPU 0 De harde vergrendelingsdetector heeft een CPU gevonden die geen hrtimer-interrupts heeft ontvangen binnen de drempelwaarde voor harde vergrendeling.
Kernel panic - geen synchronisatie: hung_task: geblokkeerde taken De vastzittende taak-watchdog heeft ten minste één taak gedetecteerd die zich in een niet-onderbreekbare toestand bevindt langer dan de time-outwaarde voor geblokkeerde taken.
Kernel panic - niet synchroniserend: onvoldoende geheugen. De optie panic_on_oom is geselecteerd Het systeem heeft onvoldoende geheugen en is gedwongen om processen te doden om geheugen vrij te maken (niet standaardgedrag).
Kernel paniek - geen synchronisatie: onvoldoende geheugen en geen beëindigbare processen... Het systeem heeft geen vrij geheugen en wisselgeheugen meer en heeft processen beëindigd om geheugen vrij te maken, maar het heeft geen processen meer om te beëindigen.
Kernel paniek - niet synchroniseren: er is een NMI opgetreden, zie het geïntegreerde beheerlogboek voor meer informatie. Watchdog heeft een NMI (niet-maskerbare interrupt) onderschept.
Kernel paniek - niet synchroniseren: NMI IOCK-fout: Niet doorgaan Het systeem heeft een IO-controle-NMI ontvangen van de hardware (geen geheugenpariteitsfout) en kernel.panic_on_io_nmi is ingesteld (niet de standaardinstelling).
Kernel paniek - niet synchroniseren: NMI: Niet doorgaan Het systeem heeft een NMI (hardware- of geheugenpariteitsfout) ontvangen en kernel.panic_on_unrecovered_nmi is ingesteld (niet de standaardinstelling).
Kernel paniek - niet synchroniseren: nmi watchdog Het systeem heeft een NMI ontvangen en kernel.panic_on_timeout of kernel.panic_on_oops is ingesteld (niet de standaardwaarden).
Kernel paniek - niet synchroniseren: fatale machinecontrole Er is een uitzonderingsgebeurtenis voor machinecontrole gegenereerd voor een fatale toestand.
Kernel paniek - niet synchroniseren: poging om init te doden! Het init-proces is het eerste proces dat moet worden gestart en mag nooit worden afgesloten.
Kernel paniek - niet synchroniseren: VFS: kan root fs niet koppelen op unknown-block(0,0) Er wordt aangenomen dat de kernel een initramfs gebruikt om de rootfs te koppelen. Deze fout treedt op wanneer de kernel geen initramfs heeft.

Scenario 1: Kernel-paniek treedt op tijdens het opstarten

Een kernel-paniek tijdens het opstarten voorkomt dat de VM het opstartproces van het besturingssysteem voltooit. Dit gebeurt telkens wanneer de virtuele machine wordt gestart en het aanmelden niet is toegestaan.

Dit soort gebeurtenissen is vaak gerelateerd, maar niet beperkt tot:

Oplossing voor scenario 1

Om met dit soort kernel panic om te gaan, kunnen de volgende benaderingen worden toegepast:

Methode 1: De Azure seriële console gebruiken

Gebruik de Azure seriële console om het opstartproces te onderbreken en een eerdere kernelversie te selecteren, indien beschikbaar. Op deze manier kan de VIRTUELE machine opnieuw worden opgestart. Vervolgens kunt u een van de volgende methoden gebruiken om het specifieke probleem met de niet-opstartkernel op te lossen:

Methode 2: Offline herstellen met behulp van een herstel-VM

Als de Azure seriële console niet beschikbaar is of geen eerdere kernel beschikbaar is, hebt u een herstel-/herstel-VM nodig om offline te herstellen.

Gebruik de opdracht VM herstellen om een herstel-VM te maken waarop een kopie van de besturingssysteemschijf van de doel-VM is gekoppeld. Gebruik vervolgens chroot om de kopie van de besturingssysteembestandssystemen in de herstel-VM te koppelen. Probeer daarna de volgende methoden om de kernelproblemen op te lossen:

Scenario 2: Kernel paniek tijdens runtime

Dit soort kernel panic wordt meestal geactiveerd op onvoorspelbare momenten nadat het opstartproces van het besturingssysteem is voltooid en zorgt ervoor dat de virtuele machine stopt met reageren, waardoor inloggen niet meer mogelijk is. Het is vaak gerelateerd, maar niet beperkt tot:

Oplossing voor scenario 2

Om met dit soort kernel panic om te gaan, kunnen de volgende benaderingen worden gebruikt:

  • Bekijk het resourcegebruik en de algehele systeemprestaties. De kernel panic kan te maken hebben met een mogelijk tekort aan resources die kunnen leiden tot het wijzigen van de grootte van een virtuele machine.
  • Installeer indien mogelijk de meest recente updates die beschikbaar zijn in de bijbehorende Linux-distributieopslagplaatsen. De kernel paniek kan te maken hebben met bekende bugs in de kernel of andere software.
  • Er is een mogelijkheid dat de kernel paniek te maken heeft met een recente kernelwijziging. In dat geval is het ook raadzaam om op te starten via een eerdere kernelversie, zoals uitgelegd in Oplossing voor scenario 1.
  • Als de bovenstaande opties niet van toepassing zijn, kan het nodig zijn om kdump te configureren en een kerndump te genereren om te delen met ondersteuning voor verdere analyse.

Meer specifieke kernel-paniekscenario's

Veelvoorkomende kernel-paniekscenario's met specifieke instructies voor probleemoplossing/herstel:

Document Scenario
Een Azure Linux-VM op een kernel gebaseerd op 3.10 krijgt een paniek na een upgrade van het hostknooppunt In dit artikel wordt een probleem besproken dat optreedt wanneer een Azure Linux-VM waarop de kernel met 3.10 wordt uitgevoerd, vastloopt na een upgrade van een hostknooppunt in Azure.
Het herstellen van een Azure virtuele Linux-machine vanuit kernelgerelateerde opstartproblemen Dit artikel bevat oplossingen voor een probleem waarbij een virtuele Linux-machine (VM) niet opnieuw kan worden opgestart nadat kernelwijzigingen zijn toegepast.