Recupera una VM inaccessibile


Se la tua VM Linux non è accessibile per qualsiasi motivo, puoi provare a recuperarla seguendo questi passaggi.

Ruoli obbligatori

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

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

Questi ruoli predefiniti contengono le autorizzazioni necessarie per ripristinare una VM. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per ripristinare una VM sono necessarie le seguenti autorizzazioni:

  • compute.instances.create sul progetto
  • compute.disks.create sul progetto
  • compute.instances.get sul progetto
  • compute.disks.createSnapshot sui dischi
  • compute.instances.attachDisk sulla nuova VM
  • compute.disks.use su disco
  • compute.instances.start sulla VM nuova e inaccessibile
  • compute.instances.stop sulla 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 root è suddiviso su più dischi, devi creare uno snapshot di ogni disco.
  3. Crea una VM temporanea utilizzando un'immagine pubblica più vicina al sistema operativo della VM inaccessibile. In alcuni casi, un criteri per l'utilizzo di immagini attendibili potrebbe 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 ripristino. Per saperne di più, consulta Impostare i vincoli di accesso alle immagini.
  4. Per ognuno 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 ripristino procedendo 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 fai quanto segue:

      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 ripristino e my-recovery-disk è il disco di avvio dello snapshot della VM inaccessibile. Prendi nota di NAME della VM inaccessibile da utilizzare nel passaggio successivo.

  7. Per ciascuno dei dischi collegati in precedenza alla VM, segui questi passaggi:

    1. Identifica il file system di ogni partizione eseguendo questo 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 sarebbe 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 manca per alcune partizioni, esegui questo comando:

      file -sL /dev/PARTITION_NAME
      

      Sostituisci NAME con il nome della partizione.

      L'output varia a seconda del 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 radice del file system utilizzando il comando chroot, devi anche montare 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 su /rescue. Puoi navigare nel file system, modificare i file di configurazione, risolvere i problemi o recuperare i dati.

Annulla le modifiche e riavvia la VM inaccessibile

Dopo aver risolto il problema o recuperato i dati, devi ripristinare la VM effettiva. Per ripristinare la VM originale:

  1. Smonta il disco aggiuntivo montato in /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 scollegare il disco creato nei passaggi precedenti 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 arrestato, quindi fai clic 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. Successivamente, fai clic su CONFIGURA DISCO DI AVVIO per collegare il disco che hai creato e corretto in precedenza in Recuperare 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 utilizzando SSH.