Come posso utilizzare il comando Linux SysRq per risolvere i problemi di un'istanza di server virtuale che non risponde dalla console seriale?

L'istanza del server virtuale di Linux non risponde e non è possibile accedervi tramite SSH o accesso diretto.

Un'istanza del server virtuale Linux può smettere di rispondere per vari motivi, quali arresti anomali del sistema, situazioni di deadlock o problemi legati al kernel. Quando il server virtuale non risponde, i metodi standard di risoluzione dei problemi, come SSH o l'accesso diretto, potrebbero non funzionare. In questi casi, la console seriale rimane accessibile, il che consente agli amministratori di interagire con il server utilizzando la chiave “ Linux ” ( SysRq ).

Errori di sistema, kernel panic o processi che non rispondono possono rendere un server Linux non disponibile tramite le normali procedure. Questi problemi potrebbero derivare da bug del software, guasti hardware o parametri di sistema configurati in modo errato. La chiave " SysRq " consente l'accesso a basso livello al kernel " Linux " e aggira i processi di livello superiore che sono bloccati o non rispondono. Questo meccanismo è integrato nel kernel Linux come misura di sicurezza per consentire agli utenti di eseguire operazioni critiche di sistema, quali il riavvio del server o l'acquisizione di informazioni diagnostiche, anche quando gli altri metodi di input non sono disponibili.

Per individuare e risolvere il problema utilizzando il comando SysRq dalla console seriale, procedere come segue:

  1. Accedere all'istanza del server virtuale collegandosi a una console seriale. Per ulteriori informazioni, consultare la sezione " Accesso alle istanze dei server virtuali tramite VNC o console seriali ".

  2. Abilita i comandi " SysRq ". Se i comandi " SysRq " sono già abilitati, puoi saltare questo passaggio. Per abilitare i comandi " SysRq ", impostare il parametro " kernel.sysrq ".

    echo 1 > /proc/sys/kernel/sysrq
    
  3. Invia il comando " SysRq " dalla console seriale. L'esempio seguente avvia un dump di crash del kernel (kdump).

    Per attivare la generazione di un crash dump, assicurarsi che il servizio di gestione degli errori ( crashkernel ) sia configurato sull'istanza del server virtuale Linux. Per le istruzioni, consultare la sezione dedicata al meccanismo di salvataggio dei crash dump del kernel.

    1. Premere il tasto Invio.

    2. Premere il tasto “ ~ ” (tilde).

      Per le tastiere AZERTY: premere il tasto Alt Gr + il tasto 2 per digitare il tasto " ~ ".

    3. Premere il tasto “ B ” (tasto B maiuscolo).

    4. Premere c (c minuscola), per avviare un dump di crash del kernel (kdump).

    Quando si utilizzano i comandi " SysRq ", tenere presente quanto segue:

    • Premere e rilasciare ogni tasto singolarmente. Non tenere premuto nessun tasto.
    • Completare l'intera sequenza entro cinque secondi; in caso contrario, i comandi SysRq non vengono rilevati sulla console seriale.
    • Quando si digita questa sequenza, i caratteri non vengono visualizzati sulla console seriale. Il sistema li considera come caratteri di sequenza di interruzione. La digitazione normale sulla console riprende al termine della sequenza, oppure se la sequenza va in timeout o rileva un carattere non valido.
    • Se la sequenza va in timeout (impiega più di cinque secondi) o viene premuto un carattere di interruzione non valido, ricominciare la procedura dal punto 1.

    Esempio:

    ENTER + ~ + B + c
    
  4. Analizzare i risultati della diagnosi. Il dump di crash del kernel precedente, disponibile all'indirizzo SysRq, genera dati diagnostici che è possibile analizzare. Inviando i comandi SysRq appropriati, è possibile raccogliere dati diagnostici preziosi per la risoluzione dei problemi e per riprendere il controllo del sistema.

Per visualizzare l'elenco dei tasti di comando di “ SysRq ”, premere Invio e poi “ ~Bh ” (tilde, B maiuscola, h minuscola). Per ulteriori dettagli, consulta Linux Magic System Request Key Hacks - Cosa sono i tasti "comando"?