Resolução de problemas de arranque da VM

Este documento inclui informações de resolução de problemas sobre problemas de início da VM devido a erros de quota e discos de arranque.

Erros de quota

Se receber um erro de quota quando tentar iniciar uma instância, tem de pedir uma quota de CPU adicional. Para mais informações, consulte a secção Instâncias de VM da documentação de quotas de alocação do Compute Engine.

Discos de arranque

Se a sua instância não for iniciada e não conseguir estabelecer ligação à mesma nem iniciar sessão através da consola série interativa, identifique o motivo pelo qual o disco de arranque não está a concluir o processo de arranque e inicialização.

Identifique o motivo pelo qual o disco de arranque não está a arrancar

  • Confirme se o disco de arranque não está cheio.

    Se o disco de arranque estiver completamente cheio e o seu sistema operativo não suportar a redimensionamento automático, não vai poder estabelecer ligação à sua instância. Tem de criar uma nova instância e recriar o disco de arranque. Para mais informações, consulte o artigo Recuperar VMs ou discos de arranque completos.

  • Examine o resultado da porta série da instância da máquina virtual.

    O BIOS, o carregador de arranque e o kernel de uma instância imprimem as respetivas mensagens de depuração na saída da porta série da instância, o que fornece informações valiosas sobre quaisquer erros ou problemas que a instância tenha tido. Se ativar o registo de saída da porta série no Cloud Logging, pode aceder a estas informações mesmo quando a instância não estiver em execução.

  • Ative o acesso interativo à consola de série.

    Pode ativar o acesso interativo à consola série de uma instância para poder iniciar sessão e depurar problemas de arranque a partir da instância sem que esta tenha de ser totalmente iniciada. Para mais informações, consulte o artigo Resolução de problemas através da consola série.

  • Verifique se a clonagem do disco de arranque não está em curso

    Se a clonagem do disco de arranque estiver em curso, não pode iniciar a VM e é apresentado 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 da clonagem e, em seguida, inicie a VM.

  • Verifique se a captura instantânea do disco de arranque não está em curso

    Se estiver em curso uma captura de ecrã do disco de arranque, não pode iniciar a VM e é apresentado 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 pela conclusão do instantâneo e, em seguida, inicie a VM.

  • Confirme se o disco tem um sistema de ficheiros válido.

    Se o seu sistema de ficheiros estiver danificado ou for inválido, não pode iniciar a instância. Valide o sistema de ficheiros do disco:

    1. Desanexe o disco em questão de qualquer instância à qual 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 pela Google:

      gcloud compute instances create debug-instance
    3. Anexe o disco como um disco não de arranque, mas não o monte. Substitua DISK pelo nome do disco que não arranca. Tome nota do nome do dispositivo que identifica o disco na instância:

      gcloud compute instances attach-disk debug-instance \
          --disk DISK \
          --device-name debug-disk
      
    4. Associe-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 encontra-se 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 ficheiros 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 o sistema de ficheiros:

       sudo mkdir /mydisk
      
       sudo mount /dev/sdb1 /mydisk
      
    8. Verifique se o disco tem ficheiros do kernel:

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

  • Verifique se o disco tem um registo de arranque principal (MBR) válido.

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

    sudo parted /dev/sdb print
    

    Se o MBR for válido, apresenta informações sobre o sistema de ficheiros:

    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 arranque

Depois de identificar onde o processo de arranque e inicialização está a falhar, pode corrigir o problema concluindo uma das seguintes ações:

Criar um disco de arranque autónomo

Monte a imagem importada num disco secundário associado a uma instância de VM temporária. Use a Google Cloud consola ou a CLI gcloud para criar um disco autónomo a partir da imagem que carregou e criar uma VM temporária com o disco autónomo anexado. Pode usar esta instância para modificar ficheiros no disco autónomo e corrigir problemas que impedem o início dessa imagem.

Consola

Crie um disco autónomo a partir da imagem do disco de arranque que importou. Em alternativa, pode separar um disco de arranque de uma instância e criar a instância com esse disco de arranque separado.

  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 possa anexar o disco autónomo e configurar o carregador de arranque para funcionar num ambiente de Google Cloud consola Google Cloud .

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceda a 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 onde localizar a instância. A zona tem de ser a mesma zona onde criou o disco autónomo.

  4. Expanda a secção Gestão, segurança, discos, trabalhar em rede, arrendamento único.

  5. No separador Discos na secção Discos adicionais, clique em Anexar disco existente. É apresentada uma nova secção.

  6. Na secção Disco, selecione o disco autónomo que criou na lista pendente. Isto anexa o disco autónomo à instância para que o possa montar e modificar o conteúdo do disco mais tarde.

  7. Clique em Concluído para terminar a associação do disco.

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

gcloud

Crie um disco autónomo a partir da imagem do disco de arranque que importou. Em alternativa, pode separar um disco de arranque de uma instância e criar a instância usando esse disco de arranque separado.

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

Substitua o seguinte:

  • DISK_NAME: o nome do novo disco autónomo.

  • ZONE: uma zona perto de si. Tem de usar esta mesma zona quando criar a instância temporária.

  • IMAGE_NAME: o nome da imagem do disco de arranque que importou.

Crie uma instância temporária onde possa anexar o disco autónomo e configurar o carregador de arranque para funcionar num ambiente de Google Cloud consola Google Cloud .

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

Substitua o seguinte:

  • INSTANCE_NAME: um nome exclusivo para a sua instância

  • ZONE: a zona onde criou o disco autónomo

  • DISK_NAME: o nome do disco autónomo que criou a partir da imagem do disco de arranque importada

Depois de criar a instância com o disco autónomo anexado, tem um ambiente virtual onde pode modificar o carregador de arranque a partir da imagem de disco de arranque original.

Configurar o disco de arranque

Ligue-se à instância, monte o disco autónomo e configure o carregador de arranque para que arranque corretamente no Compute Engine.

  1. Estabeleça ligação à instância temporária através do SSH no navegador ou do comando gcloud compute ssh.
  2. Use o comando blkid para identificar o disco que quer modificar e as partições que tem de montar. Neste exemplo, /dev/sdb é o disco que 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 autónomo no diretório /tmp. Neste exemplo, /dev/sdb1 é a partição raiz e as outras partições não requerem modificações. O seu esquema de partição pode exigir que monte várias partições antes de poder aceder a todos os ficheiros que precisa de alterar.

    sudo mount /dev/sdb1 /tmp
    
  4. Editar ficheiros que podem fazer com que o disco falhe o processo de arranque. Para mais informações, consulte as instruções de configuração do carregador de arranque.

  5. Desmonte o disco de arranque da instância temporária.

    sudo umount /tmp
    

Usar o disco de arranque

Quando terminar de configurar este disco, desanexe-o e use-o como o disco de arranque para a nova instância.

Consola

Desassocie o disco autónomo da instância temporária.

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceda a Instâncias

  2. Na lista de instâncias, clique no nome da instância temporária onde modificou o disco de arranque autónomo. É apresentada a página de detalhes da instância.

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

  4. Em Discos adicionais, clique no X junto ao disco autónomo para indicar que o quer desanexar da instância temporária.

  5. Clique em Guardar para guardar as alterações.

Use o disco autónomo desanexado para criar uma instância.

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceda a 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 onde localizar a instância. A zona tem de ser a mesma zona onde criou o disco autónomo.

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

  5. No separador Discos existentes, escolha o disco de arranque autónomo a usar como disco de arranque para esta nova instância.

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

gcloud

Desassocie o disco autónomo 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 a sua instância.
  • DISK_NAME: o nome do novo disco autónomo.

Use o disco autónomo 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 a sua instância
  • ZONE: a zona onde o disco autónomo está localizado
  • DISK_NAME: o nome do disco autónomo que criou a partir da imagem do disco de arranque importada

Teste a instância que criou com o disco de arranque modificado. Se ainda não conseguir estabelecer ligação à instância, veja novamente o resultado da porta série para identificar onde o processo de arranque está a falhar. Repita o processo de resolução de problemas até corrigir os problemas com a imagem do disco de arranque.