Salta al contenuto

Perché la mia istanza Amazon EC2 Linux non si avvia dopo averla modificata in un'istanza basata su Nitro?

6 minuti di lettura
0

Ho modificato la mia istanza Amazon Elastic Compute Cloud (Amazon EC2) Linux in un'istanza basata su AWS Nitro System. Ora però l'istanza non si avvia.

Breve descrizione

Un'istanza EC2 Linux potrebbe non avviarsi dopo averla modificata in un'istanza basata su Nitro per i seguenti motivi:

  • Non hai attivato nell'istanza l'attributo enaSupport per le reti avanzate.
  • Non hai installato nell'istanza il driver dell’Adattatore elastico di rete (ENA).
  • Non hai installato nell'istanza il driver NVMe. Oppure non hai caricato il modulo NVMe nell'immagine initramfs dell'istanza.
  • Hai utilizzato un nome di dispositivo per montare i file system nel file /etc/fstab all'avvio anziché un UUID.<br id=hardline_break/> Nota: i volumi Amazon Elastic Block Store (Amazon EBS) vengono visualizzati come dispositivi NVMe nelle istanze basate su Nitro. Questa configurazione modifica i nomi dei dispositivi.

Per risolvere i problemi di avvio, ripristina il tipo di istanza tornando a un'istanza Xen. Quindi utilizza il runbook AWSSupport-MigrateXenToNitroLinux per preparare automaticamente l'istanza alla migrazione. Oppure controlla e correggi manualmente i prerequisiti mancanti. Infine, modifica il tipo di istanza in un'istanza Nitro.

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Modifica il tipo di istanza in Xen

Importante: per modificare i tipi di istanza, devi arrestare e avviare l'istanza.

Configura l'istanza per l'arresto e l'avvio

Nota: quando arresti e avvii un'istanza, l'indirizzo IP pubblico dell'istanza cambia. È consigliabile utilizzare un indirizzo IP elastico per indirizzare il traffico esterno all'istanza anziché un indirizzo IP pubblico. Se utilizzi Amazon Route 53, potresti dover aggiornare i record DNS di Route 53 quando l'IP pubblico cambia.

Prima di arrestare e avviare l'istanza, intraprendi le seguenti azioni:

Modifica il tipo di istanza

Riporta l'istanza al tipo Xen per assicurarti che possa avviarsi.

Prepara automaticamente l'istanza alla migrazione

Per aggiornare automaticamente l'istanza in modo che soddisfi i prerequisiti per la migrazione a Nitro, esegui il runbook AWSSupport-MigrateXenToNitroLinux.

Verifica i prerequisiti prima di eseguire la migrazione

Esegui lo script nitro_check_script.sh per verificare i prerequisiti prima di modificare il tipo di istanza passando a Nitro. Per accedere allo script, consulta nitro_check_script.sh sul sito web GitHub. Per informazioni su ciò che viene controllato dallo script, consulta NitroInstanceChecks sul sito web GitHub.

Per scaricare lo script nitro_check_script.sh, esegui questo comando:

sudo wget https://raw.githubusercontent.com/awslabs/aws-support-tools/refs/heads/master/EC2/NitroInstanceChecks/nitro_check_script.sh -O /tmp/nitro_check_script.sh

Per autorizzare l'ambiente a eseguire lo script, esegui questo comando:

sudo chmod +x /tmp/nitro_check_script.sh

Per eseguire lo script con autorizzazioni root, esegui questo comando:

sudo bash /tmp/nitro_check_script.sh

Nota: devi eseguire lo script come utente root o con sudo. In caso contrario, ricevi il messaggio di errore "This script must be run as root".

In base all'output dello script, intraprendi le seguenti azioni.

Verifica di aver attivato le reti avanzate e di aver installato il driver ENA

Verifica se hai attivato le reti avanzate nell'istanza. Se le reti avanzate non sono attivate, attivale.

Per verificare se hai installato il driver ENA, esegui questo comando:

sudo modinfo ena |grep -i '^version:' || echo "ENA module not available, try modprobe ena"

Se non hai installato il driver ENA, installa il driver più recente. Per istruzioni, consulta Linux kernel driver for Elastic Network Adapter (ENA) family (Driver del kernel Linux per la famiglia di Adattatori elastici di rete (ENA) sul sito web GitHub.

Installa il driver NVMe

Per accedere ai volumi NVMe, devi installare i driver NVMe.

Verifica se hai utilizzato un nome di dispositivo per i punti di montaggio nel file /etc/fstab

Completa i seguenti passaggi:

  1. Per verificare se hai utilizzato un UUID, esegui questo comando:

    cat /etc/fstab |grep -iP 'uuid|dev/'

    Esempio di output:

    /dev/nvme0n1p1 / xfs defaults,noatime 1 1

    Nota: l'esempio di output utilizza un nome di dispositivo anziché un UUID.

  2. Se non hai utilizzato un UUID, recupera l'UUID per il nome del dispositivo eseguendo questo comando:

    lsblk -f device_name |tail -n 1 |awk '{print $4}'

    Nota: sostituisci device_name con il nome del tuo dispositivo.

  3. (Facoltativo) Prima di modificare il file /etc/fstab, è consigliabile eseguire questo comando per creare una copia del file:

    sudo cp /etc/fstab /etc/fstab-`date +%d%m%Y`
  4. Esegui questo comando per aprire il file /etc/fstab:

    cat /etc/fstab
  5. Sostituisci nel file il nome del dispositivo con l'UUID.<br id=hardline_break/> Esempio di file:

    /dev/nvme0n1p1 / xfs defaults,noatime 1 1

    Nota: sostituisci /dev/nvme0n1p1 con l'UUID. Assicurati di sostituire tutti i nomi dei dispositivi nel file /etc/fstab con l'UUID.

  6. Per verificare di aver aggiornato correttamente il file, esegui nuovamente questo comando:

    cat /etc/fstab

    Nell'output controlla se UUID mostra l'UUID.<br id=hardline_break/> Esempio di output:

    UUID=123456-1234-1234-acbd-1234abc1234 / xfs defaults,noatime 1 1

Modifica il tipo di istanza nuovamente in Nitro

Modifica l'istanza in un'istanza basata su Nitro.

Nota: se esegui l'aggiornamento all'istanza Nitro più recente e utilizzi un kernel o un driver obsoleto, l'istanza potrebbe non superare il controllo dello stato. Di conseguenza, si verificano errori di avvio ed errori "kernel panic" o l'istanza diventa irraggiungibile. Per risolvere il problema, consulta Come posso risolvere l'errore “Kernel panic - not syncing" nella mia istanza EC2?

AWS UFFICIALEAggiornata 7 mesi fa