Condividi tramite


Panico del kernel nelle macchine virtuali Linux di Azure

Questo articolo illustra più condizioni che possono causare il panico del kernel e fornisce indicazioni per la risoluzione dei problemi.

In generale, un panico del kernel è una situazione in cui il kernel non è in grado di caricarsi correttamente e quindi il sistema non riesce ad avviarsi. Un'altra forma di panico del kernel si verifica quando il kernel rileva una situazione che non sa come gestire e protegge se stesso arrestandosi.

Prerequisiti

Assicurarsi che la console seriale sia abilitata e funzionante nella macchina virtuale Linux.

Come identificare un panico del kernel?

Usare il portale di Azure per visualizzare l'output del log della console seriale della macchina virtuale nel pannello diagnostica di avvio, nel pannello della console seriale o nell'interfaccia della riga di comando az per identificare la stringa di panico del kernel specifica.

Un panico del kernel è simile all'output seguente e verrà visualizzato alla fine del log della console seriale:

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

Alcuni degli eventi di panico del kernel più comuni:

Messaggio di panico Motivo
Oops: 0000 [#1] SMP " (controllare il log per i dettagli) Sistema in panico a causa della dereferenziazione di un indirizzo non valido.
SysRq: Attivare un crashdump Il dump di base è stato avviato dall'utente con sysrq-c o tramite l'eco di c in /proc/sysrq-trigger.
kernel BUG in <pathname/filename>:<line number>! Questo formato è lo standard per un controllo BUG non riuscito (che è proprio come un ASSERT, ma la logica è invertita). Il nome file e il numero di riga indicheranno quale controllo BUG non è riuscito.
Kernel panic - not syncing: softlockup: attività bloccate Il rilevatore di blocco soft ha trovato una CPU che non ha pianificato l'attività watchdog entro la soglia di blocco soft.
Panico del kernel : non è stata eseguita la sincronizzazione: watchdog ha rilevato un blocco rigido sulla CPU 0 Il rilevatore di blocco rigido ha trovato una CPU che non ha ricevuto interruzioni hrtimer entro la soglia di blocco rigido.
Panico del kernel- non sincronizzazione: hung_task: attività bloccate Il watchdog delle attività bloccate ha rilevato almeno un'attività in uno stato di ininterruttibilità per più del valore di timeout dell'attività bloccata.
Panico del kernel- non sincronizzato: memoria insufficiente. panic_on_oom selezionato Il sistema ha esaurito la memoria e lo scambio ed è stato costretto a iniziare a uccidere i processi per liberare memoria (non comportamento predefinito).
Panico del kernel - non sincronizzazione: memoria insufficiente e nessun processo eliminabile... Il sistema ha esaurito la memoria e lo scambio e ha ucciso i processi per liberare memoria, ma ha esaurito i processi per eliminare.
Panico del kernel : non è stata eseguita la sincronizzazione: si è verificato un NMI. Per informazioni dettagliate, vedere il log di gestione integrato. Watchdog ha intercettato un NMI (interrupt non mascherabile).
Panico del kernel - non sincronizzazione: errore NMI IOCK: Non continuare Il sistema ha ricevuto un nmi di controllo I/O dall'hardware (non un errore di parità di memoria) e kernel.panic_on_io_nmi è stato impostato (non l'impostazione predefinita).
Panico del kernel - non sincronizzazione: NMI: non continuare Il sistema ha ricevuto un NMI (errore di parità hardware o di memoria) e kernel.panic_on_unrecovered_nmi è stato impostato (non l'impostazione predefinita).
Kernel panic - not syncing: nmi watchdog Il sistema ha ricevuto un NMI e kernel.panic_on_timeout o kernel.panic_on_oops è stato impostato (non i valori predefiniti).
Panico del kernel - non sincronizzazione: controllo irreversibile del computer È stato generato un evento di eccezione di controllo del computer per una condizione irreversibile.
Kernel panic - non sincronizzato: tentativo di uccidere init! Il processo init è il primo processo da avviare e non deve mai uscire.

Scenario 1: Il panico del kernel si verifica in fase di avvio

Un panico del kernel durante l'avvio impedisce alla macchina virtuale di completare il processo di avvio del sistema operativo. Si verifica ogni volta che la macchina virtuale viene avviata e non consente l'accesso.

Questo tipo di evento è comunemente correlato, ma non limitato a:

Risoluzione per lo scenario 1

Per gestire questo tipo di panico del kernel, è possibile usare gli approcci seguenti:

Metodo 1: Uso della console seriale di Azure

Usare la console seriale di Azure per interrompere il processo di avvio e selezionare una versione precedente del kernel, se disponibile. In questo modo, la macchina virtuale sarà in grado di avviarsi di nuovo, quindi è possibile usare uno dei metodi seguenti per risolvere il problema specifico con il kernel non di avvio:

Metodo 2: Ripristino offline con una macchina virtuale di salvataggio

Se la console seriale di Azure non è disponibile o non è disponibile alcun kernel precedente, è necessaria una macchina virtuale di salvataggio/ripristino per eseguire un ripristino offline.

Usare il comando Ripristina macchina virtuale per creare una macchina virtuale di ripristino con una copia del disco del sistema operativo della macchina virtuale di destinazione collegata. Usare quindi chroot montare la copia dei file system del sistema operativo nella macchina virtuale di ripristino. Successivamente, provare a usare i metodi seguenti per risolvere i problemi del kernel:

Scenario 2: Panico del kernel in fase di esecuzione

Questo tipo di panico del kernel in genere viene attivato in momenti imprevedibili dopo il completamento del processo di avvio del sistema operativo e fa sì che la macchina virtuale smette di rispondere, impedendo l'accesso. È comunemente correlato, ma non limitato a:

Risoluzione per lo scenario 2

Per gestire questo tipo di panico del kernel, è possibile usare gli approcci seguenti:

  • Esaminare l'utilizzo delle risorse e le prestazioni complessive del sistema. Il panico del kernel potrebbe essere correlato a una possibile carenza di risorse che potrebbe comportare il ridimensionamento di una macchina virtuale.
  • Se possibile, installare gli aggiornamenti più recenti disponibili nei repository di distribuzione Linux corrispondenti. Il panico del kernel potrebbe essere correlato a bug noti nel kernel o in altro software.
  • Esiste una possibilità che il panico del kernel sia correlato a una recente modifica del kernel, nel qual caso è consigliabile eseguire l'avvio su una versione precedente del kernel, come spiegato in Risoluzione per lo scenario 1.
  • Se le opzioni precedenti non sono applicabili, potrebbe essere necessario configurare kdump e generare un dump di base da condividere con il supporto per ulteriori analisi.

Scenari di panico del kernel più specifici

Scenari di panico del kernel comuni con istruzioni specifiche per la risoluzione dei problemi e il ripristino:

Documento Scenario
Una macchina virtuale Linux di Azure in un kernel basato su 3.10 si fa prendere dal panico dopo l'aggiornamento di un nodo host Questo articolo illustra un problema che si verifica quando una macchina virtuale Linux di Azure che esegue il kernel basato su 3.10 si arresta in modo anomalo dopo l'aggiornamento di un nodo host in Azure.
Come ripristinare una macchina virtuale Linux di Azure da problemi di avvio correlati al kernel Questo articolo fornisce soluzioni a un problema in cui una macchina virtuale Linux non può essere riavviata dopo l'applicazione delle modifiche al kernel.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.