Perché la mia istanza Amazon EC2 Linux non si avvia dopo averla modificata in un'istanza basata su Nitro?
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:
- Se l'istanza utilizza un archivio dell'istanza, salva i dati del volume nell'archivio dell'istanza in uno storage persistente. Ad esempio, puoi salvare i dati in volumi Amazon EBS o in bucket Amazon Simple Storage Service (Amazon S3).<br id=hardline_break/> Importante: Amazon EC2 elimina i dati dell'archivio dell'istanza quando arresti l'istanza.
- Crea uno snapshot del volume EBS. In caso di problemi, puoi utilizzare lo snapshot per ripristinare l'istanza.
- Rimuovi temporaneamente l'istanza dal relativo gruppo Amazon EC2 Auto Scaling in modo da non terminarla accidentalmente quando la arresti.<br id=hardline_break/> Nota: EC2 Auto Scaling potrebbe terminare le istanze arrestate in un gruppo Auto Scaling in base alle impostazioni di protezione da riduzione orizzontale. Le istanze avviate con Amazon EMR, AWS CloudFormation o AWS Elastic Beanstalk potrebbero far parte di un gruppo Auto Scaling.
- Imposta il comportamento di chiusura dell'istanza su Arresta per assicurarti che le istanze non terminino quando le arresti.
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:
-
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 1Nota: l'esempio di output utilizza un nome di dispositivo anziché un UUID.
-
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.
-
(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` -
Esegui questo comando per aprire il file /etc/fstab:
cat /etc/fstab -
Sostituisci nel file il nome del dispositivo con l'UUID.<br id=hardline_break/> Esempio di file:
/dev/nvme0n1p1 / xfs defaults,noatime 1 1Nota: sostituisci /dev/nvme0n1p1 con l'UUID. Assicurati di sostituire tutti i nomi dei dispositivi nel file /etc/fstab con l'UUID.
-
Per verificare di aver aggiornato correttamente il file, esegui nuovamente questo comando:
cat /etc/fstabNell'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?
- Argomenti
- Compute
- Lingua
- Italiano
Video correlati


Contenuto pertinente
AWS UFFICIALEAggiornata 7 mesi fa