Alterei minha instância Linux do Amazon Elastic Compute Cloud (Amazon EC2) para uma instância baseada no AWS Nitro System. No entanto, agora a instância não inicia.
Breve descrição
Uma instância do Linux do EC2 pode não iniciar após você alterá-la para uma instância baseada em Nitro pelos seguintes motivos:
- Você não ativou o atributo de rede aprimorada enaSupport na instância.
- Você não instalou o driver do Adaptador de rede elástica (ENA) na instância.
- Você não instalou o driver NVMe na instância. Ou você não carregou o módulo NVMe na imagem initramfs da instância.
- Você usou um nome de dispositivo para montar os sistemas de arquivos no arquivo /etc/fstab na inicialização, em vez de um UUID.<br id=hardline_break/>
Observação: os volumes do Amazon Elastic Block Store (Amazon EBS) aparecem como dispositivos NVMe para instâncias baseadas em Nitro. Essa configuração altera os nomes dos dispositivos.
Para resolver problemas de inicialização, altere o tipo de instância de volta para uma instância Xen. Em seguida, use o runbook AWSSupport-MigrateXenToNitroLinux para preparar automaticamente sua instância para migração. Ou verifique e corrija manualmente os pré-requisitos ausentes. Por fim, altere o tipo de instância para uma instância Nitro.
Resolução
Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Altere o tipo de instância de volta para Xen
Importante: para alterar os tipos de instância, você precisa interromper e iniciar a instância.
Configure sua instância para uma interrupção e um início
Observação: além disso, quando você interrompe e inicia uma instância, o endereço IP público da instância muda. É uma prática recomendada usar um endereço IP elástico para rotear tráfego externo para sua instância em vez de um endereço IP público. Se você usa o Amazon Route 53, talvez seja necessário atualizar os registros DNS do Route 53 quando o endereço IP público mudar.
Antes de interromper e iniciar sua instância, realize as seguintes ações:
Altere o tipo de instância
Altere a instância de volta para o tipo de instância Xen para garantir que a instância possa ser iniciada.
Prepare automaticamente sua instância para migração
Para atualizar automaticamente sua instância para atender aos pré-requisitos de migração para o Nitro, execute o runbook AWSSupport-MigrateXenToNitroLinux.
Verifique os pré-requisitos antes de migrar
Ou execute o script nitro_check_script.sh para verificar os pré-requisitos antes de alterar o tipo de instância para Nitro. Para acessar o script, consulte nitro_check_script.sh no site do GitHub. Para obter mais informações sobre o que o script verifica, consulte NitroInstanceChecks no site do GitHub.
Para baixar o script nitro_check_script.sh, execute o seguinte 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 permissão ao seu ambiente para executar o script, execute o seguinte comando:
sudo chmod +x /tmp/nitro_check_script.sh
Para executar o script com permissões de inicialização, execute o seguinte comando:
sudo bash /tmp/nitro_check_script.sh
Observação: execute o script como usuário-raiz ou sudo. Caso contrário, você receberá a mensagem de erro "This script must be run as root".
Com base na saída do script, realize as seguintes ações.
Verifique se você ativou a rede aprimorada e instalou o driver do ENA
Teste se você ativou a rede aprimorada em sua instância. Se a rede aprimorada não estiver ativada, ative a rede aprimorada.
Para verificar se você instalou o driver do ENA, execute o seguinte comando:
sudo modinfo ena |grep -i '^version:' || echo "ENA module not available, try modprobe ena"
Se você não instalou o driver do ENA, instale o driver mais recente. Para obter instruções, consulte Linux kernel driver for Elastic Network Adapter (ENA) family (Driver do kernel do Linux para a família do Adaptador de rede elástica (ENA)) no site do GitHub.
Instale o driver NVMe
Para acessar os volumes NVMe, você deve instalar os drivers NVMe.
Verifique se você usou um nome de dispositivo para pontos de montagem no arquivo /etc/fstab
Conclua as etapas a seguir:
-
Para verificar se você usou um UUID, execute o seguinte comando:
cat /etc/fstab |grep -iP 'uuid|dev/'
Exemplo de saída:
/dev/nvme0n1p1 / xfs defaults,noatime 1 1
Observação: o exemplo de saída usa um nome de dispositivo em vez de um UUID.
-
Se você não usou um UUID, execute o seguinte comando para recuperar o UUID para o nome do dispositivo:
lsblk -f device_name |tail -n 1 |awk '{print $4}'
Observação: substitua device_name pelo nome do seu dispositivo.
-
(Opcional) Antes de editar o arquivo /etc/fstab, é uma prática recomendada executar o seguinte comando para fazer uma cópia do arquivo:
sudo cp /etc/fstab /etc/fstab-`date +%d%m%Y`
-
Execute o comando a seguir para abrir o arquivo /etc/fstab:
cat /etc/fstab
-
Em seguida, substitua o nome do dispositivo pelo UUID.<br id=hardline_break/>
Arquivo de exemplo:
/dev/nvme0n1p1 / xfs defaults,noatime 1 1
Observação: substitua /dev/nvme0n1p1 pelo UUID. Certifique-se de substituir todos os nomes de dispositivos no arquivo /etc/fstab pelo UUID.
-
Para verificar se você atualizou corretamente o arquivo, execute novamente o seguinte comando:
cat /etc/fstab
Na saída, verifique se o UUID mostra o UUID.<br id=hardline_break/>
Exemplo de saída:
UUID=123456-1234-1234-acbd-1234abc1234 / xfs defaults,noatime 1 1
Altere o tipo de instância de volta para Nitro
Altere a instância para uma instância baseada em Nitro.
Observação: se você fizer o upgrade para a instância mais recente do Nitro e usar um kernel ou driver desatualizado, a instância pode falhar na verificação de status. Como resultado, você recebe falhas de inicialização e erros "kernel panic", ou sua instância fica inacessível. Para solucionar esse problema, consulte Como resolvo o erro "Kernel panic - not syncing" na minha instância do EC2?