Perché la mia istanza Linux EC2 entra in modalità di emergenza quando cerco di avviarla?

7 minuti di lettura
0

Quando avvio la mia istanza Linux Amazon Elastic Compute Cloud (Amazon EC2), l'istanza entra in modalità di emergenza e il processo di avvio fallisce. Quindi, l'istanza è inaccessibile.

Breve descrizione

Un'istanza potrebbe avviarsi in modalità di emergenza per i seguenti motivi:

  • Nell'istanza è presente un kernel danneggiato.
  • Ci sono errori di montaggio automatico dovuti a voci errate nel file /etc/fstab.

Per verificare il tipo di errore, visualizza l'output della console dell'istanza. Nell'output della console potresti visualizzare un messaggio di errore kernel panic se il kernel è danneggiato. I messaggi Dependency failed vengono visualizzati nell'output della console se si verificano errori di montaggio automatico.

Risoluzione

Errori kernel panic

I messaggi di errore kernel panic si verificano quando la configurazione di grub o il file initramfs è danneggiato. Se esiste un problema con il kernel, potresti visualizzare l'errore "Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,1)" nell'output della console.

Per risolvere gli errori kernel panic:

1.    Ripristina il kernel a un kernel precedente e stabile. Per istruzioni su come ripristinare un kernel precedente, consulta la pagina How do I revert to a known stable kernel after an update prevents my Amazon EC2 instance from rebooting successfully?

2.    Dopo aver ripristinato un kernel precedente, riavvia l'istanza. Quindi, correggi i problemi sul kernel danneggiato.

Errori di dipendenza non riuscita

Le istanze entrano in modalità di emergenza se si verificano problemi di montaggio automatico a causa di errori di sintassi nel file /etc/fstab. Inoltre, se il volume Amazon Elastic Block Store (Amazon EBS) elencato nel file è scollegato dall'istanza, il processo di avvio dell'istanza potrebbe entrare in modalità di emergenza. Se si verifica uno di questi problemi, l'output della console sarà simile al seguente:

-------------------------------------------------------------------------------------------------------------------
[[1;33mDEPEND[0m] Dependency failed for /mnt.
[[1;33mDEPEND[0m] Dependency failed for Local File Systems.
[[1;33mDEPEND[0m]
    Dependency failed for Migrate local... structure to the new structure.
[[1;33mDEPEND[0m] Dependency failed for Relabel all filesystems, if necessary.
[[1;33mDEPEND[0m] Dependency failed for Mark the need to relabel after reboot.
[[1;33mDEPEND[0m]
    Dependency failed for File System Check on /dev/xvdf.
-------------------------------------------------------------------------------------------------------------------

I messaggi di log nell'esempio precedente mostrano che il punto di montaggio /mnt non è stato montato durante la sequenza di avvio.

Per evitare che la sequenza di avvio entri in modalità di emergenza a causa di errori di montaggio, aggiungi quanto segue al file /etc/fstab.

  • Aggiungi un'opzione nofail nel file /etc/fstab per le partizioni secondarie (/mnt nell'esempio precedente). Quando è presente l'opzione nofail, la sequenza di avvio non viene interrotta anche se il montaggio di un volume o una partizione non riesce.
  • Aggiungi 0 come ultima colonna del file /etc/fstab per il rispettivo punto di montaggio. La colonna 0 disattiva il controllo del file system e l'istanza viene avviata correttamente.

È possibile utilizzare tre metodi per correggere il file /etc/fstab.

Importante:

i metodi 2 e 3 richiedono l'arresto e l'avvio dell'istanza. Tieni presente quanto segue:

  • I dati archiviati nei volumi di archiviazione delle istanze vanno persi quando l'istanza viene interrotta. Assicurati di salvare un backup dei dati prima di interrompere l'istanza. A differenza dei volumi supportati da EBS, i volumi di archivio dell'istanza sono effimeri e non supportano la persistenza dei dati.
  • L'indirizzo IPv4 pubblico statico che Amazon EC2 ha assegnato automaticamente all'istanza all'avvio o all'inizio cambia dopo l'arresto e l'avvio. Per conservare un indirizzo IPv4 pubblico che non cambi se l'istanza viene interrotta, usa un indirizzo IP elastico.

Per ulteriori informazioni, consulta la pagina What happens when you stop an instance.

Metodo 1: usa la Console seriale EC2

Se hai attivato la Console seriale EC2 per Linux, puoi utilizzarla per risolvere i problemi relativi ai tipi di istanze basate su Nitro supportati e le istanze bare metal. Puoi accedere alla console seriale utilizzando la console Amazon EC2 o l'Interfaccia della linea di comando AWS (AWS CLI). Per connettersi all'istanza quando si utilizza la console seriale EC2, non è necessaria una connessione funzionante.

Nota: se non hai mai utilizzato la console seriale EC2, assicurati di controllare i prerequisiti e di configurare l'accesso prima di provare a connetterti. Se l'istanza non è raggiungibile e non hai configurato l'accesso alla console seriale, segui le istruzioni nella sezione Metodo 2 o Metodo 3.

1.    Apri la console Amazon EC2.

2.    Scegli Istanze.

3.    Seleziona l'istanza, quindi scegli Operazioni, Monitoraggio e risoluzione dei problemi, Console seriale EC2, Connetti.

-oppure-

Seleziona l'istanza, quindi scegli Connetti, Console seriale EC2, Connetti.

All'interno del browser si aprirà una finestra terminale.

4.    Premi Invio. Se sei connesso alla console seriale, verrà visualizzato un prompt di login. Se lo schermo rimane nero, puoi utilizzare le seguenti informazioni per risolvere i problemi di connessione alla console seriale:

5.    Nel prompt di login, inserisci il nome utente dell'utente basato su password che hai impostato in precedenza, quindi premi Invio.

6.    Nel prompt Password, inserisci la password e poi premi Invio.

A questo punto avrai effettuato l'accesso all'istanza e potrai utilizzare la console seriale EC2 per la risoluzione dei problemi.

Puoi anche connetterti usando la tua chiave personale e un client SSH.

Per ulteriori informazioni sull'uso della console seriale EC2, consulta la pagina Connessione alla console seriale EC2.

Metodo 2: esegui il documento di automazione AWSSupport-ExecuteEC2Rescue

Se la tua istanza è configurata per AWS Systems Manager, puoi eseguire il documento di automazione AWSSupport-ExecuteEC2Rescue per correggere i problemi di avvio. L'intervento manuale non è necessario quando si utilizza questo metodo. Per informazioni sull'utilizzo del documento di automazione, consulta la pagina Esecuzione dello strumento EC2Rescue su istanze non raggiungibili.

Metodo 3: modifica manualmente il file utilizzando un'istanza di ripristino

1.    Apri la console Amazon EC2.

2.    Scegli Istanze, quindi seleziona l'istanza in modalità di emergenza.

3.    Arresta l'istanza.

4.    Scollega il volume root Amazon EBS (/dev/xvda o /dev/sda1) dall'istanza interrotta.

5.    Avvia una nuova istanza EC2 nella stessa zona di disponibilità dell'istanza compromessa. La nuova istanza diventerà la tua istanza di ripristino.

6.    Collega il volume root che hai scollegato nel passaggio 4 all'istanza di ripristino come dispositivo secondario.

Nota: è possibile utilizzare nomi dispositivo diversi quando si collegano volumi secondari.

7.    Connettiti alla tua istanza di ripristino tramite SSH.

8.    Crea una directory dei punti di montaggio per il nuovo volume che hai collegato all'istanza di ripristino nel passaggio 6. Nell'esempio seguente, la directory dei punti di montaggio è /mnt/rescue.

$ sudo mkdir /mnt/rescue

9.    Monta il volume nella directory che hai creato nella fase 8.

$ sudo mount /dev/xvdf /mnt/rescue

Nota: il dispositivo (/dev/xvdf nell'esempio precedente) potrebbe essere collegato all'istanza di ripristino con un nome dispositivo diverso. Utilizza il comando lsblk per visualizzare i dispositivi disco disponibili insieme ai relativi punti di montaggio per determinare i nomi corretti dei dispositivi.

10.    Dopo aver montato il volume, esegui il comando seguente per aprire il file /etc/fstab.

$ sudo vi /mnt/rescue/etc/fstab

11.    Modifica le voci in /etc/fstab secondo necessità. L'output dell'esempio seguente mostra tre volumi EBS definiti con UUID, l'opzione nofail aggiunta per entrambi i volumi secondari e uno 0 come ultima colonna per ogni voce.

------------------------------------------------------------------------------------------
$ cat /etc/fstab
UUID=e75a1891-3463-448b-8f59-5e3353af90ba  /  xfs  defaults,noatime  1  0
UUID=87b29e4c-a03c-49f3-9503-54f5d6364b58  /mnt/rescue  ext4  defaults,noatime,nofail  1  0
UUID=ce917c0c-9e37-4ae9-bb21-f6e5022d5381  /mnt  ext4  defaults,noatime,nofail  1  0  
------------------------------------------------------------------------------------------

12.    Salva il file, quindi esegui il comando umount per smontare il volume.

$ sudo umount /mnt/rescue

13.    Scollega il volume dall'istanza temporanea.

14.    Collega il volume all'istanza originale, quindi avvia l'istanza per confermare che si avvii correttamente.

AWS UFFICIALE
AWS UFFICIALEAggiornata 9 mesi fa