Usare la console seriale di Azure per le chiamate SysRq e NMI

Si applica a: ✔️ macchine virtuali Linux

Richiesta del sistema (SysRq)

Un SysRq è una sequenza di tasti riconosciuta dal kernel del sistema operazione Linux, che può attivare un set di azioni predefinite. Questi comandi vengono spesso usati quando non è possibile eseguire il ripristino o la risoluzione dei problemi delle macchine virtuali tramite l'amministrazione tradizionale, ad esempio se la macchina virtuale non risponde. Usando la funzionalità SysRq della console seriale di Azure si imita la pressione della chiave di SysRq e i caratteri inseriti su una tastiera fisica.

Dopo che la sequenza SysRq viene recapitata, la configurazione del kernel potrà controllare la modalità di risposta del sistema. Per informazioni sull'abilitazione e la disabilitazione di SysRq, vedere il testo | di SysRq Admin Guide markdown ( Guida all'amministratore SysRq).

La console seriale di Azure può essere usata per inviare una SysRq a una macchina virtuale di Azure usando l'icona della tastiera nella barra dei comandi, mostrata di seguito.

Screenshot della console seriale di Azure. L'icona della tastiera è evidenziata e il relativo menu è visibile. Il menu contiene una voce Invia comando SysRq.

Scegliendo "Invia comando SysRq" verrà aperta una finestra di dialogo, che offre opzioni di SysRq comune oppure accetta una sequenza di comandi di SysRq immessi nella finestra di dialogo. Questo permette alle serie di SysRq di eseguire un'operazione di alto livello, ad esempio un riavvio sicuro usando: REISUB.

Screenshot della finestra di dialogo Send SysRq Command to Guest (Invia comando SysRq al guest) quando l'opzione di immissione della chiave è selezionata e REISUB è input nel campo seguente.

Il comando SysRq non può essere usato nelle macchine virtuali che vengono arrestate o il cui kernel è in uno stato di non risposta. (ad esempio un kernel panic).

Abilitare SysRq

Come descritto nella Guida dell'amministratore SysRq sopra, SysRq può essere configurato in modo che tutti, nessuno o solo alcuni comandi siano disponibili. È possibile abilitare tutti i comandi SysRq utilizzando la seguente operazione, ma non verrà conservata dopo il riavvio:

echo "1" >/proc/sys/kernel/sysrq

Per rendere persistente la configurazione SysReq, è possibile eseguire il comando seguente per abilitare tutti i comandi SysRq

  1. Aggiungere questa riga in /etc/sysctl.conf
    kernel.sysrq = 1
  2. Riavvio o aggiornamento di sysctl eseguendo
    sysctl -p

Chiavi di comando

Dalla Guida dell'amministratore SysRq precedente:

Comando Funzione
b Il sistema verrà riavviato immediatamente senza la sincronizzazione oppure lo smontaggio dei dischi.
c Esegue un arresto anomalo del sistema attraverso una dereferenziazione del puntatore NULL. Verrà eseguito un dump di arresto anomalo del sistema, se configurato.
d Mostra tutti i blocchi che sono utilizzati.
e Inviare un SIGTERM a tutti i processi, ad eccezione di init.
f In casi di memoria insufficiente verrà terminato un processo che occupa troppa memoria, ma non allarmarsi se non è possibile terminare alcun processo.
g Usato da kgdb (debugger del kernel)
h Verrà visualizzata la Guida (anche qualsiasi altra chiave rispetto a quelle elencate di seguito visualizza la Guida, ma h è facile da ricordare :-)
i Inviare un SIGKILL a tutti i processi, ad eccezione di init.
j "Semplicemente sbloccalo" in modo forzato - file system bloccato dall’ioctl FIFREEZE.
k Chiave di accesso sicuro (SAK) termina tutti i programmi nella console virtuale corrente. Nota: vedere i commenti importanti nella sezione SAK.
l Mostra una traccia dello stack per tutte le CPU attive.
m Viene eseguito il dump delle informazioni sulla memoria corrente per la console.
n Consente di eseguire attività RT interessanti
o Spegne il sistema (se configurata e supportata).
p Viene eseguito il dump dei registri correnti e i flag per la console.
q Viene eseguito il dump per gli elenchi di CPU di tutti gli hrtimers armati (ma non i timer timer_list regolari) e fornisce informazioni dettagliate su tutti i dispositivi clockevent.
r Disattiva la modalità raw da tastiera e la imposta su XLATE.
s Prova a sincronizzare tutti i file System montati.
t Viene eseguito il dump di un elenco di attività correnti e le relative informazioni alla console.
u Tenta di rimontare i file system di sola lettura montati.
v Consente di ripristinare in modo forzato la console buffer frame
v Causa il dump di buffer ETM [specifcio per ARM]
w Esegue il dump di attività con stato non interrompibile (bloccato).
x Usato dall'interfaccia xmon su piattaforme ppc/powerpc. Mostra registri PMU globali su sparc64. Eseguire il dump di tutte le voci TLB su MIPS.
y Visualizzare i registri delle CPU globali [specifico per 64 SPARC]
z Scarica il buffer ftrace
0-9 Imposta il livello di log della console, controllando quali messaggi kernel verranno stampati nella console. (0, ad esempio potrebbe impostarlo in modo che vengano visualizzati solo i messaggi di emergenza, ad esempio PANIC o OOPS.)

Documentazione specifica per la distribuzione

Per la documentazione specifica per la distribuzione in SysRq e per i passaggi per configurare Linux per creare un dump di arresto anomalo del sistema quando riceve un comando "Crash" SysRq, vedere i collegamenti seguenti:

Ubuntu

Red Hat

SUSE

CoreOS

Interrupt non mascherabile (NMI)

Un interrupt non mascherabile (NMI) è progettato per creare un segnale che il software in una macchina virtuale non ignorerà. Storicamente, gli NMI sono stati utilizzati per monitorare problemi hardware su sistemi che richiedevano tempi di risposta specifici. Oggi, i programmatori e gli amministratori di sistema utilizzano spesso NMI come meccanismo per eseguire il debug o risolvere i problemi dei sistemi che non rispondono.

La console seriale può essere usata per inviare un NMI a una macchina virtuale di Azure usando l'icona della tastiera nella barra dei comandi, mostrata di seguito. Dopo che l'interrupt non mascherabile viene recapitato, la configurazione della macchina virtuale potrà controllare la modalità di risposta del sistema. I sistemi operativi Linux possono essere configurati per l'arresto anomalo del sistema e per creare un dump della memoria quando il sistema operativo riceve un NMI.

Screenshot della console seriale. L'icona della tastiera è evidenziata e il relativo menu è visibile. Il menu contiene una voce Invia interrupt non mascherabile.

Abilitare NMI

Per i sistemi Linux che supportano sysctl per la configurazione dei parametri del kernel, è possibile abilitare un panic quando si riceve questo NMI usando il comando seguente:

  1. Aggiungere questa riga in /etc/sysctl.conf
    kernel.panic_on_unrecovered_nmi=1
  2. Riavvio o aggiornamento di sysctl eseguendo
    sysctl -p

Per altre informazioni sulle configurazioni di kernel di Linux, inclusi unknown_nmi_panic, panic_on_io_nmi, e panic_on_unrecovered_nmi, vedere: documentazione per /proc/sys/kernel / *. Per la documentazione specifica per la distribuzione in NMI e per i passaggi per configurare Linux per creare un dump di arresto anomalo del sistema quando riceve un NMI, vedere i collegamenti seguenti:

Ubuntu

Red Hat

SUSE

CoreOS

Passaggi successivi

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.