2010-01-17 15 views

Respuesta

78

Puede migrar su instancia en ejecución a una AMI respaldada por EBS. Así es como lo hice:

  • arranque una instancia respaldado S3 IAM regular (o desde entonces ya tienes una instancia usted es feliz con, uso esa)
  • constituir un volumen de EBS del mismo tamaño como su partición root sda1 (actualmente el valor predeterminado es 10G para un m1.small y posiblemente otros)
  • Adjunte ese volumen de EBS a un dispositivo de bloque libre en la instancia utilizando la consola web o las herramientas de línea de comandos (p. ej.,/dev/sdd)
  • Detener los servicios en la instancia (por ejemplo, /etc/init.d/mysql stop etc.)
  • Copiar el volumen raíz efímera al volumen EBS:

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

  • comprobar el volumen de EBS para mantener la coherencia:

fsck/dev/sdd

  • Monte el volumen de EBS en la instancia:

mount/dev/sdd/root/EBS-vol

  • eliminar la entrada/mnt del fstab en su EBS vol:

vim/root/EBS-vol/etc/fstab

  • Unmout el volumen EBS:

umount/dev/sdd

  • crear una instantánea de el volumen de EBS utilizando la consola de administración de AWS (o las herramientas API de la línea de comandos)
  • Tome nota de t que snapshot Identificación
  • registrar la imagen instantánea con AWS y tomar nota de la Identificación del IAM producido, al registrarse recuerde especificar la imagen del núcleo y el disco RAM (estos deben ser los mismos que los utilizados en la instancia actual):

EC2 a registrar -s snap-12345 -a i386 -d "Descripción del IAM" -n "nombre-de-imagen" k aki-12345-r ari-12345

  • Para crea una instancia con más de 10G de almacenamiento persistente, tienes que usar las herramientas cli. p.ej. para 20G

EC2-RUN-casos ami-54321 -t m1.pequeña -n 1 -g predeterminado --availability zona = eu-oeste-1a -k EC2-key1 -b/dev/sda1 = snap-12345: 20: falsa

  • Si arranca hasta una instancia basa en uno de estos IAM con> tamaño volumen predeterminado, una vez que se puso en marcha que puede hacer un cambio de tamaño en línea del sistema de archivos:

resize2fs/dev/sda1

+2

+1 instrucciones agradable, aunque no creo que es lo que quiere el OP. – kdgregory

+1

Muchas gracias por la respuesta integral. Eso es genial – Sug

+3

Básicamente hicimos lo mismo, pero usamos rsync con excludes en lugar de dd, también funcionaba como un hechizo. Una cosa más de la que ocuparse (sé que es obvio, pero sucede una y otra vez): al crear su volumen de EBS, asegúrese de verificar que esté en la misma región que la instancia a la que desea adjuntarlo; -) –

0

En lugar del otro comentario largo de aquí, utiliza el siguiente comando para hacer esto:

EC2-registro --snapshot complemento 9eb4ecf6 --architecture i386 - nombre "Zenoss Enterprise 3.0 beta 2 en centOS" --description "Esto es de una instalación de zenoss core beta 1 y zenoss enterprise beta 2, ambas de la versión 3.0 (o internamente 2.5.70 217). Se adjuntó un dispositivo Ebs Block y el sistema de archivos rsynced, luego ebs se tomó una instantánea y está basado en eso. "--root-device-name/dev/sda1 --kernel aki-9b00e5f2

13

esto se puede hacer sin necesidad de crear un nuevo IAM y sin necesidad de iniciar una nueva instancia. Cuando está listo, el volumen raíz original permanece adjunto en/dev/sda1 (o donde fue originalmente montado./Dev/sda1 es el predeterminado para muchas AMI). El volumen raíz original no se montará en el sistema de archivos; deberá hacerlo usted mismo mediante el comando "montar".

La técnica requiere los núcleos recientes de Ubuntu, los que se ejecutan en sus versiones 10.04 y 10.10. Consulte alestic.com para obtener los ID de AMI más recientes para estas versiones de Ubuntu. Estos kernels recientes están configurados para arrancar desde cualquier dispositivo conectado cuya etiqueta de volumen sea "uec-rootfs". Si está ejecutando uno de estos núcleos, todo lo que necesita hacer es cambiar la etiqueta de volumen del volumen raíz actual (instancia-tienda) por otra cosa, cambie la etiqueta de volumen de la raíz nueva a uec-rootfs y luego reinicie. Si no está ejecutando uno de estos kernels, no puede usar esta técnica.

Aquí está el código. Poner esto en un archivo (reroot.sh) en la instancia:

#! /bin/bash 
device=$1 
# change the filesystem labels 
e2label /dev/sda1 old-uec-rootfs 
e2label $device uec-rootfs 

Primero le fije el volumen EBS desea actuar como la nueva raíz de uno de los dispositivos disponibles /dev/sdf../dev /partido socialdemócrata. Esto puede hacerse con llamadas API EC2 directas, con EC2 Command Line API tools (ec2-attach-volume), o con una biblioteca como boto, o mediante la interfaz de usuario de AWS Management Console.

A continuación, ejecute el script reroot.sh como root, y proporcionar el dispositivo se ha instalado el nuevo volumen de la raíz de la siguiente manera:

sudo reroot.sh /dev/sdp 

esto va a hacer el trabajo sucio.Luego simplemente reinicie:

sudo shutdown -r now 

Viola.

Para probar esto, debe crear un volumen de EBS que sepa que arrancará correctamente. Me gusta hacer esto haciendo una instantánea del volumen raíz de las AMI respaldadas por EBS de las mencionadas AMI de Ubuntu. Desde esa instantánea puede crear un nuevo volumen de EBS de arranque en cualquier zona de disponibilidad. Asegúrese de que puede decir la diferencia entre el volumen raíz original de la instancia en ejecución y el nuevo volumen raíz EBS - antes de ejecutar el procedimiento reroot anterior se puede poner en un archivo "marcador" en el viejo volumen raíz:

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

Luego, cuando vuelva a iniciar y reinicie, si ese archivo existe en su directorio de inicio todavía se está ejecutando con el volumen raíz original. Si no está allí, entonces el reinicio y reinicio funcionó.

Éstos son dos casos ejemplo de uso de esta técnica, con explicaciones detalladas:

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

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

+1

+1, y gracias por hacer que la nota en mi respuesta ... ahora está borrada. – kdgregory

Cuestiones relacionadas