53 votes

Amazon EC2 - Permuter le périphérique de stockage d'instance racine avec le périphérique EBS

J'ai une instance EC2 avec le périphérique "magasin d'instance" en tant que périphérique racine. À présent, je souhaiterais attacher un volume EBS à cette même instance, mais je souhaite que ce soit le périphérique racine. Est-ce possible? Qu'advient-il du périphérique de stockage d'instance dans un tel cas?

Merci d'avance

80voto

AlexM Points 796

Vous pourrait migrer votre instance en cours d'exécution à un EBS AMI soutenues. Voici comment j'ai fait:

  • Démarrage régulier S3 AMI soutenu instance (ou depuis que vous avez déjà obtenu un exemple, que vous êtes heureux avec, l'utiliser)
  • Faire un volume EBS de la même taille que la racine de votre partition sda1 (actuellement, la valeur par défaut est de 10G pour un m1.petit et peut-être d'autres)
  • Attacher le volume d'un bloc libre de l'appareil sur l'instance à l'aide de la console web ou outils de ligne de commande (par exemple, /dev/sdd)
  • Arrêter les services sur l'instance (par exemple /etc/init.d/mysql stop etc.)
  • Copie de l'éphémère de la racine du volume pour le volume EBS:

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

  • Vérifiez le volume EBS pour des raisons de cohérence:

fsck /dev/sdd

  • Montez le volume EBS sur l'instance:

mount /dev/sdd /root/ebs-vol

  • Supprimer le répertoire /mnt entrée de la fstab sur votre EBS vol:

vim /root/ebs-vol/etc/fstab

  • Unmout le volume EBS:

umount /dev/sdd

  • Créer un instantané du volume EBS en utilisant AWS management console ou l'API en ligne de commande outils)
  • Prenez note de l'instantané id
  • Enregistrer l'instantané de l'image avec AWS et de prendre note de l'AMI de l'id de produit, lors de l'inscription n'oubliez pas de préciser le noyau et le ramdisk de l'image (qui devraient être les mêmes que ceux utilisés dans votre instance en cours):

ec2-inscrivez -s snap-12345 -i386 -d "Description de l'AMI" -n "nom de l'image" -k aki-12345 -r ari-12345

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

ec2-run-instances ami-54321 -t m1.petites -n 1 -g par défaut --la disponibilité de la zone=eu-west-1-k ec2-clé1 -b /dev/sda1=snap-12345:20:faux

  • Si vous démarrez une instance fondée sur l'un de ces AMIs avec de l' > volume par défaut de la taille, une fois qu'il est démarré, vous pouvez le faire en ligne de redimensionner le système de fichiers:

resize2fs /dev/sda1

14voto

Shlomo Swidler Points 796

Cela peut se faire sans la création d'un nouvel AMI et sans avoir à lancer une nouvelle instance. Quand c'est fait, l'origine de la racine du volume reste attachée sur /dev/sda1 (ou de l'endroit où il était monté à l'origine. /dev/sda1 est la valeur par défaut pour de nombreux AMIs). L'origine de la racine du volume ne sera pas monté sur le système de fichier, vous devrez le faire vous-même via le "mont de la commande".

La technique nécessite la récente Ubuntu noyaux, ceux qui s'exécutent dans leur 10.04 et 10.10 versions. Découvrez alestic.com pour la plus récente AMI Id pour ces versions d'Ubuntu. Ces derniers noyaux sont configurés pour démarrer à partir de n'importe quel appareil dont le volume label "uec-rootfs". Si vous utilisez l'une de ces noyaux tout ce que vous devez faire est de changer le nom de volume courant (exemple magasin) de la racine du volume à autre chose, changer le nom de volume de la racine à ceu-rootfs, puis redémarrez. Si vous n'êtes pas à l'exécution de l'une 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

D'abord vous devez joindre le volume, vous voulez agir en tant que racine de l'un des périphériques /dev/sdf../dev/sdp. Cela peut être fait soit avec direct EC2 appels d'API, avec l' EC2 API en Ligne de Commande outils (ec2-fixez-volume de), ou avec une bibliothèque comme boto, ou via AWS Management Console de l'INTERFACE utilisateur.

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

sudo reroot.sh /dev/sdp

Cela va faire le sale boulot. Ensuite il vous suffit de redémarrer:

sudo shutdown -r now

Viola.

Pour tester cela, vous devez créer un volume EBS que vous savez démarrer correctement. Je tiens à le faire que par des instantanés de la racine du volume de l'EBS, AMIs de ceux mentionnés ci-dessus Ubuntu AMIs. À partir de cet instantané, vous pouvez créer un nouveau démarrage volume EBS dans toute Zone de Disponibilité. Assurez-vous que vous pouvez dire à la différence entre le fonctionnement de l'instance de l'origine de la racine du volume et de la nouvelle EBS racine du volume avant d'exécuter le reroot procédure ci-dessus, vous pouvez mettre dans un "marqueur" de fichier sur l'ancienne racine du volume:

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

Ensuite, lorsque vous reroot et le redémarrage, si ce fichier existe dans le répertoire que vous êtes toujours en cours d'exécution à l'origine de la racine du volume. Si il n'y est pas, alors le reroot-et-redémarrage travaillé.

Voici deux exemples de cas d'utilisation de cette technique, avec des explications exhaustives:

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

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

6voto

elasticsecurity Points 410

Vous pouvez également essayer l'outil suivant pour convertir une AMI de magasin d'instance en une AMI ebs-boot: https://cloudyscripts.com/tool/show/2

1voto

Gnanam Points 2169

AlexM a venir avec les bonnes mesures.

Vous pourriez également être intéressé par la vérification de 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-backed.html

0voto

gareth_bowles Points 10605

Je ne sais pas à quel point il serait facile de convertir une instance existante, mais Amazon offre désormais la possibilité de démarrer directement à partir d'un volume EBS lorsque vous créez une nouvelle instance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X