Passer au contenu

Pourquoi mon instance Linux EC2 passe-t-elle en mode d’urgence lorsque j’essaie de la démarrer ?

Lecture de 6 minute(s)
0

Lorsque je démarre mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2), elle passe en mode d’urgence et le processus de démarrage échoue. L'instance devient alors inaccessible.

Brève description

Une instance peut démarrer en mode d’urgence pour les raisons suivantes :

  • Un noyau endommagé sur l'instance provoque une erreur de panique du noyau.
  • Le montage automatique échoue en raison d'entrées incorrectes dans le fichier /etc/fstab qui provoquent des erreurs d'échec de dépendance.

Pour identifier le type d'erreur, vérifiez la sortie de console de l’instance.

Résolution

Erreurs de panique du noyau

En cas de problème avec le noyau, vous recevez un message d'erreur similaire à l'exemple suivant :

« Kernel panic - not syncing: VFS : Unable to mount root fs on unknown-block(8,1) » (Panique du noyau - aucune synchronisation : VFS : Impossible de monter la racine fs sur un bloc inconnu (8,1)

Des erreurs de panique du noyau apparaissent lorsque le fichier de configuration grub ou le fichier initramfs est endommagé. Pour résoudre ce problème, procédez comme suit :

  1. Rétablissez le noyau à son état stable précédent.
  2. Redémarrez l'instance.
  3. Corrigez les problèmes répertoriés dans le message d'erreur concernant le noyau endommagé.

Erreurs d’échec de dépendance

Des erreurs d’échec de dépendance se produisent lorsque des erreurs de syntaxe dans le fichier /etc/fstab entraînent des échecs de montage automatique. L'erreur se produit également lorsque le volume Amazon Elastic Block Store (Amazon EBS) répertorié dans le fichier se détache de l'instance. Vous recevez un message d'erreur similaire à l’exemple suivant :

« [[1;33mDEPEND[0m] Dependency failed for /mnt.

[[1;33mDEPEND[0m] Dependency failed for Local File Systems.

[[1;33mDEPEND[0m]

Dependency failed for Migrate local... structure to the new structure.

[[1;33mDEPEND[0m] Dependency failed for Relabel all filesystems, if necessary.

[[1;33mDEPEND[0m] Dependency failed for Mark the need to relabel after reboot.

[[1;33mDEPEND[0m]

Dependency failed for File System Check on /dev/xvdf. »

Dans l'exemple précédent, le point de montage /mnt n'a pas pu être monté pendant la séquence de démarrage. Pour vous assurer que la séquence de démarrage ne passe pas en mode d'urgence en raison d'un échec de montage, ajoutez les configurations suivantes au fichier /etc/fstab :

  • Une option nofail pour les partitions secondaires, telle que /mnt.
    Remarque : L'option nofail garantit que la séquence de démarrage n'est pas interrompue, même si le montage d'un volume ou d'une partition échoue.
  • Un 0 qui désactive la vérification du système de fichiers en tant que dernière colonne du fichier pour le point de montage.

Pour mettre à jour le fichier /etc/fstab, utilisez l’EC2 Serial Console, exécutez l'automatisation AWSSupport-ExecuteEC2Rescue ou utilisez une instance de secours pour modifier manuellement le fichier.

Important : Avant d'arrêter et de démarrer votre instance, effectuez les actions suivantes :

Remarque : Lorsque vous arrêtez et démarrez une instance, son adresse IP publique change. Une bonne pratique consiste à utiliser une adresse IP Elastic pour acheminer le trafic externe vers votre instance au lieu d'une adresse IP publique. Pour en savoir plus, consultez la section Arrêter et démarrer des instances Amazon EC2.

Utiliser l’EC2 Serial Console
Important : Il n'est pas nécessaire d'arrêter et de démarrer l'instance lorsque vous utilisez l’EC2 Serial Console.

Si vous avez activé l’EC2 Serial Console pour Linux, vous pouvez l’utiliser pour dépanner les types d’instances basés sur Nitro pris en charge et les instances matériel nu. Lorsque vous utilisez l'EC2 Serial Console, vous n'avez pas besoin d'une connexion fonctionnelle pour vous connecter à votre instance. Connectez-vous à l’EC2 Serial Console, puis modifiez le fichier /etc/fstab.

Si vous n'avez jamais utilisé l’EC2 Serial Console auparavant, assurez-vous de respecter les prérequis. Si votre instance est inaccessible et que vous n'avez pas encore configuré l'accès à la console série, vous ne pouvez pas utiliser l’EC2 Serial Console pour corriger le fichier /etc/fstab.

Exécuter le document d’automatisation AWSSupport-ExecuteEC2Rescue

Prérequis : Assurez-vous que vous disposez des autorisations de Gestion des identités et des accès AWS (AWS IAM) requises pour utiliser AWSSupport-ExecuteEC2Rescue.

Exécutez le document d'automatisation AWSSupport-ExecuteEC2Rescue pour corriger automatiquement les problèmes de démarrage. Pour plus d'informations, consultez la section Exécuter l'outil EC2Rescue sur des instances inaccessibles.

Utiliser une instance de secours pour modifier manuellement le fichier

Procédez comme suit :

  1. Ouvrez la console Amazon EC2.

  2. Choisissez Instances, puis sélectionnez l’instance en mode d’urgence.

  3. Arrêtez l’instance.

  4. Détachez le volume racine Amazon EBS /dev/xvda ou /dev/sda1 de l’instance arrêtée.

  5. Lancez une instance de secours dans la même zone de disponibilité que l'instance arrêtée.

  6. Associez le volume racine à l'instance de secours en tant qu’appareil secondaire.
    Remarque : Vous pouvez utiliser différents noms d’appareils lorsque vous attachez des volumes secondaires.

  7. Utilisez SSH pour vous connecter à votre instance de secours.

  8. Pour créer un répertoire de points de montage pour le nouveau volume que vous avez associé à l’instance de secours, exécutez la commande suivante :

    sudo mkdir /mnt/rescue

    Remarque : Remplacez /mnt/rescue par le répertoire de votre point de montage.

  9. Pour identifier le nom et la partition du périphérique en mode bloc, exécutez la commande suivante :

    [root ~]$ lsblk

    Exemple de sortie :

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0    8G  0 disk
    └─xvda1 202:1    0    8G  0 part /
    xvdf    202:80   0  101G  0 disk
    └─xvdf1 202:81   0  101G  0 part
  10. Pour monter le volume dans le répertoire du point de montage, exécutez la commande suivante :

sudo mount -o nouuid /dev/xvdf1 /mnt/rescue

Remarque : Remplacez /dev/xvdf1 par le nom de votre appareil. Pour ouvrir le fichier /etc/fstab, exécutez la commande suivante :

sudo vi /mnt/rescue/etc/fstab
  1. Modifiez les entrées du fichier /etc/fstab. L'exemple suivant montre deux volumes Amazon EBS définis avec des UUID. L'option nofail a été ajoutée aux deux volumes secondaires et un 0 comme dernière colonne pour chaque entrée :
$ cat /etc/fstab
UUID=e75a1891-3463-448b-8f59-5e3353af90ba  /  xfs  defaults,noatime  1  0
UUID=ce917c0c-9e37-4ae9-bb21-f6e5022d5381  /mnt  ext4  defaults,noatime,nofail  1  0  
  1. Enregistrez le fichier, puis exécutez la commande suivante pour démonter le volume :
sudo umount /mnt/rescue
  1. Détachez le volume de l'instance de secours.
  2. Attachez le volume à l'instance d'origine.
  3. Pour confirmer que vous pouvez démarrer l'instance, démarrez-la.