Saltar al contenido

¿Por qué no arranca mi instancia de Linux de Amazon EC2 después de cambiarla por una instancia basada en Nitro?

6 minutos de lectura
0

Cambié mi instancia Linux de Amazon Elastic Compute Cloud (Amazon EC2) por una instancia basada en AWS Nitro System. Sin embargo, ahora la instancia no arranca.

Descripción corta

Es posible que una instancia de Linux de EC2 no arranque después de cambiarla a una instancia basada en Nitro por los siguientes motivos:

  • No has activado el atributo enaSupport de redes mejoradas en la instancia.
  • No has instalado el controlador Elastic Network Adapter (ENA) en la instancia.
  • No has instalado el controlador NVMe en la instancia. O bien, no has cargado el módulo NVMe en la imagen initramfs de la instancia.
  • Has utilizado un nombre de dispositivo para montar los sistemas de archivos en el archivo /etc/fstab durante el arranque en lugar de un UUID.<br id=hardline_break/> Nota: Los volúmenes de Amazon Elastic Block Store (Amazon EBS) aparecen como dispositivos NVMe para las instancias basadas en Nitro. Esta configuración cambia los nombres de los dispositivos.

Para resolver los problemas de arranque, cambia el tipo de instancia a una instancia basada en Xen. A continuación, usa el runbook AWSSupport-MigrateXenToNitroLinux para preparar automáticamente la instancia para la migración. O bien, comprueba y corrige manualmente los requisitos previos que falten. Por último, cambia el tipo de instancia a una instancia basada en Nitro.

Resolución

Nota: Si se muestran errores al poner en marcha comandos de Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas para AWS CLI. Además, asegúrate de utilizar la versión más reciente de AWS CLI.

Volver a cambiar el tipo de instancia a Xen

Importante: Para cambiar los tipos de instancia, debes detener e iniciar la instancia.

Configuración de la instancia para que se detenga e inicie

Nota: Al detener e iniciar una instancia, la dirección IP pública de la instancia cambia. Se recomienda utilizar una dirección IP elástica para enrutar el tráfico externo hacia la instancia en lugar de una dirección IP pública. Si usas Amazon Route 53, es posible que tengas que actualizar los registros DNS de Route 53 cuando cambies la dirección IP pública.

Antes de detener e iniciar la instancia, lleva a cabo las siguientes acciones:

Cambio de tipo de instancia

Vuelve a cambiar la instancia al tipo de instancia Xen para asegurarte de que la instancia pueda arrancar.

Preparación automática de la instancia para la migración

Para actualizar automáticamente la instancia y así cumplir los requisitos previos para migrar a Nitro, usa el runbook AWSSupport-MigrateXenToNitroLinux.

Comprobación de los requisitos previos antes de migrar

Usa el script nitro_check_script.sh para comprobar los requisitos previos antes de cambiar el tipo de instancia a Nitro. Para acceder al script, consulta nitro_check_script.sh en el sitio web de GitHub. Para obtener información sobre lo que comprueba el script, consulta NitroInstanceChecks en el sitio web de GitHub.

Para descargar el script nitro_check_script.sh, usa el siguiente comando:

sudo wget https://raw.githubusercontent.com/awslabs/aws-support-tools/refs/heads/master/EC2/NitroInstanceChecks/nitro_check_script.sh -O /tmp/nitro_check_script.sh

Para dar permiso a tu entorno para utilizar el script, usa el siguiente comando:

sudo chmod +x /tmp/nitro_check_script.sh

Para utilizar el script con permisos raíz, usa el siguiente comando:

sudo bash /tmp/nitro_check_script.sh

Nota: Debes utilizar el script como usuario raíz o con sudo. De lo contrario, recibirás el mensaje de error “This script must be run as root”.

En función del resultado del script, lleva a cabo las siguientes acciones:

Comprobar que has activado la red mejorada e instalado el controlador ENA

Comprueba si has activado las redes mejoradas en la instancia. Si las redes mejoradas no están activadas, actívalas.

Para comprobar si has instalado el controlador ENA, usa el siguiente comando:

sudo modinfo ena |grep -i '^version:' || echo "ENA module not available, try modprobe ena"

Si no instalaste el controlador ENA, instala el controlador más reciente. Para obtener instrucciones, consulta Linux kernel driver for Elastic Network Adapter (ENA) family en el sitio web de GitHub.

Instalar el controlador NVMe

Para acceder a los volúmenes de NVMe, debes instalar los controladores NVMe.

Comprobar si se ha utilizado un nombre de dispositivo para los puntos de montaje en el archivo /etc/fstab

Sigue estos pasos:

  1. Para comprobar si has utilizado un UUID, usa el siguiente comando:

    cat /etc/fstab |grep -iP 'uuid|dev/'

    Resultado de ejemplo:

    /dev/nvme0n1p1 / xfs defaults,noatime 1 1

    Nota: El resultado de ejemplo usa un nombre de dispositivo en lugar de un UUID.

  2. Si no has utilizado un UUID, usa el siguiente comando para recuperar el UUID del nombre del dispositivo:

    lsblk -f device_name |tail -n 1 |awk '{print $4}'

    Nota: Sustituye device_name por el nombre de tu dispositivo.

  3. (Opcional) Antes de editar el archivo /etc/fstab, se recomienda usar el siguiente comando para hacer una copia del archivo:

    sudo cp /etc/fstab /etc/fstab-`date +%d%m%Y`
  4. Usa el siguiente comando para abrir el archivo /etc/fstab:

    cat /etc/fstab
  5. En el archivo, sustituye el nombre del dispositivo por el UUID.<br id=hardline_break/> Archivo de ejemplo:

    /dev/nvme0n1p1 / xfs defaults,noatime 1 1

    Nota: Sustituye /dev/nvme0n1p1 por el UUID. Asegúrate de sustituir todos los nombres de dispositivo del archivo /etc/fstab por el UUID.

  6. Para comprobar que has actualizado correctamente el archivo, vuelve a usar el siguiente comando:

    cat /etc/fstab

    En el resultado, comprueba si UUID muestra el UUID.<br id=hardline_break/> Resultado de ejemplo:

    UUID=123456-1234-1234-acbd-1234abc1234 / xfs defaults,noatime 1 1

Volver a cambiar el tipo de instancia a Nitro

Cambia la instancia por una instancia basada en Nitro.

Nota: Si actualizas a la instancia basada en Nitro más reciente y utilizas un kernel o un controlador obsoletos, es posible que la instancia no supere la comprobación de estado. Como resultado, recibirás errores de arranque y errores “kernel panic”, o bien la instancia dejará de estar accesible. Para solucionar este problema, consulta ¿Cómo puedo resolver el error “«Kernel panic - not syncing” en mi instancia de EC2?

OFICIAL DE AWSActualizada hace 6 meses