Não é possível conectar-se à instância EC2 após converter o Ubuntu 16 PV para o Ubuntu 16 HVM

Não é possível conectar-se à instância EC2 após converter o Ubuntu 16 PV para o Ubuntu 16 HVM

Já se passaram alguns dias e ainda não consigo me conectar à minha nova instância HVM com EC2 rodando Ubuntu 16. Para referência, estou tentando atualizar nosso servidor de uma instância m3 rodando Ubuntu 16 para uma instância C5 rodando Ubuntu 16. Para quase todos os métodos que tentei, consigo chegar ao ponto em que paro minha nova instância C5, desanexei todos os volumes e anexei o volume de origem recém-atualizado como /dev/sda1, mas quando vou me conectar à instância, sempre acabar expirando. A verificação de status da Amazon também falha, pois indica que a instância está inacessível. No entanto, o log do sistema não mostra problemas durante a inicialização.

Eu tentei fazer tudo emesta postagem. eu tenteiesta postagemtambém. Procurei em outros sites e deiesseeesseuma tentativa. Eu até tentei o método de ferramentas de linha de comando ec2 e a conversão de uma AMI do console ec2 (online), mas não consigo iniciar uma instância C5 com a AMI convertida ou a instância irá parar e falhar (no caso de conversão via linha de comando).

A única coisa que realmente consigo pensar que pode estar causando isso é a convenção de nomenclatura para as partições na instância C5. Cada guia que vi usa xvda/xvdf/xvdg. Posso estar errado, mas não tenho essas partições ou discos e, em vez disso, tenho nvme0n1, nvme0n1p1, (a nova raiz HVM), nvme1n1, e nvme1n1p1. Quando tentei o método HVM/source/target disk, eu tinha nvme0n1/nvme0n1p1, nvme1n1(target - onde tudo deveria terminar) e nvme2n1/nvme2n1p1(source - de onde tudo veio, em m3). eu encontreiesta postagem da Amazon sobre nvmeentão não acho que isso deva ser um problema, pois estou apenas usando o disco/partição correto ao usar /mnt/, ou seja. Eu ligo mkdir -p /mnt/target && mount /dev/nvme1n1 /mnt/targetem vez de mkdir -p /mnt/target && mount /dev/xvdf /mnt/target, mas nada até agora funcionou. Minha instância se torna inacessível no momento em que anexei o targetas /dev/sda1.

Então, há algo que estou perdendo ao fazer isso com um disco chamado nvme*? Há alguma outra informação ou algo de depuração que eu possa fornecer para ajudar a entender o problema?

Responder1

Sei que essa pergunta não foi muito vista, mas, por precaução, espero que meus resultados possam ajudar alguém no futuro (talvez até eu na próxima vez que tentar fazer isso). Gostaria de agradecer a Steve E. do suporte da Amazon por me ajudar a migrar minha instância <3

De qualquer forma, houve 2 problemas ao migrar minha instância do Ubuntu 16.04 M3 (PV) para uma instância do Ubuntu 16.04 C5 (HVM). O primeiro problema foi que as novas instâncias C5 usam as novas convenções de nomenclatura, portanto, outros tutoriais sobre migração de PV para HVM não funcionam da mesma maneira. O outro problema foi que minha instância M3 (PV) passou por atualizações para o Ubuntu. Na verdade, eu mudei do Ubuntu 12 -> Ubuntu 14 -> Ubuntu 16 no ano passado. Isso causou um problema em que os arquivos da rede na nuvem não eram gerados e, portanto, minha instância não pôde ser acessada.

De qualquer forma, para migrar uma instância PV do Ubuntu 16.04 para uma instância HVM usando a nova convenção de nomenclatura nvme, faça o seguinte:

Resumo dos pré-requisitos:

  1. Antes de começar, certifique-se de instalar o seguinte em sua instância PV:

    $ sudo apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
    $ sudo apt-get install linux-aws
    
  2. Pare a instância PV eCrie um instantâneodo seu volume raiz,restaurar este instantâneocomo um novo volume EBS na mesma zona de disponibilidade da origem (iniciar a instância PV logo após a criação do snapshot)
  3. Inicie uma nova instância C5 HVM(destino) selecionando o Ubuntu Server 16.04 LTS (HVM) na mesma zona de disponibilidade da instância de origem (mantenha o tamanho do volume raiz do EBS desta nova instância em 8 GB, pois esse volume raiz será usado apenas temporariamente)
  4. Depois que a instância for iniciada,anexe o volumevocê restaurou na etapa 1 (esse é o volume raiz da instância PV) como /dev/sdf(no sistema Ubuntu, o nome será nvme1n1).
  5. Crie um novo volume EBS (em branco)(mesmo tamanho do volume raiz PV de 'fonte') e anexe à instância HVM como /dev/sdg(no sistema Ubuntu, o nome será nvme2n1)

Migração:

Uma vez logado em sua instância, use sudo supara executar todos os comandos como usuário root.

  1. Exiba seus volumes

    # lsblk 
    NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    nvme0n1     259:0    0    8G  0 disk 
    └─nvme0n1p1 259:1    0    8G  0 part /
    nvme1n1     259:2    0  100G  0 disk 
    nvme2n1     259:3    0  100G  0 disk 
    

    nvme0n1é a raiz HVM que você acabou de criar (só para inicializar desta vez) nvme1n1é a raiz PV restaurada (será convertida para HVM) nvme2n1é o volume em branco (receberá a conversão da raiz PV como nvme1n1)

  2. Crie uma nova partição em nvme2n1( nvme2n1p1será criada)

    # parted /dev/nvme2n1 --script 'mklabel msdos mkpart primary 1M -1s print quit'
    # partprobe /dev/nvme2n1
    # udevadm settle
    
  3. Verifique o volume de 'fonte' e minimize o tamanho do sistema de arquivos original para acelerar o processo. Não queremos copiar o espaço livre em disco na próxima etapa.

    # e2fsck -f /dev/nvme1n1 ; resize2fs -M /dev/nvme1n1
    
  4. Duplicar volume de 'origem' para 'destino'

    # dd if=/dev/nvme1n1 of=/dev/nvme2n1p1 bs=$(blockdev --getbsz /dev/nvme1n1) conv=sparse count=$(dumpe2fs /dev/nvme1n1 | grep "Block count:" | cut -d : -f2 | tr -d "\\ ")
    
  5. Redimensione o volume de 'destino' para o máximo:

    # e2fsck -f /dev/nvme2n1p1 && resize2fs /dev/nvme2n1p1
    
  6. Prepare o volume de destino:

    # mount /dev/nvme2n1p1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc
    
  7. chrootpara o novo volume

    # chroot /mnt/
    
  8. Reinstale o grubno volume chroot:

    # grub-install --recheck /dev/nvme2n1
    # update-grub
    

    Saia dochroot

    # exit
    

    Encerre a instância

    # shutdown -h now
    
  9. Após a conversão, você precisa agora fazer o seguinte:

    Desanexe os 3 volumes que você tinha anteriormente na instância HVM. Anexe o último volume que você criou (em branco) como /dev/sda1no console (ele foi anexado anteriormente como /dev/nvme2n1) na instância HVM. Inicie a instância HVM.

A nova instância HVM agora deve inicializar com sucesso e será uma cópia exata da antiga instância PV de origem (se você usou o volume de origem correto). Depois de confirmar que tudo está funcionando, a instância de origem pode ser encerrada.


Atualizando a configuração de rede (opcional)

Agora, as etapas acima funcionarão para a maioria das pessoas aqui. No entanto, o status da minha instância ainda não estava sendo alcançado. O motivo foi porque atualizei o Ubuntu na minha instância, em vez de começar com uma nova imagem. Isso deixou a eth0configuração ativada, um 50-cloud-init.cfgarquivo sem configuração.

Se você já possui o arquivo /etc/network/interfaces.d/50-cloud-init.cfg, poderá acompanhar e atualizar o arquivo, em vez de criar um novo. Suponha também que todos os comandos sejam executados via sudo su.

  1. Encerre a instância, desconecte os volumes e insira a mesma configuração de antes. Anexe o volume de 8 GB como /dev/sda1/e o volume de destino final como /dev/sdf/. Inicie a instância e faça login.

  2. Mount /dev/sdf, que agora deve ser nvme1n1p1feito da seguinte maneira:

    # mount /dev/nvme1n1p1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc
    
  3. Crie ou atualize o arquivo:

    /etc/network/interfaces.d/50-cloud-init.cfg
    

    Com o seguinte:

    # This file is generated from information provided by
    # the datasource.  Changes to it will not persist across an instance.
    # To disable cloud-init's network configuration capabilities, write a file
    # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
    # network: {config: disabled}
    auto lo
    iface lo inet loopback
    
    auto ens5
    iface ens5 inet dhcp
    
  4. Saia chroot( exit), encerre a instância ( shutdown -h now).

  5. Siga o passo 9 de antes!

Você deveria terminar!


Responder2

Obrigado, a dica para configuração de rede funcionou no caso de atualização (Ubuntu 14.04 PV para Ubuntu 18.04 PV). Converti o Ubuntu 18.04 PV atualizado para o Ubuntu 18.04 HVM com um leve ajuste na configuração da rede. Criado um novo /etc/netplan/50-cloud-init.config com a seguinte configuração

network:
    version: 2
    ethernets:
        all-en:
            match:
                name: "en*"
            dhcp4: true
        all-eth:
            match:
                name: "eth*"
            dhcp4: true

informação relacionada