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:
- Reverta o kernel para um kernel anterior estável.
- Reinicialize a instância.
- 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:
-
Abra o console do Amazon EC2.
-
Escolha Instâncias e selecione a instância que está no modo de emergência.
-
Interrompa a instância.
-
Separe o volume raiz do Amazon EBS /dev/xvda ou /dev/sda1 da instância interrompida.
-
Execute uma instância de resgate na mesma zona de disponibilidade da instância interrompida.
-
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.
-
Use o SSH para se conectar à instância de resgate.
-
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.
-
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
-
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
- 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
- Salve o arquivo e execute o seguinte comando para desmontar o volume:
sudo umount /mnt/rescue
- Separe o volume da instância de resgate.
- Associe o volume à instância original.
- Para confirmar que é possível inicializar a instância, execute a instância.