J'ai remplacé mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2) par une instance basée sur Nitro, mais elle ne démarre plus.
Brève description
Il est possible qu'une instance Linux ne démarre pas lorsque vous l'avez remplacée par une instance basée sur Nitro pour les raisons suivantes :
- Vous n'avez pas activé l'attribut enaSupport de mise en réseau améliorée sur l'instance.
- Vous n'avez pas installé le pilote Adaptateur réseau Elastic (ENA) sur l'instance.
- Vous n'avez pas installé le pilote NVMe sur l'instance. Ou bien vous n'avez pas chargé le module NVMe dans l'image initramfs de l'instance.
- Vous avez utilisé un nom d’appareil pour monter les systèmes de fichiers dans le fichier /etc/fstab au démarrage au lieu d'un identifiant universel unique (UUID) ou d'une étiquette.
Remarque : Les volumes Amazon Elastic Block Store (Amazon EBS) apparaissent sous la forme d’appareils NVMe pour les instances basées sur Nitro. Le nom des appareils est en conséquence modifié.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Vérifier automatiquement les prérequis avant de procéder à la migration
Pour vérifier automatiquement vos prérequis lorsque vous migrez une instance Xen vers Nitro, exécutez le dossier d'exploitation AWSSupport-MigrateXenToNitroLinux d’AWS Systems Manager Automation.
Vous pouvez également exécuter le script nitro_check_script.sh pour vérifier les prérequis avant de changer le type d'instance en Nitro. Pour accéder au script, consultez la page nitro_check_script.sh sur le site Web de GitHub. Pour plus d'informations sur les éléments vérifiés par le script, consultez la page NitroInstanceChecks sur le site Web de GitHub.
Pour télécharger le script nitro_check_script.sh, exécutez la commande suivante :
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
Pour autoriser votre environnement à exécuter le script, exécutez la commande suivante :
sudo chmod +x /tmp/nitro_check_script.sh
Pour exécuter le script avec les autorisations racine, exécutez la commande suivante :
sudo bash /tmp/nitro_check_script.sh
Remarque : Vous devez exécuter le script en tant qu'utilisateur racine ou avec sudo. Sinon, le message d'erreur « This script must be run as root » s'affiche.
Pour vérifier manuellement les prérequis, effectuez les actions suivantes.
Vérifier que vous avez activé la mise en réseau améliorée et que vous avez installé le pilote ENA
Vérifiez si vous avez activé la mise en réseau améliorée sur votre instance. Si votre instance ne possède pas l'attribut enaSupport, activez la mise en réseau améliorée.
Pour vérifier si vous avez installé le pilote ENA, exécutez la commande suivante :
sudo modinfo ena |grep -i '^version:' || echo "ENA module not available, try modprobe ena"
Si vous n'avez pas installé le pilote ENA, installez-le pour votre instance Windows EC2. Pour installer le pilote ENA pour une instance Linux, consultez la page Pilote de noyau Linux pour la famille d’adaptateurs réseau Elastic (ENA) sur le site Web de GitHub.
Installer le pilote NVMe
Pour accéder aux volumes NVMe, vous devez installer les pilotes NVMe.
Vérifier si vous avez utilisé un nom d’appareil pour les points de montage dans le fichier /etc/fstab
Pour vérifier si vous avez utilisé un UUID, exécutez la commande suivante :
cat /etc/fstab |grep -iP 'uuid|dev/'
Exemple de sortie :
UUID=90e29211-2de8-4967-b0fb-16f51a6e464c / xfs defaults,noatime 1 1
Si vous n'avez pas utilisé d'UUID, exécutez la commande suivante pour récupérer l'UUID correspondant au nom de l'appareil :
lsblk -f device_name |tail -n 1 |awk '{print $4}'
Remarque : Remplacez device_name par le nom de votre appareil.
Exemple de sortie :
90e29211-2de8-4967-b0fb-16f51a6e464c
Avant de modifier le fichier /etc/fstab, il est recommandé d'exécuter la commande suivante pour créer une copie du fichier :
sudo cp /etc/fstab /etc/fstab-`date +%d%m%Y`
Exécutez la commande suivante pour ouvrir le fichier /etc/fstab :
cat /etc/fstab
Remplacez ensuite le nom de l'appareil par l'UUID :
/dev/nvme0n1p1 / xfs defaults,noatime 1 1
Remarque : Remplacez /dev/nvme0n1p1 par l'UUID.
Pour vérifier que vous avez correctement mis à jour le fichier, réexécutez la commande cat /etc/fstab. Exemple de sortie :
UUID=90e29211-2de8-4967-b0fb-16f51a6e464c / xfs defaults,noatime 1 1
Assurez-vous de remplacer tous les noms d’appareils par des UUID. Puis, arrêtez votre instance. Remplacez l'instance par une instance basée sur Nitro, puis démarrez-la.