J'ai une instance EC2 avec un périphérique "magasin d'instances" en tant que périphérique racine. Maintenant, je voudrais attacher un volume EBS à cette même instance, seulement que je veux ça doit être le périphérique racine. Est-ce possible? Qu'advient-il du périphérique de stockage d'instance dans ce cas?
Merci d'avance
Vous pouvez migrer votre instance en cours d'exécution vers une AMI soutenue par EBS. Voici comment je l'ai fait:
dd bs = 65536 if =/dev/sda1 of =/dev/sdd
fsck/dev/sdd
mount/dev/sdd/root/ebs-vol
vim/root/ebs-vol/etc/fstab
umount/dev/sdd
ec2-register -s snap-12345 -a i386 -d "Description de l'AMI" -n "nom-de-l'image" -k aki-12345 -r ari-12345
ec2-run-instances AMI-54321 -t m1.small -n 1 -g par défaut --available-zone = eu-west-1a -k ec2-key1 -b/dev/sda1 = snap-12345: 20: false
resize2fs/dev/sda1
Cela peut être fait sans créer une nouvelle AMI et sans lancer une nouvelle instance. Une fois terminé, le volume racine d'origine reste attaché sur/dev/sda1 (ou là où il a été initialement monté./Dev/sda1 est la valeur par défaut pour de nombreuses AMI). Le volume racine d'origine ne sera pas monté sur le système de fichiers - vous devrez le faire vous-même via la commande "mount".
La technique nécessite les noyaux Ubuntu récents, ceux qui tournent dans leurs versions 10.04 et 10.10. Consultez alestic.com pour les ID AMI les plus récents pour ces versions d'Ubuntu. Ces noyaux récents sont configurés pour démarrer à partir de tout périphérique connecté dont le nom de volume est "uec-rootfs". Si vous exécutez l'un de ces noyaux, tout ce que vous devez faire est de changer le nom de volume du volume racine actuel (stockage d'instance) en autre chose, changer le nom de volume de la nouvelle racine en uec-rootfs, puis redémarrer. Si vous n'exécutez pas l'un de ces noyaux, vous ne pouvez pas utiliser cette technique.
Voici le code. Mettez ceci dans un fichier (reroot.sh) sur l'instance:
#! /bin/bash
device=$1
# change the filesystem labels
e2label /dev/sda1 old-uec-rootfs
e2label $device uec-rootfs
Vous devez d'abord attacher le volume EBS que vous souhaitez utiliser comme nouvelle racine à l'un des périphériques disponibles /dev/sdf../dev/sdp. Cela peut être fait soit avec des appels directs à l'API EC2, avec les outils de l'API de ligne de commande EC2 (ec2-attach-volume), soit avec une bibliothèque telle que boto , ou via l'interface utilisateur de la AWS Management Console.
Ensuite, exécutez le script reroot.sh en tant que root et fournissez le périphérique sur lequel vous avez attaché le nouveau volume racine, comme suit:
Sudo reroot.sh /dev/sdp
Cela fera le sale boulot. Ensuite, vous redémarrez simplement:
Sudo shutdown -r now
Alto.
Pour tester cela, vous devez créer un volume EBS dont vous savez qu'il démarrera correctement. J'aime le faire en prenant un instantané du volume racine des AMI soutenues par EBS à partir des AMI Ubuntu mentionnées ci-dessus. À partir de cet instantané, vous pouvez créer un nouveau volume EBS amorçable dans n'importe quelle zone de disponibilité. Assurez-vous que vous pouvez faire la différence entre le volume racine d'origine de l'instance en cours d'exécution et le nouveau volume racine EBS - avant d'exécuter la procédure de redémarrage ci-dessus, vous pouvez placer un fichier "marqueur" sur l'ancien volume racine:
cd
touch this-is-the-original-root-volume
Ensuite, lorsque vous redémarrez et redémarrez, si ce fichier existe dans votre répertoire personnel, vous exécutez toujours avec le volume racine d'origine. Si ce n'est pas le cas, le redémarrage et le redémarrage ont fonctionné.
Voici deux exemples d'utilisation de cette technique, avec des explications détaillées:
http://shlomoswidler.com/2011/02/play-chicken-with-spot-instances.html
http://shlomoswidler.com/2011/02/recapture-unused-ec2-minutes.html
Vous pouvez également essayer l'outil suivant pour convertir une AMI de stockage d'instance en une AMI de démarrage ebs: https://cloudyscripts.com/tool/show/2
AlexM
a trouvé de bonnes étapes.
Vous seriez également intéressé à vérifier ce lien: http://coderslike.us/2009/12/07/Amazon-ec2-boot-from-ebs-and-AMI-conversion/
EDIT: Un autre lien: http://www.elastician.com/2009/12/creating-ebs-backed-AMI-from -s3-supported.html
Je ne sais pas à quel point il serait facile de convertir une instance existante, mais Amazon propose désormais la possibilité de démarrer directement à partir d'un volume EBS lorsque vous créez une nouvelle instance.
Au lieu de l'autre long commentaire ici, j'ai utilisé la commande suivante pour ce faire:
ec2-register --snapshot snap-9eb4ecf6 --architecture i386 --name "Zenoss Enterprise 3.0 beta 2 on centOS" --description "Il s'agit d'une installation de zenoss core beta 1 et zenoss enterprise beta 2, toutes deux de la version 3.0 ( ou en interne 2.5.70 217). Un périphérique de bloc ebs a été connecté, et le système de fichiers a été synchronisé, puis ebs a été instantané et cela est basé sur cela. " --root-device-name/dev/sda1 --kernel aki-9b00e5f2