Recuperare una VM inaccessibile


Se la VM Linux non è accessibile per qualsiasi motivo, puoi provare a recuperarla seguendo i passaggi che seguono.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per recuperare una VM, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per recuperare una VM. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per recuperare una VM sono necessarie le seguenti autorizzazioni:

  • compute.instances.create nel progetto
  • compute.disks.create nel progetto
  • compute.instances.get nel progetto
  • compute.disks.createSnapshot sui dischi
  • compute.instances.attachDisk sulla nuova VM
  • compute.disks.use su disco
  • compute.instances.start su una VM nuova e inaccessibile
  • compute.instances.stop su una VM nuova e inaccessibile

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Recupera una VM

Se non riesci a connetterti alla VM o se il disco di avvio è pieno, devi creare una VM temporanea per recuperare la VM inaccessibile.

  1. (Facoltativo) Arresta la VM inaccessibile.
  2. Crea uno snapshot dal disco di avvio della VM inaccessibile. Se il file system principale è suddiviso su più dischi, devi acquisire lo snapshot di ogni disco.
  3. Crea una VM temporanea utilizzando un'immagine pubblica più simile al sistema operativo della VM inaccessibile. In alcuni casi, i criteri per l'utilizzo di immagini attendibili potrebbero impedirti di creare dischi di avvio da immagini pubbliche. In questi casi, devi chiedere a un amministratore di rimuovere temporaneamente questa limitazione prima di poter creare una VM di recupero. Per ulteriori informazioni, consulta Impostare limitazioni di accesso alle immagini.
  4. Per ciascuno degli snapshot dei dischi di avvio della VM inaccessibile che hai creato in precedenza, crea un nuovo disco dallo snapshot e collegalo alla VM di recupero nel seguente modo:

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

      Vai a Istanze VM

    2. Fai clic sul nome della VM temporanea che hai creato.

    3. Fai clic su Modifica.

    4. In Dischi aggiuntivi, fai clic su Aggiungi nuovo disco e poi:

      1. Aggiungi il nome del disco, ad esempio my-recovery-disk
      2. In Tipo di origine, seleziona la scheda Snapshot.
      3. Nel menu a discesa Snapshot di origine, seleziona lo snapshot della VM di origine che hai creato in precedenza in questi passaggi.
      4. Fai clic su Fine.
    5. Fai clic su Salva.

  5. Connettiti alla VM temporanea tramite SSH.

  6. Identifica il nome di ciascuno dei dischi che hai collegato in precedenza alla VM eseguendo il seguente comando:

    lsblk -d -o NAME,SERIAL

    L'output è simile al seguente:

     NAME SERIAL
     sda  rescue-vm
     sdb  my-recovery-disk
     

    In questo esempio, rescue-vm è il disco di avvio della VM di recupero e my-recovery-disk è il disco di avvio dello snapshot della VM inaccessibile. Prendi nota del NAME della VM inaccessibile da utilizzare nel passaggio successivo.

  7. Per ciascuno dei dischi collegati in precedenza alla VM, svolgi quanto segue:

    1. Identifica il file system di ogni partizione eseguendo il seguente comando:

      fdisk -l /dev/NAME -o Device,Size,Type
      

      Sostituisci NAME con il nome del disco di avvio della VM inaccessibile del passaggio precedente. In questo esempio, il nome sarà sdb.

      L'output è simile al seguente:

      Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
      Disk model: PersistentDisk
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 4096 bytes
      I/O size (minimum/optimal): 4096 bytes / 4096 bytes
      Disklabel type: gpt
      Disk identifier: B31430F1-F041-4555-96B9-B2F43DC057AD
      
      Device     Size Type
      /dev/sdb1    2M BIOS boot
      /dev/sdb2   20M EFI System
      /dev/sdb3   10G Linux filesystem
      

      La colonna Type elenca il file system di ogni partizione. Se il tipo di file system non è presente per alcune partizioni, esegui il seguente comando:

      file -sL /dev/PARTITION_NAME
      

      Sostituisci NAME con il nome della partizione.

      L'output varia in base al tipo di file system:

      • Nessun file system: se l'output mostra solo data, la partizione non contiene un file system. Output di esempio:

        /dev/sdb1: data
        
      • File system EFI: se l'output descrive un settore di avvio DOS/MBR, la partizione ha un file system EFI. Output di esempio:

        dev/sdb2: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors
        4, root entries 512, sectors 40960 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 40, sectors/
        track 32, heads 64, serial number 0xf2af2664, label: "EFI        ", FAT (16 bit)
        
      • File system Linux: se l'output descrive i dati del file system, la partizione è un file system Linux. Output di esempio:

        /dev/sdb3: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
        

      Prendi nota del nome della partizione del file system Linux.

    2. Crea un punto di montaggio in /rescue:

      sudo mkdir /rescue
    3. Monta la partizione del file system Linux su /rescue:

      sudo mount PARTITION_NAME /rescue
      

      Sostituisci PARTITION_NAME con il nome del file system Linux che hai annotato in precedenza.

    4. Se vuoi modificare la directory principale del file system utilizzando il comando chroot, devi montare anche il file system virtuale e i dispositivi eseguendo i seguenti comandi:

      sudo mount -t proc /proc /rescue/proc
      sudo mount -t sysfs /sys /rescue/sys
      sudo mount -o bind /dev /rescue/dev
      sudo mount -o bind /dev/pts /rescue/dev/pts
      sudo mount -o bind /run /rescue/run
      

    Il file system del disco di avvio inaccessibile è ora montato in /rescue. Puoi navigare nel file system, modificare i file di configurazione, risolvere i problemi o recuperare i dati.

Ripristina le modifiche e riavvia la VM inaccessibile

Una volta risolto il problema o recuperati i dati, devi ripristinare la VM effettiva. Per ripristinare la VM originale:

  1. Smonta il disco aggiuntivo montato su /rescue nella VM temporanea:

     cd ~
     sudo umount /rescue

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

    Vai a Istanze VM

    1. Seleziona la VM temporanea che hai creato.

    2. Fai clic su Modifica.

    3. In Dischi aggiuntivi, fai clic su per il disco creato nei passaggi precedenti per scollegare il disco aggiuntivo dalla VM temporanea.

    4. Fai clic su Salva.

  3. Vai alla pagina Istanze VM nella console Google Cloud.

    Vai a Istanze VM

    1. Se la VM inaccessibile è ancora in esecuzione, arrestala.

    2. Fai clic sul nome della VM che hai appena interrotto e poi su Modifica.

    3. In Disco di avvio, fai clic su Scollega disco di avvio per scollegare il disco di avvio esistente dalla VM inaccessibile.

    4. Poi, fai clic su CONFIGURA BOOT per collegare il disco che hai creato e riparato in precedenza in Recupero di una VM in questa pagina.

      1. Nella sezione Disco di avvio, fai clic sulla scheda Dischi esistenti.
      2. Nell'elenco a discesa, seleziona il disco creato nella sezione precedente, ad esempio my-recovery-disk.
      3. Fai clic su Seleziona e poi su Salva.
    5. Avvia la VM.

  4. Ora dovresti essere in grado di connetterti alla VM tramite SSH.