Warum bootet meine Linux-Instance nicht, nachdem ich sie in eine Nitro-basierte Instance geändert habe?
Ich habe meine Amazon Elastic Compute Cloud (Amazon EC2) Linux-Instance auf eine Nitro-basierten Instance umgestellt und jetzt bootet sie nicht.
Kurzbeschreibung
Eine Linux-Instance bootet möglicherweise nicht, nachdem du sie in eine Nitro-basierte Instance geändert hast. Dies kann folgende Gründe haben:
- 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 beim Booten einen Gerätenamen verwendet, um die Dateisysteme in der Datei /etc/fstab einzubinden, und nicht einen Unique Universal Identifier (UUID) oder ein Label.
Hinweis: Amazon Elastic Block Store (Amazon EBS)-Volumes werden Nitro-basierten Instances als NVMe-Geräte angezeigt. Dadurch werden die Gerätenamen geändert.
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 von AWS CLI verwendest.
Überprüfe vor der Migration automatisch die Voraussetzungen
Um deine Voraussetzungen automatisch zu überprüfen, wenn du eine Xen-Instance zu Nitro migrierst, führe das AWS Systems Manager Automation-Runbook AWSSupport-MigrateXentoNitroLinux aus.
Oder führe das Skript nitro_check_script.sh aus, um die Voraussetzungen zu überprüfen, bevor du den Instance-Typ in 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 „Dieses Skript muss als Root ausgeführt werden“.
Gehe wie folgt vor, um die Voraussetzungen manuell zu überprüfen.
Stelle sicher, dass du Enhanced Networking aktiviert und den ENA-Treiber installiert hast
Teste, ob du Enhanced Networking auf deiner Instance aktiviert hast. Wenn deine Instance nicht über das Attribut enaSupport verfügt, 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 ENA-Treiber für deine EC2-Windows-Instance. Informationen zur Installation des ENA-Treibers für eine Linux-Instance 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 den folgenden Befehl aus, um zu überprüfen, ob du eine UUID verwendet hast:
cat /etc/fstab |grep -iP 'uuid|dev/'
Beispielausgabe:
UUID=90e29211-2de8-4967-b0fb-16f51a6e464c / xfs defaults,noatime 1 1
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.
Beispielausgabe:
90e29211-2de8-4967-b0fb-16f51a6e464c
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 dann den Gerätenamen durch die UUID:
/dev/nvme0n1p1 / xfs defaults,noatime 1 1
Hinweis: Ersetze /dev/nvme0n1p1 durch die UUID.
Um zu überprüfen, ob du die Datei korrekt aktualisiert hast, führe den Befehl cat /etc/fstab erneut aus. Beispielausgabe:
UUID=90e29211-2de8-4967-b0fb-16f51a6e464c / xfs defaults,noatime 1 1
Stelle sicher, dass du alle Gerätenamen durch UUIDs ersetzt. Stoppe dann deine Instance. Ändere die Instance in eine Nitro-basierte Instance und starte die Instance dann.
- Themen
- Compute
- Tags
- LinuxAmazon EC2
- Sprache
- Deutsch
Ähnliche Videos

