Ir para o conteúdo

Por que minha instância Linux do EC2 entra no modo de emergência quando tento inicializá-la?

6 minuto de leitura
0

Quando inicializo minha instância Linux do Amazon Elastic Compute Cloud (Amazon EC2), ela entra no modo de emergência, e o processo de inicialização falha. Em seguida, a instância fica inacessível.

Breve descrição

Uma instância pode ser inicializada no modo de emergência pelos seguintes motivos:

  • Há um kernel corrompido na instância que causa um erro de pânico de Kernel.
  • Há falhas de montagem automática devido a entradas incorretas no arquivo /etc/fstab que causam erros de falha de dependência.

Para identificar o tipo de erro, verifique a saída do console da instância.

Resolução

Erros de pânico de kernel

Se houver um problema com o kernel, você receberá uma mensagem de erro semelhante ao exemplo a seguir:

“Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,1)”

Erros de pânico de kernel ocorrem quando a configuração do grub ou o arquivo initramfs estão corrompidos. Para solucionar esse problema, conclua as seguintes etapas:

  1. Reverta o kernel para um kernel anterior estável.
  2. Reinicialize a instância.
  3. Corrija os problemas listados na mensagem de erro no kernel corrompido.

Erros de falha de dependência

Erros de falha de dependência ocorrem quando erros de sintaxe no arquivo /etc/fstab causam falhas na montagem automática. O erro também ocorre quando o volume do Amazon Elastic Block Store (Amazon EBS) listado no arquivo se desconecta da instância. Você recebe uma mensagem de erro semelhante ao seguinte exemplo:

“[[1;33mDEPEND[0m] Dependency failed for /mnt.

[[1;33mDEPEND[0m] Dependency failed for Local File Systems.

[[1;33mDEPEND[0m]

Dependency failed for Migrate local... structure to the new structure.

[[1;33mDEPEND[0m] Dependency failed for Relabel all filesystems, if necessary.

[[1;33mDEPEND[0m] Dependency failed for Mark the need to relabel after reboot.

[[1;33mDEPEND[0m]

Dependency failed for File System Check on /dev/xvdf.”

No exemplo anterior, o ponto de montagem /mnt apresentou falha ao ser montado durante a sequência de inicialização. Para garantir que a sequência de inicialização não entre no modo de emergência devido a falhas de montagem, adicione as seguintes configurações ao arquivo /etc/fstab:

  • Uma opção nofail para as partições secundárias, como /mnt.
    Observação: a opção nofail garante que a sequência de inicialização não seja interrompida, mesmo que a montagem de um volume ou partição falhe.
  • O 0 que desativa a verificação do sistema de arquivos como a última coluna no arquivo para o ponto de montagem.

Para atualizar o arquivo /etc/fstab, use o console de série do EC2, execute a automação AWSSupport-ExecuteEC2Rescue ou use uma instância de resgate para editar manualmente o arquivo.

Importante: antes de parar e iniciar sua instância, execute as seguintes ações:

Observação: além disso, quando você interrompe ou executa uma instância, o endereço IP público da instância muda. Ao rotear tráfego externo para sua instância, é uma prática recomendada usar um endereço IP elástico em vez de um endereço IP público. Para mais informações, consulte Início e interrupção de instâncias do Amazon EC2.

Usar o Console de Série do EC2
Importante: você não precisa parar e iniciar a instância ao usar o Console de Série do EC2.

Se você ativou o Console de série do EC2 para Linux, poderá usá-lo para solucionar problemas com tipos de instâncias baseadas em Nitro suportadas e instâncias bare metal suportadas. Você não precisa de uma conexão funcional para se conectar à instância quando usar o Console de Série do EC2. Conecte-se ao console de série do EC2 e modifique o arquivo /etc/fstab.

Se você nunca usou o console de série do EC2 antes, certifique-se de cumprir os pré-requisitos. Se sua instância estiver inacessível e você ainda não tiver configurado o acesso ao console de série, não poderá usar o console de série do EC2 para corrigir o arquivo /etc/fstab.

Executar o documento de automação AWSSupport-ExecuteEC2Rescue

Pré-requisitos: Certifique-se de ter as permissões necessárias do AWS Identity and Access Management (AWS IAM) para usar o AWSSupport-ExecuteEC2Rescue.

Execute o documento de automação AWSSupport-ExecuteEC2Rescue para corrigir automaticamente os problemas de inicialização. Para mais informações, consulte Executar a ferramenta EC2Rescue em instâncias inacessíveis.

Usar uma instância de resgate para editar manualmente o arquivo

Conclua as etapas a seguir:

  1. Abra o console do Amazon EC2.

  2. Escolha Instâncias e selecione a instância que está no modo de emergência.

  3. Interrompa a instância.

  4. Separe o volume raiz do Amazon EBS /dev/xvda ou /dev/sda1 da instância interrompida.

  5. Execute uma instância de resgate na mesma zona de disponibilidade da instância interrompida.

  6. Conecte o volume raiz à instância de resgate como um dispositivo secundário.
    Observação: é possível usar nomes de dispositivos diferentes ao anexar volumes secundários.

  7. Use o SSH para se conectar à instância de resgate.

  8. Para criar um diretório de pontos de montagem para o novo volume que você anexou à instância de resgate, execute o seguinte comando:

    sudo mkdir /mnt/rescue

    Observação: substitua /mnt/rescue pelo seu diretório de pontos de montagem.

  9. Para identificar o nome e a partição do dispositivo de blocos, execute o seguinte comando:

    [root ~]$ lsblk

    Exemplo de saída:

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0    8G  0 disk
    └─xvda1 202:1    0    8G  0 part /
    xvdf    202:80   0  101G  0 disk
    └─xvdf1 202:81   0  101G  0 part
  10. Para montar o volume no diretório de ponto de montagem, execute o seguinte comando:

sudo mount -o nouuid /dev/xvdf1 /mnt/rescue

Observação: substitua /dev/xvdf1 pelo nome do seu dispositivo. Para abrir o arquivo /etc/fstab, execute o seguinte comando:

sudo vi /mnt/rescue/etc/fstab
  1. Edite as entradas em /etc/fstab. O exemplo a seguir mostra dois volumes do Amazon EBS definidos com UUIDs. Ambos os volumes secundários têm a opção nofail adicionada e um 0 como a última coluna para cada entrada:
$ cat /etc/fstab
UUID=e75a1891-3463-448b-8f59-5e3353af90ba  /  xfs  defaults,noatime  1  0
UUID=ce917c0c-9e37-4ae9-bb21-f6e5022d5381  /mnt  ext4  defaults,noatime,nofail  1  0  
  1. Salve o arquivo e execute o seguinte comando para desmontar o volume:
sudo umount /mnt/rescue
  1. Separe o volume da instância de resgate.
  2. Associe o volume à instância original.
  3. Para confirmar que é possível inicializar a instância, execute a instância.