ECS Travada Após Migração
V1.0 – Julho 2024
Versão | Autor | Descrição |
---|---|---|
V1.0 – 2024-07-30 | Diogo Hatz 50037923 | Versão Inicial |
V1.0 – 2024-07-30 | Wisley da Silva 00830850 | Revisão do Documento |
Introdução
O SMS é um serviço de migração de máquinas virtuais disponibilizado na Huawei Cloud. Com esse serviço, é possível migrar VMs de outras provedoras cloud ou de ambientes on-premises para a nuvem. O SMS migra máquinas virtuais para ECSs, que correspondem ao serviço de máquinas virtuais na Huawei Cloud.
Este documento tem como objetivo apresentar uma solução para VMs migradas utilizando o serviço de migração SMS em que não é possível nem acessar a máquina através do “remote login”, pelo console, e nem por acesso remoto através de protocolos como o SSH.
Considerações
Importante: É possível que inúmeros fatores distintos causem o congelamento de ECSs após a sua migração por meio do SMS. Neste documento será abordada a questão de compatibilidade de certas versões do cloud-init com o serviço de ECS, que é um dos fatores que pode causar o congelamento da ECS.
Sintomas
Ao tentar acessar a ECS por meio de “remote login” ou SSH, os seguintes erros ocorrem:
ECS temporária
Como a ECS não pode ser acessada, será necessário remover o seu disco de sistema e o acoplar a uma ECS temporária para poder acessar o seu menu de boot. Para isso, primeiramente, crie uma ECS temporária com o mesmo sistema operacional e mesma AZ da máquina congelada. Após isso, remova o disco de sistema da ECS congelada e o coloque na ECS temporária como um disco de dados.
Removendo o disco de sistema da ECS congelada:
Acoplando o disco de sistema da ECS congelada na ECS temporária como um disco de dados:
Após isso, acesse remotamente a ECS temporária e use o comando “fdisk -l” para listar os discos acoplados na máquina.
Ao identificar o disco que foi acoplado à ECS temporária, realize a montagem do disco com o comando mount. Por exemplo: “mount /dev/vdb1 /mnt”.
Feito a montagem, realize os seguintes passos:
-
Delete o arquivo de configurações do grub com o comando:
-
rm /mnt/boot/grub/grub.cfg
-
Copie o kernel genérico da ECS temporária para o diretório /boot da ECS congelada:
cp /boot/vmlinuz-5.4.0-170-generic /mnt/boot/vmlinuz-5.4.0-170-generic
Importante: O nome do kernel utilizado foi somente um exemplo, é necessário copiar o kernel utilizado pela ECS temporária. Em caso de dúvida, utilize o comando “uname -r” para listar a versão do kernel em execução.
-
Copie o initrd da ESC temporária para o diretório /boot da ECS congelada:
cp /boot/initrd.img-5.4.0-170-generic /mnt/boot/initrd.img-5.4.0-170-generic
Importante: Copie o initrd relativo ao kernel copiado no item 2.0. Caso não haja nenhum initrd, gere um com o comando “update-initramfs -u”.
Remova o disco de dados com o comando “umount /dev/vdb1”.
Feito isso, coloque o disco de sistema da ECS congelada de volta na ECS original, seguindo o passo-a-passo do item 4.0 deste documento. Feito isso, inicie a máquina e faça “remote login” nela através do console.
Grub shell
Execute o comando “ls” para listar as partições de disco vistas pelo Grub. Para identificar qual é a partição correta a ser utilizada, execute o comando “ls (hd0,gpt1)/” até encontrar a partição com o conteúdo do disco de sistema, substituindo “hd0,gpt1” pelas partições vistas pelo comando “ls”.
Ao encontrar a partição correta, efetue os seguintes passos para dar boot em modo single-user no kernel da ECS temporária:
- Substituindo (hd0,gpt1) pela partição encontrada acima;
set root=(hd0,gpt1)
- Substituindo “vmlinuz-5.4.0-170-generic” pelo kernel copiado da ECS temporária no item 4.0 deste documento e substituindo “vda1” de acordo com a partição encontrada. Exemplo: (hd0,gp1) = vda1, (hd1,gpt1) = vdb1, (hd3,gpt2) = /dev/vdd2, e assim por diante;
linux /boot/vmlinuz-5.4.0-170-generic root=/dev/vda1 ro single
- Substituindo “initrd.img-5.4.0-170-generic” pelo initrd copiado da ECS temporária no item 4.0 deste documento;
initrd /boot/initrd.img-5.4.0-170-generic
- Finalize dando boot.
boot
Após digitar o comando boot, a ECS será inicializada em modo single-user. Digite a senha root da ECS quando requisitado.
Single-user
Utilize o comando “apt-get remove cloud-init -y” para desinstalar o cloud-init.
Utilize o comando “update-grub” para gerar o arquivo de configurações do grub previamente deletado.
Utilize o comando “grep ‘menuentry ‘ /boot/grub/grub.cfg” para listar as versões do kernel existentes no sistema e copie a versão desejada para que o Grub dê boot por padrão.
Utilize o comando “vim /etc/default/grub” para modificar o arquivo de configurações do grub. Altere os parâmetros grub_default={nome do kernel copiado acima}, “grub_timeout_style=menu” e “grub_timeout=10”.
Utilize o comando “update-grub” para atualizar o arquivo de configurações do grub novamente.
Utilize o comando “reboot” para reiniciar a ECS. Note que agora a máquina inicializará normalmente.
Configurações
Verifique a conectividade da ECS com o comando “ip a”. Caso a ECS não possua a interface eth0 configurada corretamente, é possível que haja um conflito na configuração do programa netplan. Caso a ECS possua conectividade normalmente, pule a seção 7.1 deste documento.
Netplan
Digite o comando “vim /etc/netplan/50-cloud-init.yaml” para abrir o arquivo de configurações de rede da ECS e adicione a interface eth0 da seguinte forma:
Feito isso, aplique as configurações feitas com o comando “netplan apply”
Caso a conectividade ainda não tenha retornado ao normal, verifique a instalação dos drivers KVM a partir da seguinte documentação: https://support.huaweicloud.com/intl/en-us/usermanual-ims/ims_01_0326.html#ims_01_0326__section1865536911274.
Config
Caso a VM tenha sido migrada da Azure, será necessário alterar os repositórios do Yum da máquina para apontar para o repositório da Huawei:
sed -i 's/azure.archive.ubuntu.com/repo.huaweicloud.com/g' /etc/apt/sources.list
apt autoclean && apt update
Feito a troca dos repositórios, reinstale o cloud-init com o comando:
apt-get install cloud-init
Importante: Não instale a versão 23.3.3 do cloud-init.
Instale uma nova versão do kernel do Linux com o comando:
apt-get install linux-image-generic
Utilize o comando “grep ‘menuentry ‘ /boot/grub/grub.cfg” para listar as versões do kernel existentes no sistema e copie a versão mais recente instalada.
Utilize o comando “vim /etc/default/grub” para modificar o arquivo de configurações do grub. Altere os parâmetros grub_default={nome do kernel copiado acima}.
Utilize o comando “update-grub” para atualizar o arquivo de configurações do grub novamente.
Utilize o comando “reboot” para reiniciar a ECS no kernel atualizado.
Configurações (Opcional)
Além das configurações realizadas acima, também é recomendado que o agente da Azure, que é instalado por padrão em VMs da Azure, seja desinstalado, uma vez que o agente reporta logs para o console da VNC constantemente, o que pode afetar a performance do VNC:
Digite o seguinte comando para desinstalar o agente da Azure:
sudo apt -y remove walinuxagent
apt-get remove -y linux-azure-*
apt-get remove -y *azure
Referências
- Instalação dos drivers KVM: https://support.huaweicloud.com/intl/en-us/usermanual-ims/ims_01_0326.html#ims_01_0326__section1865536911274.