virginia ec2 east change caracteristicas aws amazon-ec2 amazon-web-services cloud amazon-ebs

amazon-ec2 - east - download key pair amazon ec2



Amazon EC2: intercambie el dispositivo de almacenamiento de instancia raĆ­z con el dispositivo EBS (6)

Tengo una instancia de EC2 con un dispositivo de "almacén de instancias" como dispositivo raíz. Ahora, me gustaría adjuntar un volumen de EBS a esa misma instancia, solo que quiero que sea el dispositivo raíz. ¿Es eso posible? ¿Qué sucede con el dispositivo de la tienda de instancias en tal caso?

Gracias por adelantado


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

ec2-register --snapshot snap-9eb4ecf6 --architecture i386 --name "Zenoss Enterprise 3.0 beta 2 en centOS" --descripción "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 de bloque ebs, 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


Esto se puede hacer sin crear una nueva AMI y sin 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. Visite alestic.com para obtener las ID de AMI más recientes para estos lanzamientos 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. Pon 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, debería adjuntar el volumen de EBS que desea que actúe como la nueva raíz a uno de los dispositivos disponibles /dev/sdf../dev/sdp. Esto se puede hacer con llamadas directas a la API EC2, con las herramientas de la API de línea de comandos EC2 (ec2-attach-volume), o con una biblioteca como boto , o a través de la interfaz de usuario de AWS Management Console.

A continuación, ejecute el script reroot.sh como root y proporcione el dispositivo al que adjuntó el nuevo volumen raíz, de la siguiente manera:

sudo reroot.sh /dev/sdp

Esto hará el trabajo sucio. Entonces simplemente reinicia:

sudo shutdown -r now

Viola.

Para probar esto, debe crear un volumen de EBS que sepa que se iniciará 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 distinguir entre el volumen raíz original de la instancia en ejecución y el nuevo volumen raíz de EBS. Antes de ejecutar el procedimiento de reinicio anterior, puede colocar un archivo "marcador" en el volumen raíz anterior:

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ó.

Aquí hay dos ejemplos de casos de uso para 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



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

  • Arranque una instancia normal respaldada por S3 AMI (o ya que tiene una instancia que le satisface, utilícela)
  • Cree un volumen EBS del mismo tamaño que 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 comando (por ejemplo, / dev / sdd)
  • Detener los servicios en la instancia (por ejemplo, /etc/init.d/mysql stop, etc.)
  • Copie el volumen raíz efímero en el volumen de EBS:

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

  • Verifique el volumen de EBS por consistencia:

fsck / dev / sdd

  • Monte el volumen de EBS en la instancia:

mount / dev / sdd / root / ebs-vol

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

vim / root / ebs-vol / etc / fstab

  • Desanclar el volumen de EBS:

umount / dev / sdd

  • Cree una instantánea del volumen de EBS utilizando la consola de administración de AWS (o las herramientas de la API de línea de comandos)
  • Tome nota de la id de instantánea
  • Registre la imagen de instantánea con AWS y tome nota de la identificación de AMI producida, al registrarse recuerde especificar el núcleo y la imagen de disco RAM (deben ser los mismos que los utilizados en su instancia actual):

ec2-register -s snap-12345 -a i386 -d "Descripción de AMI" -n "nombre-de-imagen" -k aki-12345 -r ari-12345

  • Para crear una instancia con más de 10G de almacenamiento persistente, debe usar las herramientas cli. por ejemplo, para 20G

ec2-run-instances ami-54321 -t m1.small -n 1 -g predeterminado --availability-zone = eu-west-1a -k ec2-key1 -b / dev / sda1 = snap-12345: 20: false

  • Si reinicia una instancia basada en uno de estos AMI con> tamaño de volumen predeterminado, una vez que se inicie puede hacer un cambio de tamaño en línea del sistema de archivos:

resize2fs / dev / sda1