Résoudre les problèmes liés au démarrage d'une instance Linux à partir d'un volume incorrect - Amazon Elastic Compute Cloud

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résoudre les problèmes liés au démarrage d'une instance Linux à partir d'un volume incorrect

Note

Cette rubrique de résolution des problèmes s'applique uniquement aux instances Linux.

Dans certaines situations, vous pouvez trouver qu’un volume autre que celui attaché à /dev/xvda ou /dev/sda est devenu le volume racine de votre instance. Cela peut arriver lorsque vous avez attaché le volume racine d’une autre instance, ou un volume créé à partir de l’instantané d’un volume racine, à une instance avec un volume racine existant.

Ceci est dû à la façon de fonctionner du ramdisk initial dans Linux. Il choisit le volume définit comme / dans le fichier /etc/fstab, et dans certaines distributions. Ceci est déterminé par l’étiquette attachée à la partition du volume. Plus spécifiquement, vous trouvez que le fichier /etc/fstab ressemble à ce qui suit :

LABEL=/ / ext4 defaults,noatime 1 1 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0

Si vous vérifiez l’étiquette des deux volumes, vous verrez qu’ils contiennent tous les deux l’étiquette / :

[ec2-user ~]$ sudo e2label /dev/xvda1 / [ec2-user ~]$ sudo e2label /dev/xvdf1 /

Dans cet exemple, /dev/xvdf1 pourrait devenir le périphérique racine où votre instance démarre après l’exécution initiale de ramdisk, au lieu du volume /dev/xvda1 à partir duquel vous aviez essayé de démarrer. Pour résoudre ce problème, utilisez la même commande e2label pour changer l’étiquette du volume attaché à partir duquel vous ne souhaitez pas démarrer.

Dans certains cas, spécifier un UUID dans /etc/fstab peut résoudre ce problème. Cependant, si les deux volumes proviennent du même instantané ou si le deuxième est créé à partir d’un instantané du volume principal, ils partagent un UUID.

[ec2-user ~]$ sudo blkid /dev/xvda1: LABEL="/" UUID=73947a77-ddbe-4dc7-bd8f-3fe0bc840778 TYPE="ext4" PARTLABEL="Linux" PARTUUID=d55925ee-72c8-41e7-b514-7084e28f7334 /dev/xvdf1: LABEL="old/" UUID=73947a77-ddbe-4dc7-bd8f-3fe0bc840778 TYPE="ext4" PARTLABEL="Linux" PARTUUID=d55925ee-72c8-41e7-b514-7084e28f7334
Pour changer l’étiquette d’un volume ext4 attaché
  1. Utilisez la commande e2label pour remplacer l’étiquette du volume par autre chose que /.

    [ec2-user ~]$ sudo e2label /dev/xvdf1 old/
  2. Vérifiez que le volume possède la nouvelle étiquette.

    [ec2-user ~]$ sudo e2label /dev/xvdf1 old/
Pour changer l’étiquette d’un volume xfs attaché
  • Utilisez la commande xfs_admin pour remplacer l’étiquette du volume par autre chose que /.

    [ec2-user ~]$ sudo xfs_admin -L old/ /dev/xvdf1 writing all SBs new label = "old/"

Après avoir modifié l’étiquette du volume comme indiqué, vous devriez pouvoir redémarrer l’instance et avoir le bon volume sélectionné par le ramdisk initial lorsque l’instance démarre.

Important

Si vous prévoyez de détacher le volume avec la nouvelle étiquette et de le renvoyer vers une autre instance pour l’utiliser comme volume racine, vous devez ré-exécuter la procédure ci-dessus et réattribuer à l’étiquette du volume sa valeur d’origine. Sinon, l’autre instance ne démarre pas, car le ramdisk ne peut pas trouver le volume avec l’étiquette /.