Risoluzione dei problemi di avvio delle VM

Questo documento include informazioni per la risoluzione dei problemi relativi all'avvio di una VM a causa di errori di quota dischi di avvio.

Errori di quota

Se ricevi un errore di quota quando provi ad avviare devi richiedere una quota CPU aggiuntiva. Per ulteriori informazioni, vedi nella sezione Istanze VM di la documentazione sulle quote delle risorse.

Dischi di avvio

Se la tua istanza non si avvia e non riesci a connetterti all'istanza o ad accedere attraverso la console seriale interattiva, identificare il motivo per cui il disco non completano il processo di avvio.

Identifica il motivo per cui il disco di avvio non si avvia

  • Verifica che il disco di avvio non sia pieno.

    Se il disco di avvio è completamente pieno ma il sistema operativo non che supportano il ridimensionamento automatico, non potrai connetterti all'istanza. Devi creare una nuova istanza e ricreare il disco di avvio. Per ulteriori informazioni informazioni, consulta la sezione Recupero VM o dischi di avvio completi.

  • Esamina l'output della porta seriale dell'istanza di macchina virtuale.

    Il BIOS, il bootloader e il kernel di un'istanza stampano i messaggi di debug l'output della porta seriale dell'istanza, che fornisce preziose informazioni errori o problemi riscontrati dall'istanza. Se attivi la porta seriale di output logging in Cloud Logging, puoi accedere a queste informazioni anche quando l'istanza non in esecuzione.

  • Abilita l'accesso interattivo alla console seriale.

    Puoi abilitare l'accesso interattivo alla console seriale di un'istanza, in modo da può accedere ed eseguire il debug dei problemi di avvio dall'interno dell'istanza senza richiedere l'avvio completo dell'istanza. Per ulteriori informazioni, consulta la sezione Risoluzione dei problemi. utilizzando la console seriale.

  • Verifica che la clonazione del disco di avvio non sia in corso

    Se cloni del disco di avvio è in corso, non puoi avviare la VM e viene visualizzato un errore in modo simile al seguente.

    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'
    

    Attendi il completamento del clone, quindi avvia la VM.

  • Verifica che non sia in corso lo snapshot del disco di avvio

    Se uno snapshot del disco di avvio è in corso, non puoi avviare la VM e viene visualizzato un errore simile al seguente:

    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'
    

    Attendi il completamento dello snapshot, quindi avvia la VM.

  • Verifica che sul disco sia presente un file system valido.

    Se il file system è danneggiato o non è comunque valido, non potrai avviare l'istanza. Convalida il file system del disco:

    1. Scollega il disco in questione da tutte le istanze a cui è collegato, se applicabile:

      gcloud compute instances delete old-instance --keep-disks boot
      
    2. Avvia una nuova istanza con l'ultima immagine fornita da Google:

      gcloud compute instances create debug-instance
    3. Collega il disco come disco non di avvio, ma non montarlo. Sostituisci DISK con il nome del disco che non si avvia. Prendi nota del nome del dispositivo identifica il disco sull'istanza:

      gcloud compute instances attach-disk debug-instance \
          --disk DISK \
          --device-name debug-disk
      
    4. Connettiti all'istanza:

      gcloud compute ssh debug-instance
      
    5. Cerca la partizione principale del disco, identificata con Notazione part1. In questo caso, la partizione radice del disco si trova /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. Esegui un controllo del file system sulla partizione principale:

      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. Montare il file system:

       sudo mkdir /mydisk
      
       sudo mount /dev/sdb1 /mydisk
      
    8. Verifica che sul disco siano presenti file kernel:

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

  • Verifica che sul disco sia presente un master boot record (MBR) valido.

    Esegui questo comando sull'istanza di debug a cui è collegata disco di avvio permanente, ad esempio /dev/sdb:

    sudo parted /dev/sdb print
    

    Se il file MBR è valido, elenca le informazioni sul file system:

    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
    

Correggi il problema di avvio

Dopo aver identificato gli errori dei processi di avvio e avvio, puoi risolvi il problema completando una delle seguenti azioni:

Creazione di un disco di avvio autonomo

Monta l'immagine importata su un disco secondario collegato a una VM temporanea in esecuzione in un'istanza Compute Engine. Utilizza la console Google Cloud o gcloud CLI per creare un disco autonomo dall'immagine che hai caricato e creare un VM con il disco autonomo collegato. Puoi utilizzare questa istanza per modificare i file sul disco autonomo e risolvi i problemi che non consentono l'avvio dell'immagine.

Console

Crea un disco autonomo dall'immagine disco di avvio che hai importato. In alternativa, puoi scollegare un disco di avvio da un'istanza e creare utilizzando il disco di avvio scollegato.

  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.

Crea un'istanza temporanea in cui collegare il disco autonomo e configurare il bootloader in modo che funzioni in una console Google Cloud completamente gestito di Google Cloud.

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze

  2. Fai clic sul pulsante Crea istanza.

  3. Nella pagina Crea un'istanza, specifica un nome istanza e una zona in cui individuare l'istanza. La zona deve essere la stessa in cui hai creato il disco autonomo.

  4. Espandi la sezione Gestione, sicurezza, dischi, networking, single-tenancy.

  5. Nella scheda Dischi della sezione Dischi aggiuntivi, fai clic su Collega un disco esistente. Viene visualizzata una nuova sezione.

  6. Nella sezione Disco, seleziona il disco autonomo che hai creato. dall'elenco a discesa. In questo modo il disco autonomo viene collegato all'istanza, così puoi montarlo e di modificare i contenuti del disco in un secondo momento.

  7. Fai clic su Fine per completare il collegamento del disco.

  8. Fai clic sul pulsante Crea per creare l'istanza.

gcloud

Crea un disco autonomo dall'immagine disco di avvio che hai importato. In alternativa, puoi scollegare un disco di avvio da un'istanza e creare utilizzando il disco di avvio scollegato.

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

Sostituisci quanto segue:

  • DISK_NAME: il nome del nuovo disco autonomo.

  • ZONE: una zona nelle vicinanze. Devi utilizzare nella stessa zona quando crei l'istanza temporanea.

  • IMAGE_NAME: il nome dell'immagine disco di avvio che hai importato.

Crea un'istanza temporanea in cui collegare il disco autonomo e configurare il bootloader in modo che funzioni in una console Google Cloud completamente gestito di Google Cloud.

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

Sostituisci quanto segue:

  • INSTANCE_NAME: un nome univoco per la tua istanza

  • ZONE: la zona in cui hai creato la versione autonoma disco

  • DISK_NAME: il nome del disco autonomo che creata dall'immagine disco di avvio importata

Dopo aver creato l'istanza con il disco autonomo collegato, avrai a disposizione in cui puoi modificare il bootloader della versione l'immagine disco di avvio.

Configurazione del disco di avvio

Connettiti all'istanza, monta il disco autonomo e configura il bootloader in modo che si avvii correttamente in Compute Engine.

  1. Connettiti all'istanza temporanea mediante SSH nel browser o Comando gcloud compute ssh.
  2. Utilizza il comando blkid per identificare il disco che vuoi modificare e le partizioni che devi montare. In questo esempio, /dev/sdb è il che hai importato.

    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. Monta la partizione root dal disco autonomo alla directory /tmp. In questo esempio /dev/sdb1 è la partizione radice e le altre partizioni non richiedono alcuna modifica. Lo schema di partizione potrebbe richiedere montare più partizioni prima di poter accedere a tutti i file che devono cambiare.

    sudo mount /dev/sdb1 /tmp
    
  4. Modifica i file che potrebbero causare la mancata riuscita del processo di avvio del disco. Per ulteriori informazioni informazioni, consulta le istruzioni per la configurazione del bootloader.

  5. Smonta il disco di avvio dall'istanza temporanea.

    sudo umount /tmp
    

Utilizzo del disco di avvio

Quando hai completato la configurazione del disco, scollegalo e usalo come avvio il disco per la nuova istanza.

Console

Scollega il disco autonomo dall'istanza temporanea.

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze

  2. Nell'elenco delle istanze, fai clic sul nome dell'istanza temporanea in cui hai modificato il disco di avvio autonomo. Dettagli dell'istanza si apre una pagina.

  3. Nella parte superiore della pagina dei dettagli dell'istanza, fai clic su Modifica.

  4. In Dischi aggiuntivi, fai clic sulla X accanto alla per indicare che vuoi scollegarlo un'istanza temporanea.

  5. Fai clic su Salva per salvare le modifiche.

Utilizza il disco autonomo scollegato per creare un'istanza.

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze

  2. Fai clic sul pulsante Crea istanza.

  3. Nella pagina Crea un'istanza, specifica un nome istanza e una zona in cui individuare l'istanza. La zona deve essere la stessa in cui hai creato il disco autonomo.

  4. In Disco di avvio, fai clic su Cambia per iniziare la configurazione sul disco di avvio.

  5. Nella scheda Dischi esistenti, scegli il disco di avvio autonomo da utilizzare come disco di avvio per la nuova istanza.

  6. Fai clic sul pulsante Crea per creare l'istanza.

gcloud

Scollega il disco autonomo dall'istanza temporanea.

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

Sostituisci quanto segue:

  • INSTANCE_NAME: un nome univoco per la tua istanza.
  • DISK_NAME: il nome del nuovo disco autonomo.

Utilizza il disco autonomo scollegato per creare un'istanza.

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

Sostituisci quanto segue:

  • INSTANCE_NAME: un nome univoco per la tua istanza
  • ZONE: la zona in cui si trova il disco autonomo localizzato
  • DISK_NAME: il nome del disco autonomo che creata dall'immagine disco di avvio importata

Testa l'istanza che hai creato utilizzando il disco di avvio modificato. Se non è ancora in grado di connettersi all'istanza, visualizza l'output della porta seriale per identificare il punto in cui il processo di avvio non funziona. Ripeti il passaggio procedura di risoluzione dei problemi finché non correggere i problemi relativi all'immagine disco di avvio.