2010-01-17 3 views

Répondre

78

Vous pouvez migrer votre instance en cours d'exécution vers une AMI soutenue par EBS. Voici comment je l'ai fait:

  • Boot une instance soutenue régulière S3 AMI (ou depuis que vous avez déjà une instance que vous êtes satisfait, utilisez-)
  • Faire un volume EBS de la même taille comme partition sda1 racine (actuellement la valeur par défaut est 10G pour un m1.small et éventuellement d'autres)
  • Attacher ce volume EBS à un périphérique de bloc libre sur l'instance à l'aide de la console Web ou des outils de ligne de commande (par exemple/dev/sdd)
  • Arrête les services sur l'instance (par exemple /etc/init.d/mysql stop etc.)
  • Copiez le volume racine éphémère au volume EBS:

dd bs = 65536 if =/dev/sda1 of =/dev/sdd

  • Vérifiez que le volume EBS par souci de cohérence:

fsck/dev/sdd

  • Montez le volume EBS sur l'instance:

mount/dev/sdd/root/ebs-vol

  • Retirez l'entrée/mnt de la fstab votre EBS vol:

vim/root/ebs-vol/etc/fstab

  • Unmout le volume EBS:

umount/dev/sdd

  • Créer un instantané de le volume EBS à l'aide de la console de gestion AWS (ou des outils API de ligne de commande)
  • Prenez note de t il instantané id
  • inscrire l'image instantanée avec AWS et prendre note de l'ID AMI produit, lors de l'enregistrement n'oubliez pas de spécifier l'image du noyau et ramdisk (ceux-ci devraient être les mêmes que ceux utilisés dans votre instance en cours):

EC2 registre -s composant logiciel enfichable -a i386 -d 12345 "description de l'AMI" -n "nom de l'image" aki--k -r ari 12345-12345

  • Pour créer une instance avec plus de 10G de stockage persistant vous devez utiliser les outils cli. par exemple. pour 20G

EC2-run-instances ami-54321 -t m1.petit -n 1 -g défaut --availability zone = eu-ouest-1a -k EC2-key1 -b/dev/sda1 = composant logiciel enfichable 12345: 20: false

  • Si vous démarrez un par exemple basé sur un de ces MUAS> taille de volume par défaut, une fois qu'il est démarré, vous pouvez faire une Redimensionner en ligne du système de fichiers:

resize2fs/dev/sda1

+2

+1 instructions belles, bien que je ne pense pas que ce soit ce que l'OP veut. – kdgregory

+1

Merci beaucoup pour la réponse complète. C'est génial – Sug

+3

Nous avons fondamentalement fait de même, mais utilisé rsync avec excludes au lieu de dd, a travaillé comme un charme aussi. Encore une chose à prendre en compte (je sais que c'est évident, mais cela arrive encore et encore): lors de la création de votre volume EBS, assurez-vous de vérifier qu'il se trouve dans la même région que l'instance à laquelle vous voulez l'attacher; -) –

0

A la place de l'autre long commentaire ici, j'ai utilisé la commande suivante pour ce faire:

EC2-registre --snapshot composant logiciel enfichable 9eb4ecf6 --architecture i386 - nom "Zenoss Enterprise 3.0 bêta 2 sur centOS" - description "Ceci provient d'une installation de zenoss core beta 1 et de zenoss enterprise beta 2, tous les deux de la version 3.0 (ou en interne 2.5.70 217). Un périphérique bloc ebs a été attaché, et le système de fichiers a été rsynced, puis ebs a été snapshotted et cela est basé sur cela. "--root-nom-périphérique/dev/sda1 --kernel aki-9b00e5f2

13

cela peut se faire sans créer un nouveau AMI et sans lancer un nouvelle instance Quand c'est fait, le volume racine d'origine reste attaché à/dev/sda1 (ou à l'endroit où il a été monté à l'origine)/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 s'exécutent dans leurs versions 10.04 et 10.10. Découvrez 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 n'importe quel périphérique connecté dont l'étiquette de volume est "uec-rootfs". Si vous utilisez l'un de ces noyaux, tout ce que vous avez à faire est de changer le nom du volume racine du volume actuel (instance-store) en autre chose, changez le nom du volume de la nouvelle racine en uec-rootfs, puis redémarrez. Si vous n'utilisez pas l'un de ces noyaux, vous ne pouvez pas utiliser cette technique.

Voici le code. Mettre cela 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 

d'abord vous fixer le volume EBS vous souhaitez agir en tant que nouvelle racine à l'un des dispositifs disponibles /dev/sdf../dev/sdp. Cela peut être effectué avec des appels d'API EC2 directs, avec le EC2 Command Line API tools (volume ec2-attach) ou avec une bibliothèque telle que boto ou via l'interface utilisateur d'AWS Management Console.

Ensuite, exécutez le script reroot.sh en tant que root, et fournir l'appareil que vous avez joint le nouveau volume racine, comme suit:

sudo reroot.sh /dev/sdp 

Cela va faire le sale boulot.Ensuite, vous redémarrez simplement:

sudo shutdown -r now 

Viola.

Pour tester cela, vous devez créer un volume EBS qui démarrera correctement. J'aime faire cela en photographiant le volume racine des AMIs supportées par EBS à partir des AMIs 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 reroot ci-dessus, vous pouvez mettre dans un fichier « marqueur » sur le vieux volume racine:

cd 
touch this-is-the-original-root-volume 

Ensuite, lorsque vous relancez et redémarrez, si ce fichier existe dans votre répertoire personnel, vous utilisez toujours le volume racine d'origine. Si ce n'est pas le cas, le redémarrage et le redémarrage ont fonctionné.

Voici deux cas d'utilisation par exemple pour cette technique, avec des explications approfondies:

http://shlomoswidler.com/2011/02/play-chicken-with-spot-instances.html

http://shlomoswidler.com/2011/02/recapture-unused-ec2-minutes.html

+1

+1, et merci d'avoir fait la note sur ma réponse ... il est maintenant supprimé. – kdgregory

Questions connexes