Kernel panic nelle macchine virtuali Linux di Azure

Si applica a: ✔️ macchine virtuali Linux

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

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

Prerequisiti

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

Come identificare un kernel panic?

Usare il portale di Azure per visualizzare l'output del log della console seriale della macchina virtuale nel pannello di 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 kernel panic è 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) Il sistema è stato preso in panico a causa della dereferenziazione di un indirizzo non valido.
SysRq: Attivare un crashdump Il dump principale è stato avviato dall'utente con sysrq-c o eseguendo 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 indicano il controllo BUG non riuscito.
Kernel panic - not syncing: softlockup: attività bloccate Il rilevatore di blocco software ha rilevato una CPU che non ha pianificato l'attività watchdog entro la soglia di blocco flessibile.
Kernel panic - not syncing: Watchdog ha rilevato hard LOCKUP sulla CPU 0 Il rilevatore di blocco rigido ha rilevato una CPU che non ha ricevuto interruzioni hrtimer entro la soglia di blocco rigido.
Kernel panic - not syncing: hung_task: blocked tasks Il watchdog delle attività bloccate ha rilevato almeno un'attività in uno stato non interrupperato per più del valore di timeout dell'attività bloccata.
Kernel panic - non sincronizzazione: memoria insufficiente. panic_on_oom selezionato Il sistema ha esaurito memoria e scambio ed è stato costretto ad avviare l'eliminazione dei processi per liberare memoria (non il comportamento predefinito).
Kernel panic - non sincronizzazione: memoria insufficiente e nessun processo terminabile... Il sistema ha esaurito memoria e scambio e ha ucciso i processi per liberare memoria, ma ha esaurito i processi per terminare.
Kernel panic - not syncing:An NMI occurred, see the Integrated Management Log for details. Watchdog ha intercettato un NMI (interrupt non mascherabile).
Kernel panic - not syncing: NMI IOCK error: Not continue Il sistema ha ricevuto un nmI di controllo di I/O dall'hardware (non un errore di parità di memoria) e kernel.panic_on_io_nmi è stato impostato (non l'impostazione predefinita).
Kernel panic - not syncing: NMI: Not continue Il sistema ha ricevuto un NMI (errore di parità hardware o 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).
Kernel panic - not syncing: Fatal Machine check È stato generato un evento di eccezione di controllo del computer per una condizione irreversibile.
Kernel panic - not syncing: tentativo di uccidere init! Il processo init è il primo processo da avviare e non deve mai uscire.

Scenario 1: si verifica il kernel panic in fase di avvio

Un kernel panic in fase di avvio impedisce alla macchina virtuale di completare il processo di avvio del sistema operativo. Si verifica ogni volta che viene avviata la macchina virtuale 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 kernel panic, è 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 eseguire di nuovo l'avvio, quindi è possibile usare uno dei metodi seguenti per risolvere il problema specifico con il kernel non di avvio:

Metodo 2: Ripristino offline tramite una macchina virtuale di ripristino

Se la console seriale di Azure non è disponibile o non è disponibile alcun kernel precedente, è necessaria una macchina virtuale di ripristino/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 collegato. Usare quindi chroot montare la copia dei file system del sistema operativo nella macchina virtuale di ripristino. Successivamente, provare i metodi seguenti per risolvere i problemi del kernel:

Scenario 2: kernel panic in fase di esecuzione

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

Risoluzione per lo scenario 2

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

  • Esaminare l'utilizzo delle risorse e le prestazioni complessive del sistema. Il kernel panic potrebbe essere correlato a una possibile carenza di risorse che potrebbero portare a un ridimensionamento della macchina virtuale.
  • Se possibile, installare gli aggiornamenti più recenti disponibili nei repository di distribuzione Linux corrispondenti. Il kernel panic potrebbe essere correlato a bug noti nel kernel o in un altro software.
  • È possibile che il kernel panic sia correlato a una modifica recente del kernel, nel qual caso è consigliabile eseguire anche l'avvio su una versione precedente del kernel, come illustrato 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 comuni di panico del kernel con istruzioni specifiche per la risoluzione dei problemi o il ripristino:

Document Scenario
Kernel panic di una macchina virtuale Linux di Azure basata su un kernel 3.10 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 del 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.