¿Puedo cambiar el dispositivo raíz de EBS de mi instancia de Amazon EC2?

107

Tengo una instancia Amazon EC2 respaldada por EBS. Me gustaría cambiar el dispositivo raíz en esta instancia. ¿Puede aconsejarnos cuál es la mejor forma de hacerlo?

Solo encuentro documentación sobre cómo cambiar varios atributos de los dispositivos de bloque, pero no parecen incluir la configuración como dispositivo raíz.

cono
fuente

Respuestas:

191

Sí, es muy fácil:

  1. Detén la instancia.
  2. Separe el volumen raíz de EBS.
  3. Adjunte el volumen de EBS alternativo como raíz: /dev/sda1
  4. Inicie la instancia.

Esto presupone que su volumen de EBS alternativo es de arranque, por supuesto, tiene que contener la imagen del sistema operativo de arranque.

Gurú de ocho bits
fuente
50
La clave es "como la raíz", /dev/sda1¡de hecho!
Aseem Kishore
6
Gracias, esto es genial. Un problema es que el DNS / IP puede cambiar cuando esto sucede, así que asegúrese de actualizar cualquier DNS / IP elástico, etc. Pasé un tiempo tratando de averiguar por qué ya no podía usarlo, y esta fue la razón.
mrooney
13
Ni /dev/sdatampoco /dev/sda1funcionó para mí, pero lo /dev/xvdahizo.
bhspencer
8
Hombre, eso fue aterrador. /dev/sda- no funcionó. /dev/sda1, dev/sdf- funcionó, pero la instancia no arrancó. /dev/xvdatrabajó.
Alex Fortuna
13
El nombre que debe usar es el resultado de este comando: aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNameen mi caso/dev/xvda
Neoecos
42

No tengo suficiente representante para agregar un comentario a la respuesta seleccionada, pero quiero señalar que para mí, /dev/sda1no funcionó (no se adjuntó como raíz), pero el uso /dev/xvdafuncionó (adjunto como raíz). La instancia es una de las t2.micro más nuevas que usan HVM.

byl83
fuente
Creo que las máquinas que están en VPC, los nombres de dispositivos de formato / dev / xv * funcionan en sí mismos y no es necesario dar nombres en formato / dev / sd *. Esta es una observación: no soy un experto para decir esto con confianza.
Mayank Jaiswal
Tengo una instancia que coincide con esta descripción, que no puede arrancar ("No se puede encontrar el dispositivo raíz") después de desconectar y volver a conectar el dispositivo raíz. Quiero probar esta respuesta, pero si no la adjunto como /dev/sda1, AWS se niega a iniciar mi instancia. ¿Hay alguna otra configuración que deba configurar para usar un nombre de dispositivo raíz alternativo?
Jack O'Connor
/ dev / sda1 para Linux / dev / xvda para Windows
Luis
whoopse, asegúrese de identificar la partición, / dev / sda 1 , /dev/sdano es válida pero /dev/sda1está bien.
ThorSummoner
16

Para ampliar el comentario de Diomidis Spinellis en el hilo de comentarios de la respuesta aceptada, es importante verificar la etiqueta del sistema de archivos del dispositivo que está intentando cambiar como su nuevo dispositivo raíz. Mientras solucionaba problemas de migración de mi propio servidor, tuve que hacer lo siguiente antes de que mi instancia arrancara:

Use el e2labelcomando para cambiar la etiqueta en el sistema de archivos ext2 / ext3 / ext4 que ha creado para su nuevo dispositivo raíz.

Primero, verifique la etiqueta del sistema de archivos de su dispositivo raíz actual.

$ sudo e2label /dev/xvda1
cloudimg-rootfs

Configure el nuevo dispositivo para que tenga la misma etiqueta de sistema de archivos.

$ sudo e2label /dev/xvdg 'cloudimg-rootfs'

En mi caso, la etiqueta fue cloudimg-rootfs. A veces simplemente lo será /.

Es importante comprender cómo funciona e2label; compruebe man e2labelsu máquina o visite http://linux.die.net/man/8/e2label para obtener más información.

Joey
fuente
1
Esto es tan increíblemente importante que no puedo entender por qué esta respuesta no se encuentra con más frecuencia.
ays0110
3

Esta es la solución sugerida por AWS. Puede separar el volumen raíz de la instancia original después de detenerlo. El volumen raíz está adjunto en / dev / sda1. Una vez que se haya separado, adjúntelo a la nueva instancia. Una vez que se adjunta el volumen, es posible que deba montarlo desde el sistema operativo. Una vez montado, debería ver los datos que contiene.

Una vez que haya terminado de agregar la nueva clave, puede separarla y adjuntarla a la instancia original en / dev / sda1.

Sugiero crear una instantánea del volumen raíz antes de realizar cambios.

Antes de probar cualquier solución, pruebe en los casos no importantes o en los casos puntuales.

Yunus
fuente
1

Si desea hacer esto a través de CloudFormation, deberá hacer lo siguiente:

  1. Cree una instantánea desde el volumen raíz existente (a través de la consola o CLI)
  2. Cree una nueva AMI a partir de esta instantánea: aumente el tamaño del volumen raíz aquí, asegúrese de seleccionar el tiempo de virtualización correcto (paravirtual o HVM).
  3. En su recurso AWS :: EC2 :: Instance, configure el parámetro ImageId en la nueva AMI que acaba de crear

Implemente su pila. Esto volverá a crear su instancia, así que asegúrese de estar usando una dirección IP elástica o tener acceso a DNS.

La razón por la que tiene que hacer esta solución alternativa es porque CF no le permitirá ajustar el tamaño del volumen raíz en EC2 BlockDeviceMappings, ni ajustar SnapshotId del volumen raíz.

Joe Alamo
fuente
0

Cuando su volumen está montado, obtiene una corrección posterior con números, por ejemplo: cuando /dev/sdaestá montado, se monta /dev/sda1, /dev/sda2según las particiones que haga. A medida que montamos el dispositivo raíz, se asume que el dispositivo ya está montado, por lo que debemos proporcionar/dev/sda1 para montar el volumen como dispositivo raíz. Nota: No debería haber ningún volumen raíz adjunto.

Siga estos pasos: 1) Vaya a sus volúmenes, seleccione adjuntar volúmenes de Acción. 2) Seleccione su instancia 3) Para montar como root, ingrese el nombre del dispositivo como /dev/sda1 4) Inicie su instancia.

Prashanth
fuente