Warum startet meine Amazon EC2-Linux-Instance nicht, nachdem ich sie auf eine Nitro-basierte Instance geändert habe?
Ich habe meine Amazon Elastic Compute Cloud (Amazon EC2) Linux-Instance auf eine Instance basierend auf dem AWS Nitro System geändert. Allerdings startet die Instance jetzt nicht mehr.
Kurzbeschreibung
Eine EC2-Linux-Instance startet möglicherweise nicht, nachdem du sie auf eine Nitro-basierte Instance geändert hast, aus folgenden Gründen:
- Du hast das Enhanced-Networking-Attribut enaSupport auf der Instance nicht aktiviert.
- Du hast den Elastic Network Adapter (ENA)-Treiber nicht auf der Instance installiert.
- Du hast den NVMe-Treiber nicht auf der Instance installiert. Oder du hast das NVMe-Modul nicht in das initramfs-Image der Instance geladen.
- Du hast einen Gerätenamen zum Einbinden der Dateisysteme in der Datei /etc/fstab beim Booten anstelle einer UUID verwendet.<br id=hardline_break/> Hinweis: Amazon Elastic Block Store (Amazon EBS)-Volumes werden Nitro-basierten Instances als NVMe-Geräte angezeigt. Diese Konfiguration ändert die Gerätenamen.
Um Boot-Probleme zu beheben, ändere den Instance-Typ zurück auf eine Xen-Instance. Verwende dann das Runbook AWSSupport-MigrateXenToNitroLinux, um deine Instance automatisch für die Migration vorzubereiten. Oder überprüfe und behebe die fehlenden Voraussetzungen manuell. Ändere anschließend den Instance-Typ auf eine Nitro-Instance.
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Instance-Typ zurück zu Xen ändern
Wichtig: Um Instance-Typen zu ändern, musst du die Instance stoppen und starten.
Instance für einen Stopp und Start konfigurieren
Hinweis: Wenn du eine Instance stoppst und startest, ändert sich die öffentliche IP-Adresse der Instance. Es empfiehlt sich, beim Weiterleiten von externem Datenverkehr an die Instance eine Elastic-IP-Adresse anstelle einer öffentlichen IP-Adresse zu verwenden. Wenn du Amazon Route 53 verwendest, musst du möglicherweise die Route 53-DNS-Datensätze aktualisieren, wenn sich die öffentliche IP-Adresse ändert.
Bevor du deine Instance stoppst und startest, führe die folgenden Aktionen aus:
- Wenn deine Instance einen Instance-Speicher verwendet, sichere die Volume-Daten im Instance-Speicher auf persistenten Speicher. Zum Beispiel kannst du die Daten in Amazon EBS-Volumes oder Amazon Simple Storage Service (Amazon S3)-Buckets speichern.<br id=hardline_break/> Wichtig: Amazon EC2 löscht Instance-Speicherdaten, wenn du die Instance stoppst.
- Erstelle einen Snapshot deines EBS-Volumes. Wenn Probleme auftreten, kannst du den Snapshot verwenden, um deine Instance wiederherzustellen.
- Entferne die Instance vorübergehend aus ihrer Amazon EC2-Auto-Scaling-Gruppe, damit du die Instance beim Stoppen nicht versehentlich beendest.<br id=hardline_break/> Hinweis: EC2 Auto Scaling kann gestoppte Instances in einer Auto-Scaling-Gruppe basierend auf deinen Einstellungen für den Scale-In-Schutz beenden. Instances, die du mit Amazon EMR, AWS CloudFormation oder AWS Elastic Beanstalk startest, sind möglicherweise Teil einer Auto-Scaling-Gruppe.
- Stelle das Verhalten beim Herunterfahren der Instance auf Stopp ein, um sicherzustellen, dass die Instances nicht beendet werden, wenn du sie stoppst.
Ändern des Instance-Typs
Ändere die Instance zurück zum Xen-Instance-Typ, um sicherzustellen, dass die Instance starten kann.
Instance automatisch auf die Migration vorbereiten
Um deine Instance automatisch zu aktualisieren, sodass sie die Voraussetzungen für die Migration zu Nitro erfüllt, führe das Runbook AWSSupport-MigrateXenToNitroLinux aus.
Voraussetzungen vor dem Migrieren überprüfen
Führe das Skript nitro_check_script.sh aus, um die Voraussetzungen zu überprüfen, bevor du den Instance-Typ auf Nitro änderst. Um auf das Skript zuzugreifen, siehe nitro_check_script.sh auf der GitHub-Website. Informationen darüber, was das Skript überprüft, findest du unter NitroInstanceChecks auf der GitHub-Website.
Führe den folgenden Befehl aus, um das Skript nitro_check_script.sh herunterzuladen:
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
Um deiner Umgebung die Erlaubnis zu geben, das Skript auszuführen, führe den folgenden Befehl aus:
sudo chmod +x /tmp/nitro_check_script.sh
Führe den folgenden Befehl aus, um das Skript mit Root-Rechten auszuführen:
sudo bash /tmp/nitro_check_script.sh
Hinweis: Du musst das Skript als Root-Benutzer oder mit Sudo ausführen. Andernfalls erhältst du die Fehlermeldung „This script must be run as root“.
Führe basierend auf der Skriptausgabe die folgenden Aktionen aus.
Stelle sicher, dass du Enhanced Networking aktiviert und den ENA-Treiber installiert hast
Teste, ob du Enhanced Networking auf deiner Instance aktiviert hast. Wenn Enhanced Networking nicht aktiviert ist, aktiviere Enhanced Networking.
Führe den folgenden Befehl aus, um zu überprüfen, ob du den ENA-Treiber installiert hast:
sudo modinfo ena |grep -i '^version:' || echo "ENA module not available, try modprobe ena"
Wenn du den ENA-Treiber nicht installiert hast, installiere den neuesten Treiber. Anleitungen findest du unter Linux-Kernel-Treiber für die Elastic Network Adapter (ENA)-Familie auf der GitHub-Website.
Den NVMe-Treiber installieren
Um auf NVMe-Volumes zuzugreifen, musst du die NVMe-Treiber installieren.
Prüfe, ob du in der Datei /etc/fstab einen Gerätenamen für Mount-Punkte verwendet hast
Führe die folgenden Schritte aus:
-
Führe den folgenden Befehl aus, um zu überprüfen, ob du eine UUID verwendet hast:
cat /etc/fstab |grep -iP 'uuid|dev/'Beispielausgabe:
/dev/nvme0n1p1 / xfs defaults,noatime 1 1Hinweis: Die Beispielausgabe verwendet einen Gerätenamen anstelle einer UUID.
-
Wenn du keine UUID verwendet hast, führe den folgenden Befehl aus, um die UUID für den Gerätenamen abzurufen:
lsblk -f device_name |tail -n 1 |awk '{print $4}'Hinweis: Ersetzen device_name durch deinen Gerätenamen.
-
(Optional) Bevor du die Datei /etc/fstab bearbeitest, empfiehlt es sich, den folgenden Befehl auszuführen, um eine Kopie der Datei zu erstellen:
sudo cp /etc/fstab /etc/fstab-`date +%d%m%Y` -
Führe den folgenden Befehl aus, um die Datei /etc/fstab zu öffnen:
cat /etc/fstab -
Ersetze in der Datei den Gerätenamen durch die UUID.<br id=hardline_break/> Beispieldatei:
/dev/nvme0n1p1 / xfs defaults,noatime 1 1Hinweis: Ersetze /dev/nvme0n1p1 durch die UUID. Stelle sicher, dass du alle Gerätenamen in der Datei /etc/fstab durch die UUID ersetzt.
-
Um zu überprüfen, ob du die Datei korrekt aktualisiert hast, führe den folgenden Befehl erneut aus:
cat /etc/fstabÜberprüfe in der Ausgabe, ob UUID die UUID anzeigt.<br id=hardline_break/> Beispielausgabe:
UUID=123456-1234-1234-acbd-1234abc1234 / xfs defaults,noatime 1 1
Instance-Typ zurück zu Nitro ändern
Ändere die Instance zu einer Nitro-basierten Instance.
Hinweis: Wenn du auf die neueste Nitro-Instance aktualisierst und einen veralteten Kernel oder Treiber verwendest, kann die Instance die Statusprüfung möglicherweise nicht bestehen. Infolgedessen erhältst du Boot-Fehler und „kernel panic“-Fehler oder deine Instance wird nicht erreichbar. Um dieses Problem zu beheben, siehe Wie behebe ich den Fehler „Kernel panic - not syncing“ in meiner EC2-Instance?
- Themen
- Compute
- Tags
- Amazon EC2Linux
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 8 Monaten