No se puede conectar a la instancia EC2 después de convertir Ubuntu 16 PV a Ubuntu 16 HVM

No se puede conectar a la instancia EC2 después de convertir Ubuntu 16 PV a Ubuntu 16 HVM

Han pasado algunos días y todavía no puedo conectarme a mi nueva instancia HVM con EC2 con Ubuntu 16. Como referencia, estoy intentando actualizar nuestro servidor desde una instancia m3 con Ubuntu 16 a una instancia C5 con Ubuntu 16. En casi todos los métodos que he probado, puedo llegar al punto en el que detengo mi nueva instancia C5, desconecto todos los volúmenes y adjunto el volumen de origen recién actualizado como /dev/sda1, pero luego, cuando voy a conectarme a la instancia, siempre terminar sin tiempo. La verificación de estado de Amazon también falla, ya que dice que no se puede acceder a la instancia. Sin embargo, el registro del sistema no muestra problemas al iniciar.

He intentado hacer todo enesta publicación. He intentadoesta publicacióntambién. He buscado en otros sitios y he dadoesteyesteun intento. Incluso probé el método de herramientas de línea de comandos de ec2 y la conversión de una AMI desde la consola de ec2 (en línea), sin embargo, no puedo iniciar una instancia C5 con la AMI convertida o la instancia se detendrá y fallará (en el caso de conversión a través de la línea de comando).

Lo único que realmente puedo pensar que podría estar causando esto es la convención de nomenclatura para las particiones en la instancia C5. Todas las guías que he visto usan xvda/xvdf/xvdg. Podría estar equivocado, pero no tengo estas particiones o discos, y en su lugar tengo nvme0n1, nvme0n1p1(la nueva raíz HVM), nvme1n1y nvme1n1p1. Cuando probé el método HVM/fuente/disco de destino, tenía nvme0n1/nvme0n1p1( nvme1n1destino, donde debería terminar todo) y nvme2n1/nvme2n1p1(fuente, de donde era todo, en m3). encontréesta publicación de Amazon sobre nvmeasí que no creo que esto deba ser un problema, ya que solo estoy usando el disco/partición correcto cuando uso /mnt/, es decir. Llamo mkdir -p /mnt/target && mount /dev/nvme1n1 /mnt/targeten lugar de mkdir -p /mnt/target && mount /dev/xvdf /mnt/target, pero hasta ahora nada ha funcionado. Mi instancia se vuelve inalcanzable en el momento en que adjunto el targetas /dev/sda1.

Entonces, ¿hay algo que me falta al hacer esto con un disco llamado nvme*? ¿Hay alguna otra información o elemento de depuración que pueda proporcionar para ayudar a comprender el problema?

Respuesta1

Me doy cuenta de que esta pregunta no se vio mucho, pero por si acaso, espero que mis resultados puedan ayudar a alguien en el futuro (tal vez incluso a mí la próxima vez que intente esto). Me gustaría agradecer a Steve E. del soporte de Amazon por ayudarme a migrar mi instancia <3

De todos modos, hubo 2 problemas al migrar mi instancia de Ubuntu 16.04 M3 (PV) a una instancia de Ubuntu 16.04 C5 (HVM). El primer problema fue que las nuevas instancias C5 utilizan las nuevas convenciones de nomenclatura, por lo que otros tutoriales sobre la migración de PV a HVM no funcionan de la misma manera. El otro problema fue que mi instancia M3 (PV) había pasado por actualizaciones a Ubuntu. De hecho, pasé de Ubuntu 12 -> Ubuntu 14 -> Ubuntu 16 en el último año. Esto causó un problema por el cual no se generaban archivos de red en la nube y, por lo tanto, no se podía acceder a mi instancia.

De todos modos, para migrar una instancia PV de Ubuntu 16.04 a una instancia HVM usando la nueva convención de nomenclatura nvme, haga lo siguiente:

Resumen de requisitos previos:

  1. Antes de comenzar, asegúrese de instalar lo siguiente en su instancia fotovoltaica:

    $ sudo apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
    $ sudo apt-get install linux-aws
    
  2. Detenga la instancia PV yCrear una instantáneade su volumen raíz,restaurar esta instantáneacomo un nuevo volumen de EBS en la misma zona de disponibilidad de la fuente (inicie la instancia PV justo después de la creación de la instantánea)
  3. Lanzar una nueva instancia C5 HVM(destino) seleccionando Ubuntu Server 16.04 LTS (HVM) en la misma zona de disponibilidad de la instancia de origen (mantenga el tamaño del volumen raíz de EBS de esta nueva instancia en 8 GB, ya que este volumen raíz solo se usará temporalmente)
  4. Después del lanzamiento de la instancia,adjuntar el volumenrestauró en el paso 1 (ese es el volumen raíz de la instancia PV) como /dev/sdf(en el sistema Ubuntu, el nombre será nvme1n1).
  5. Cree un nuevo volumen de EBS (en blanco)(mismo tamaño que su volumen raíz PV 'fuente') y conéctelo a la instancia HVM como /dev/sdg(en el sistema Ubuntu, el nombre será nvme2n1)

Migración:

Una vez que haya iniciado sesión en su instancia, utilícelo sudo supara ejecutar todos los comandos como usuario root.

  1. Muestra tus volúmenes

    # lsblk 
    NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    nvme0n1     259:0    0    8G  0 disk 
    └─nvme0n1p1 259:1    0    8G  0 part /
    nvme1n1     259:2    0  100G  0 disk 
    nvme2n1     259:3    0  100G  0 disk 
    

    nvme0n1es la raíz de HVM que acaba de crear (solo para arrancar esta vez) nvme1n1es la raíz de PV restaurada (se convertirá a HVM) nvme2n1es el volumen en blanco (recibirá la conversión de la raíz de PV como nvme1n1)

  2. Cree una nueva partición en nvme2n1( nvme2n1p1se creará)

    # parted /dev/nvme2n1 --script 'mklabel msdos mkpart primary 1M -1s print quit'
    # partprobe /dev/nvme2n1
    # udevadm settle
    
  3. Verifique el volumen 'fuente' y minimice el tamaño del sistema de archivos original para acelerar el proceso. No queremos copiar espacio libre en el disco en el siguiente paso.

    # e2fsck -f /dev/nvme1n1 ; resize2fs -M /dev/nvme1n1
    
  4. Duplicar el volumen 'origen' al 'destino'

    # dd if=/dev/nvme1n1 of=/dev/nvme2n1p1 bs=$(blockdev --getbsz /dev/nvme1n1) conv=sparse count=$(dumpe2fs /dev/nvme1n1 | grep "Block count:" | cut -d : -f2 | tr -d "\\ ")
    
  5. Cambie el tamaño del volumen de 'destino' al máximo:

    # e2fsck -f /dev/nvme2n1p1 && resize2fs /dev/nvme2n1p1
    
  6. Prepare el volumen de destino:

    # mount /dev/nvme2n1p1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc
    
  7. chrootal nuevo volumen

    # chroot /mnt/
    
  8. Reinstale gruben el volumen chroot:

    # grub-install --recheck /dev/nvme2n1
    # update-grub
    

    Salga delchroot

    # exit
    

    Cerrar la instancia

    # shutdown -h now
    
  9. Después de la conversión ahora necesitas hacer esto:

    Separe los 3 volúmenes que tenía anteriormente en la instancia HVM. Adjunte el último volumen que creó (en blanco) como /dev/sda1en la consola (anteriormente estaba adjunto como /dev/nvme2n1) en la instancia de HVM. Inicie la instancia HVM.

La nueva instancia HVM ahora debería iniciarse correctamente y será una copia exacta de la instancia PV de origen anterior (si utilizó el volumen de origen correcto). Una vez que haya confirmado que todo está funcionando, se puede finalizar la instancia de origen.


Actualización de la configuración de red (opcional)

Ahora, los pasos anteriores funcionarán para la mayoría de las personas aquí. Sin embargo, todavía no se alcanzaba el estado de mi instancia. La razón fue porque actualicé Ubuntu en mi instancia, en lugar de comenzar desde una imagen nueva. Esto dejó la eth0configuración activada, un 50-cloud-init.cfgarchivo sin configuración.

Si ya tiene el archivo /etc/network/interfaces.d/50-cloud-init.cfg, puede seguirlo y actualizarlo, en lugar de crear uno nuevo. También suponga que todos los comandos se ejecutan a través de sudo su.

  1. Apague la instancia, desconecte los volúmenes e ingrese la misma configuración que antes. Adjunte el volumen de 8 GB como /dev/sda1/y su volumen de destino final como /dev/sdf/. Inicie la instancia e inicie sesión.

  2. Monte /dev/sdf, que ahora debería ser nvme1n1p1haciendo lo siguiente:

    # mount /dev/nvme1n1p1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc
    
  3. Cree o actualice el archivo:

    /etc/network/interfaces.d/50-cloud-init.cfg
    

    Con lo siguiente:

    # This file is generated from information provided by
    # the datasource.  Changes to it will not persist across an instance.
    # To disable cloud-init's network configuration capabilities, write a file
    # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
    # network: {config: disabled}
    auto lo
    iface lo inet loopback
    
    auto ens5
    iface ens5 inet dhcp
    
  4. Salir chroot( exit), cerrar la instancia ( shutdown -h now).

  5. ¡Sigue el paso 9 de antes!

¡Deberías haber terminado!


Respuesta2

Gracias, la sugerencia para la configuración de red funcionó en el caso de actualización (Ubuntu 14.04 PV a Ubuntu 18.04 PV). Se convirtió Ubuntu 18.04 PV actualizado a Ubuntu 18.04 HVM con un ligero ajuste en la configuración de red. Creó un nuevo /etc/netplan/50-cloud-init.config con la siguiente configuración

network:
    version: 2
    ethernets:
        all-en:
            match:
                name: "en*"
            dhcp4: true
        all-eth:
            match:
                name: "eth*"
            dhcp4: true

información relacionada