Solução de problemas de inicialização da VM


Este documento inclui informações sobre solução de problemas de inicialização de VM devido a erros de cota e discos de inicialização .

Erros de cota

Se você receber um erro de cota ao tentar iniciar uma instância, deverá solicitar uma cota de CPU adicional. Para obter mais informações, consulte a seção Instâncias de VM da documentação sobre Cotas de recursos.

Discos de inicialização

Se sua instância não iniciar e você não conseguir se conectar a ela ou fazer login por meio do console serial interativo, identifique o motivo pelo qual o disco de inicialização não está concluindo o processo de inicialização.

Identifique o motivo pelo qual o disco de inicialização não está inicializando

  • Verifique se o seu disco de inicialização não está cheio.

    Se o seu disco de inicialização estiver completamente cheio e o seu sistema operacional não suportar o redimensionamento automático, você não conseguirá se conectar à sua instância. Você deve criar uma nova instância e recriar o disco de inicialização. Para obter mais informações, consulte Recuperando VMs ou discos de inicialização completos .

  • Examine a saída da porta serial da sua instância de máquina virtual.

    O BIOS, o bootloader e o kernel de uma instância imprimem suas mensagens de depuração na saída da porta serial da instância, fornecendo informações valiosas sobre quaisquer erros ou problemas enfrentados pela instância. Se você ativar o registro de saída da porta serial no Cloud Logging, poderá acessar essas informações mesmo quando a instância não estiver em execução.

  • Habilite o acesso interativo ao console serial.

    Você pode ativar o acesso interativo ao console serial de uma instância para poder fazer login e depurar problemas de inicialização de dentro da instância sem exigir que ela seja totalmente inicializada. Para obter mais informações, consulte Solução de problemas usando o console serial .

  • Verifique se a clonagem do disco de inicialização não está em andamento

    Se a clonagem do disco de inicialização estiver em andamento, você não poderá iniciar a VM e verá um erro semelhante ao seguinte.

    Failed to start example-vm: The instance resource 'projects/example-project/zones/us-central1-b/instances/example-vm' is already being used by 'projects/example-project/zones/us-central1-b/disks/clone'
    

    Aguarde a conclusão do clone e inicie a VM.

  • Verifique se o instantâneo do disco de inicialização não está em andamento

    Se um instantâneo do disco de inicialização estiver em andamento, você não poderá iniciar a VM e verá um erro semelhante ao seguinte:

    The instance resource 'projects/example-project/zones/asia-east1-b/instances/example-vm' is already being used by 'projects/example-project/global/snapshots/example-vm-prod-asia-east1-b-abc'
    

    Aguarde a conclusão do instantâneo e inicie a VM.

  • Verifique se o seu disco possui um sistema de arquivos válido.

    Se o seu sistema de arquivos estiver corrompido ou inválido, você não poderá iniciar sua instância. Valide o sistema de arquivos do seu disco:

    1. Desanexe o disco em questão de qualquer instância à qual ele esteja anexado, se aplicável:

      gcloud compute instances delete old-instance --keep-disks boot
      
    2. Inicie uma nova instância com a imagem mais recente fornecida pelo Google:

      gcloud compute instances create debug-instance
    3. Anexe seu disco como um disco que não seja de inicialização, mas não o monte. Substitua DISK pelo nome do disco que não inicializa. Observe o nome do dispositivo que identifica o disco na instância:

      gcloud compute instances attach-disk debug-instance \
          --disk DISK \
          --device-name debug-disk
      
    4. Conecte-se à instância:

      gcloud compute ssh debug-instance
      
    5. Procure a partição raiz do disco, que é identificada com a notação part1 . Neste caso, a partição raiz do disco está em /dev/sdb1 :

      ls -l /dev/disk/by-id
      total 0
      lrwxrwxrwx 1 root root  9 Jan 22 17:09 google-debug-disk -> ../../sdb
      lrwxrwxrwx 1 root root 10 Jan 22 17:09 google-debug-disk-part1 -> ../../sdb1
      lrwxrwxrwx 1 root root  9 Jan 22 17:02 google-persistent-disk-0 -> ../../sda
      lrwxrwxrwx 1 root root 10 Jan 22 17:02 google-persistent-disk-0-part1 -> ../../sda1
      lrwxrwxrwx 1 root root  9 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk -> ../../sdb
      lrwxrwxrwx 1 root root 10 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk-part1 -> ../../sdb1
      lrwxrwxrwx 1 root root  9 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0 -> ../../sda
      lrwxrwxrwx 1 root root 10 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0-part1 -> ../../sda1
      
    6. Execute uma verificação do sistema de arquivos na partição raiz:

      sudo fsck /dev/sdb1
      fsck from util-linux 2.20.1
      e2fsck 1.42.5 (29-Jul-2012)
      /dev/sdb1: clean, 19829/655360 files, 208111/2621184 blocks
      
    7. Monte seu sistema de arquivos:

       sudo mkdir /mydisk
      
       sudo mount /dev/sdb1 /mydisk
      
    8. Verifique se o disco possui arquivos de kernel:

       ls /mydisk/boot/vmlinuz-*
       /mydisk/boot/vmlinuz-3.2.0-4-amd64
       

  • Verifique se o disco possui um registro mestre de inicialização (MBR) válido.

    Execute o seguinte comando na instância de depuração que possui o disco de inicialização persistente anexado, como /dev/sdb :

    sudo parted /dev/sdb print
    

    Se o seu MBR for válido, ele listará informações sobre o sistema de arquivos:

    Disk /dev/sdb: 10.7GB
    Sector size (logical/physical): 512B/4096B
    Partition Table: msdos
    Disk Flags:
    Number  Start   End     Size    Type     File system  Flags
     1      2097kB  10.7GB  10.7GB  primary  ext4         boot
    

Corrija o problema de inicialização

Depois de identificar onde o processo de inicialização está falhando, você poderá corrigir o problema concluindo uma das seguintes ações:

Criando um disco de inicialização independente

Monte sua imagem importada em um disco secundário anexado a uma instância de VM temporária. Use o console do Google Cloud ou a CLI gcloud para criar um disco autônomo com base na imagem que você enviou e criar uma VM temporária com o disco autônomo anexado. Você pode usar esta instância para modificar arquivos no disco independente e corrigir problemas que fazem com que a imagem falhe ao iniciar.

Console

Crie um disco independente a partir da imagem do disco de inicialização importada. Como alternativa, você pode desanexar um disco de inicialização de uma instância e criar a instância usando esse disco de inicialização desanexado.

  1. In the Google Cloud console, go to the Disks page.

    Go to Disks

  2. Click Create disk.
  3. On the Create a disk page, specify the following attributes:
    • Zone: Select a zone near you. You must use this same zone when you create your temporary instance.
    • Disk source type: Image
    • Source image: Specify the name of the boot disk image that you imported.
  4. To create the disk, click Create.

Crie uma instância temporária onde você possa anexar o disco independente e configurar o bootloader para funcionar em um ambiente do console do Google Cloud.

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Vá para Instâncias

  2. Clique no botão Criar instância .

  3. Na página Criar uma instância , especifique um nome de instância e uma zona na qual localizar a instância. A zona deve ser a mesma onde você criou seu disco independente.

  4. Expanda a seção Gerenciamento, segurança, discos, rede, locatário individual .

  5. Na guia Discos na seção Discos adicionais , clique em Anexar disco existente . Uma nova seção aparece.

  6. Na seção Disco , selecione o disco autônomo que você criou na lista suspensa. Isso anexa o disco independente à instância para que você possa montá-lo e modificar o conteúdo do disco posteriormente.

  7. Clique em Concluído para terminar de anexar o disco.

  8. Clique no botão Criar para criar a instância.

gcloud

Crie um disco independente a partir da imagem do disco de inicialização importada. Como alternativa, você pode desanexar um disco de inicialização de uma instância e criar a instância usando esse disco de inicialização desanexado.

gcloud compute disks create DISK_NAME \
    --zone=ZONE \
    --image=IMAGE_NAME

Substitua o seguinte:

  • DISK_NAME : o nome do novo disco independente.

  • ZONE : uma zona perto de você. Você deve usar essa mesma zona ao criar a instância temporária.

  • IMAGE_NAME : o nome da imagem do disco de inicialização que você importou.

Crie uma instância temporária onde você possa anexar o disco independente e configurar o bootloader para funcionar em um ambiente do console do Google Cloud.

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --disk name=DISK_NAME

Substitua o seguinte:

  • INSTANCE_NAME : um nome exclusivo para sua instância

  • ZONE : a zona onde você criou o disco independente

  • DISK_NAME : o nome do disco independente que você criou a partir da imagem de disco de inicialização importada

Depois de criar a instância com o disco independente anexado, você terá um ambiente virtual onde poderá modificar o carregador de inicialização a partir da imagem do disco de inicialização original.

Configurando o disco de inicialização

Conecte-se à instância, monte o disco independente e configure o carregador de inicialização para que ele inicialize corretamente no Compute Engine.

  1. Conecte-se à instância temporária usando SSH no navegador ou o comando gcloud compute ssh .
  2. Use o comando blkid para identificar o disco que você deseja modificar e as partições que você precisa montar. Neste exemplo, /dev/sdb é o disco que você importou.

    lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   10G  0 disk
    └─sda1   8:1    0   10G  0 part /
    sdb      8:16   0  100G  0 disk
    ├─sdb1   8:17   0   96G  0 part
    ├─sdb2   8:18   0    1K  0 part
    └─sdb5   8:21   0    4G  0 part
    
  3. Monte a partição raiz do disco independente no diretório /tmp . Neste exemplo /dev/sdb1 é a partição raiz e as outras partições não requerem nenhuma modificação. Seu esquema de partição pode exigir que você monte várias partições antes de poder acessar todos os arquivos que precisa alterar.

    sudo mount /dev/sdb1 /tmp
    
  4. Edite os arquivos que podem fazer com que o disco falhe no processo de inicialização. Para obter mais informações, consulte as instruções de configuração do bootloader .

  5. Desmonte o disco de inicialização da instância temporária.

    sudo umount /tmp
    

Usando o disco de inicialização

Quando terminar de configurar este disco, desconecte-o e use-o como disco de inicialização para a nova instância.

Console

Desconecte o disco independente da instância temporária.

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Vá para Instâncias

  2. Na lista de instâncias, clique no nome da instância temporária onde você modificou o disco de inicialização independente. A página de detalhes da instância é aberta.

  3. Na parte superior da página de detalhes da instância, clique em Editar .

  4. Em Discos adicionais , clique no X ao lado do disco autônomo para indicar que deseja desanexá-lo da instância temporária.

  5. Clique em Salvar para salvar suas alterações.

Use o disco independente desanexado para criar uma instância.

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Vá para Instâncias

  2. Clique no botão Criar instância .

  3. Na página Criar uma instância , especifique um nome de instância e uma zona na qual localizar a instância. A zona deve ser a mesma onde você criou seu disco independente.

  4. Em Disco de inicialização , clique em Alterar para começar a configurar seu disco de inicialização.

  5. Na guia Discos existentes , escolha o disco de inicialização independente a ser usado como disco de inicialização para esta nova instância.

  6. Clique no botão Criar para criar a instância.

gcloud

Desconecte o disco independente da instância temporária.

gcloud compute instances detach-disk INSTANCE_NAME \
    --disk name=DISK_NAME

Substitua o seguinte:

  • INSTANCE_NAME : um nome exclusivo para sua instância.
  • DISK_NAME : o nome do novo disco independente.

Use o disco independente desanexado para criar uma instância.

gcloud compute instances create INSTANCE_NAME \
    --zone ZONE \
    --disk name=DISK_NAME,boot=yes

Substitua o seguinte:

  • INSTANCE_NAME : um nome exclusivo para sua instância
  • ZONE : a zona onde o disco independente está localizado
  • DISK_NAME : o nome do disco independente que você criou a partir da imagem de disco de inicialização importada

Teste a instância criada usando o disco de inicialização modificado. Se ainda não conseguir se conectar à instância, visualize a saída da porta serial novamente para identificar onde o processo de inicialização está falhando. Repita o processo de solução de problemas até corrigir os problemas com a imagem do disco de inicialização.