Puis-je changer le périphérique EBS racine de mon instance Amazon EC2?

107

J'ai une instance Amazon EC2 soutenue par EBS. Je voudrais changer le périphérique racine sur cette instance. Pouvez-vous nous indiquer la meilleure façon de procéder?

Je ne trouve que de la documentation sur la modification de plusieurs attributs de périphériques de bloc, mais ils ne semblent pas inclure le réglage en tant que périphérique racine.

cône
la source

Réponses:

191

Oui, c'est très simple:

  1. Arrêtez l'instance.
  2. Détachez le volume EBS racine.
  3. Attachez le volume EBS alternatif en tant que racine: /dev/sda1
  4. Démarrez l'instance.

Cela présuppose que votre autre volume EBS soit amorçable, bien sûr - il doit contenir l'image du système d'exploitation amorçable.

Gourou huit bits
la source
50
La clé est "en tant que racine" - en /dev/sda1effet!
Aseem Kishore
6
Merci, c'est génial. Un problème est que le DNS / IP peut changer lorsque cela se produit, alors assurez-vous de mettre à jour toutes les IP DNS / Elastic, et cetera. J'ai passé un moment à essayer de comprendre pourquoi je ne pouvais plus m'y intéresser, et c'était la raison.
mrooney
14
Ni /dev/sdani /dev/sda1travaillé pour moi, mais a /dev/xvdafait.
bhspencer
9
Mec, c'était effrayant. /dev/sda- n'a pas fonctionné. /dev/sda1, dev/sdf- a fonctionné, mais l'instance n'a pas démarré. /dev/xvdatravaillé.
Alex Fortuna
13
Le nom que vous devez utiliser est le résultat de cette commande: aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNamedans mon cas/dev/xvda
Neoecos
43

Je n'ai pas assez de représentants pour ajouter un commentaire à la réponse sélectionnée, mais je tiens à souligner que pour moi, cela /dev/sda1n'a pas fonctionné (ne s'est pas attaché en tant que racine), mais en utilisant /dev/xvdatravaillé (attaché en tant que racine). L'instance est l'une des plus récentes t2.micro utilisant HVM.

byl83
la source
Je pense que les machines qui sont dans VPC, les noms de périphériques au format / dev / xv * fonctionnent lui-même et vous n'avez pas besoin de donner des noms au format / dev / sd *. C'est une observation - je ne suis pas expert pour le dire avec confiance.
Mayank Jaiswal
J'ai une instance correspondant à cette description, qui est incapable de démarrer ("Impossible de trouver le périphérique racine") après avoir détaché et reconnecté le périphérique racine. Je veux essayer cette réponse, mais si je ne l'attache pas, /dev/sda1AWS refuse de démarrer mon instance. Dois-je configurer un autre paramètre pour utiliser un autre nom de périphérique racine?
Jack O'Connor
/ dev / sda1 pour Linux / dev / xvda pour Windows
Luis
whoopse, assurez-vous d'identifier la partition, / dev / sda 1 , /dev/sdan'est pas valide mais /dev/sda1c'est bien.
ThorSummoner
16

Pour élaborer sur le commentaire de Diomidis Spinellis dans le fil de commentaires de la réponse acceptée, il est important de vérifier l'étiquette du système de fichiers de l'appareil que vous essayez de basculer en tant que nouveau périphérique racine. Lors du dépannage de ma propre migration de serveur, j'ai dû effectuer les opérations suivantes avant que mon instance ne démarre:

Utilisez la e2labelcommande pour changer le libellé du système de fichiers ext2 / ext3 / ext4 que vous avez créé pour votre nouveau périphérique racine.

Commencez par vérifier l'étiquette du système de fichiers de votre périphérique racine actuel.

$ sudo e2label /dev/xvda1
cloudimg-rootfs

Configurez le nouveau périphérique pour qu'il ait la même étiquette de système de fichiers.

$ sudo e2label /dev/xvdg 'cloudimg-rootfs'

Dans mon cas, l'étiquette était cloudimg-rootfs. Parfois, ce sera simplement le cas /.

Il est important de comprendre comment fonctionne e2label; vérifiez man e2labelsur votre machine ou visitez http://linux.die.net/man/8/e2label pour plus d'informations.

Joey
la source
1
C'est tellement incroyablement important que je ne peux pas comprendre pourquoi cette réponse n'est pas plus courante.
ays0110
3

Voici la solution suggérée par aws. Vous pouvez détacher le volume racine de l'instance d'origine après l'avoir arrêtée. Le volume racine est attaché à / dev / sda1. Une fois que cela est détaché, veuillez le joindre à la nouvelle instance. Une fois le volume connecté, vous devrez peut-être le monter à partir du système d'exploitation. Une fois monté, vous devriez voir les données qu'il contient.

Après avoir ajouté la nouvelle clé, vous pouvez la détacher et l'attacher à l'instance d'origine dans / dev / sda1.

Je suggère de créer un instantané du volume racine avant d'apporter des modifications.

Avant d'essayer des solutions, essayez simplement les instances non importantes ou les instances ponctuelles

yunus
la source
1

Si vous souhaitez le faire via CloudFormation, vous devrez effectuer les opérations suivantes:

  1. Créer un instantané à partir du volume racine existant (via la console ou la CLI)
  2. Créez une nouvelle AMI à partir de cet instantané - augmentez la taille du volume racine ici, assurez-vous de sélectionner le temps de virtualisation correct (paravirtuel ou HVM).
  3. Sur votre ressource AWS :: EC2 :: Instance, définissez le paramètre ImageId sur la nouvelle AMI que vous venez de créer

Déployez votre pile. Cela recréera votre instance, alors assurez-vous que vous utilisez une adresse IP Elastic ou que vous disposez d'un accès DNS.

La raison pour laquelle vous devez faire cette solution de contournement est que CF ne vous permettra pas d'ajuster la taille du volume racine sur EC2 BlockDeviceMappings, ou d'ajuster SnapshotId du volume racine.

Joe Alamo
la source
0

Lorsque votre volume est monté, il reçoit un post-correctif avec des nombres, par exemple: lorsqu'il /dev/sdaest monté, il est monté en /dev/sda1, /dev/sda2fonction des partitions que vous créez. Comme nous montons le périphérique racine lui-même, cela suppose que le périphérique est déjà monté, nous devons donc donner /dev/sda1pour monter le volume en tant que périphérique racine. Remarque: aucun volume racine ne doit être attaché.

Suivez ces étapes: 1) Accédez à vos volumes, sélectionnez attacher les volumes à partir de l'action. 2) Sélectionnez votre instance 3) Pour le montage en tant que root, donnez le nom de l'appareil /dev/sda1 4) Démarrez votre instance.

Prashanth
la source