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

Richiesta di sistema (SysRq)

Un SysRq è una sequenza di chiavi compresa dal kernel del sistema operativo Linux, che può attivare una serie di azioni predefinite. Questi comandi vengono spesso usati quando non è possibile eseguire la risoluzione dei problemi o il ripristino della macchina virtuale tramite l'amministrazione tradizionale (ad esempio, se la macchina virtuale non risponde). L'uso della funzionalità SysRq della console seriale di Azure imiterà la pressione del tasto SysRq e i caratteri immessi su una tastiera fisica.

Una volta consegnata la sequenza SysRq, la configurazione del kernel controllerà la risposta del sistema. Per informazioni sull'abilitazione e la disabilitazione di SysRq, consultare la Guida di amministrazione SysRqtesto | Markdown.

La console seriale di Azure può essere usata per inviare un 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 suo menu è visibile. Quel menu contiene una voce Invia comando SysRq.                                           

Scegliendo "Invia comando SysRq" si aprirà una finestra di dialogo, che fornirà opzioni SysRq comuni o accetterà una sequenza di comandi SysRq immessi nella finestra di dialogo. Ciò consente a una serie di SysRq di eseguire un'operazione di alto livello come un riavvio sicuro utilizzando: REISUB.

              Screenshot della finestra di dialogo Invia comando SysRq al guest quando l'opzione della chiave di immissione è selezionata e REISUB viene immesso nel campo sottostante.                            

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

Abilita SysRq

Come descritto nella Guida di amministrazione SysRq in precedenza, SysRq può essere configurato in modo che siano disponibili tutti, nessuno o solo alcuni comandi. Puoi abilitare tutti i comandi SysRq utilizzando il passaggio seguente, ma non sopravviverà a un riavvio:

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

Per rendere persistente la configurazione SysReq, puoi eseguire le seguenti operazioni per abilitare tutti i comandi SysRq

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

Tasti di comando

Dalla Guida all'amministrazione di SysRq sopra:

Comando Funzione
b Riavvierà immediatamente il sistema senza sincronizzare o smontare i dischi.
c Eseguirà un arresto anomalo del sistema tramite una dereferenziazione del puntatore NULL. Se configurato, verrà eseguito un crashdump.
d Mostra tutti i blocchi mantenuti.
e Invia un SIGTERM a tutti i processi, ad eccezione di init.
f Chiamerà l'oom killer per terminare un processo hog della memoria, senza farsi prendere dal panico se non si può terminare qualcosa.
g Utilizzato da kgdb (debug del kernel)
h Verrà visualizzata la guida (anche qualsiasi tasto diverso da quelli elencati farà visualizzare la guida, ma h è più facile da ricordare.
i Invia un SIGKILL a tutti i processi, ad eccezione di init.
j Forzatamente "Basta scongelarlo" - filesystem congelati da FIFREEZE ioctl.
k La Chiave di accesso sicuro (SAK) termina tutti i programmi sulla console virtuale corrente. NOTA: vedere i commenti importanti di seguito nella sezione SAK.
l Mostra un backtrace dello stack per tutte le CPU attive.
m Scaricherà le informazioni sulla memoria corrente sulla tua console.
n Utilizzato per rendere le attività RT piacevoli
o Spegnerà il sistema (se configurato e supportato).
p Scaricherà i registri e i flag correnti sulla tua console.
q Scaricherà gli elenchi per CPU di tutti i timer armati (ma NON i timer timer_list regolari) e le informazioni dettagliate su tutti i dispositivi clockevent.
r Disattiva la modalità RAW della tastiera e la imposta su XLATE.
s Tenterà di sincronizzare tutti i file system montati.
t Scaricherà un elenco di attività correnti e le relative informazioni sulla tua console.
u Tenterà di rimontare tutti i file system montati in sola lettura.
v Ripristina forzatamente la console framebuffer
v Causa il dump del buffer ETM [specifico per ARM]
w Scarica le attività che si trovano in uno stato non interrompibile (bloccato).
x Utilizzato dall'interfaccia xmon su piattaforme ppc/powerpc. Mostra i registri PMU globali su sparc64. Scarica tutte le voci TLB su MIPS.
y Mostra registri CPU globali [specifici SPARC-64]
z Esegue il dump del buffer ftrace
0-9 Imposta il livello di log della console, controllando quali messaggi del kernel verranno stampati sulla tua console. (0, ad esempio, farebbe in modo che solo i messaggi di emergenza come PANIC o OOPS arrivino alla tua console.)

Documentazione specifica per la distribuzione

Per la documentazione specifica della distribuzione su SysRq e i passaggi per configurare Linux per creare un crash dump quando riceve un comando SysRq "Crash", 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 su 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. Una volta consegnato l'NMI, la configurazione della macchina virtuale controllerà la risposta del sistema. I sistemi operativi Linux possono essere configurati per arrestarsi in modo anomalo e creare un dump della memoria il sistema operativo riceve un NMI.

                             Screenshot della console seriale. L'icona della tastiera è evidenziata e il suo menu è visibile. Quel menu contiene una voce Invia interruzione non mascherabile.                                           

Abilita NMI

Per i sistemi Linux che supportano sysctl per la configurazione dei parametri del kernel, è possibile abilitare un panic quando si riceve questo NMI effettuando quanto segue:

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

Per ulteriori informazioni sulle configurazioni del kernel Linux, inclusi unknown_nmi_panic, panic_on_io_nmi e panic_on_unrecovered_nmi, consultare: Documentazione per /proc/sys/kernel/*. Per la documentazione specifica della distribuzione su NMI e i passaggi per configurare Linux per creare un dump di arresto anomalo 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.