Sauver une VM inaccessible


Si votre VM Linux est inaccessible pour une raison quelconque, vous pouvez essayer de la sauver en procédant comme suit :

Rôles requis

Pour obtenir les autorisations nécessaires pour sauver une VM, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour récupérer une VM. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour récupérer une VM :

  • compute.instances.create sur le projet
  • compute.disks.create sur le projet
  • compute.instances.get sur le projet
  • compute.disks.createSnapshot sur les disques
  • compute.instances.attachDisk sur la nouvelle VM
  • compute.disks.use sur le disque
  • compute.instances.start sur une VM nouvelle et inaccessible
  • compute.instances.stop sur une VM nouvelle et inaccessible

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Sauver une VM

Si vous ne pouvez pas vous connecter à votre VM ou si votre disque de démarrage est saturé, vous devez créer une VM temporaire pour sauver la VM inaccessible.

  1. (Facultatif) Arrêtez la VM inaccessible.
  2. Créez un instantané à partir du disque de démarrage de la VM inaccessible. Si le système de fichiers racine est réparti sur plusieurs disques, vous devez créer un instantané de chaque disque.
  3. Créez une VM temporaire à l'aide d'une image publique la plus proche du système d'exploitation de la VM inaccessible. Dans certains cas, un règlement relatif aux images de confiance peut vous empêcher de créer des disques de démarrage à partir d'images publiques. Dans ce cas, vous devez demander à un administrateur de lever temporairement cette restriction avant de pouvoir créer une VM de secours. Pour en savoir plus, consultez la section Définir des contraintes d'accès aux images.
  4. Pour chacun des instantanés des disques de démarrage de la VM inaccessible que vous avez précédemment créés, créez un disque à partir de l'instantané et associez-le à la VM de secours en procédant comme suit:

    1. Dans Google Cloud Console, accédez à la page Instances de VM.

      Accéder à la page "Instances de VM"

    2. Cliquez sur le nom de la VM temporaire que vous avez créée.

    3. Cliquez sur Modifier.

    4. Sous Disques supplémentaires, cliquez sur Ajouter un disque, puis procédez comme suit :

      1. Ajoutez le nom du disque, comme my-recovery-disk.
      2. Pour Type de source, sélectionnez l'onglet Instantané.
      3. Dans le menu déroulant Instantané source, sélectionnez l'instantané de la VM source que vous avez créée précédemment dans ces étapes.
      4. Cliquez sur OK.
    5. Cliquez sur Enregistrer.

  5. Connectez-vous à la VM temporaire à l'aide de SSH.

  6. Identifiez le nom de chacun des disques que vous avez précédemment associés à la VM en exécutant la commande suivante:

    lsblk -d -o NAME,SERIAL

    Le résultat ressemble à ce qui suit :

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

    Dans cet exemple, rescue-vm est le disque de démarrage de la VM de secours et my-recovery-disk est le disque de démarrage de l'instantané de la VM inaccessible. Notez le NAME de la VM inaccessible à utiliser à l'étape suivante.

  7. Pour chacun des disques que vous avez précédemment associés à la VM, procédez comme suit:

    1. Identifiez le système de fichiers de chaque partition en exécutant la commande suivante:

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

      Remplacez NAME par le nom du disque de démarrage de la VM inaccessible de l'étape précédente. Dans cet exemple, le nom serait sdb.

      Le résultat ressemble à ce qui suit :

      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 colonne Type liste le système de fichiers de chaque partition. Si le type de système de fichiers est manquant pour certaines partitions, exécutez la commande suivante:

      file -sL /dev/PARTITION_NAME
      

      Remplacez NAME par le nom de la partition.

      La sortie varie en fonction du type de système de fichiers:

      • Aucun système de fichiers: si la sortie n'affiche que data, la partition ne contient pas de système de fichiers. Exemple de résultat :

        /dev/sdb1: data
        
      • Système de fichiers EFI: si la sortie décrit un secteur de démarrage DOS/MBR, la partition dispose d'un système de fichiers EFI. Exemple de résultat :

        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)
        
      • Système de fichiers Linux: si la sortie décrit des données de système de fichiers, la partition est un système de fichiers Linux. Exemple de résultat :

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

      Notez le nom de la partition du système de fichiers Linux.

    2. Créez un point d'installation à l'emplacement /rescue :

      sudo mkdir /rescue
    3. Installez la partition du système de fichiers Linux sur /rescue:

      sudo mount PARTITION_NAME /rescue
      

      Remplacez PARTITION_NAME par le nom du système de fichiers Linux que vous avez noté précédemment.

    4. Si vous souhaitez modifier le répertoire racine du système de fichiers à l'aide de la commande chroot, vous devez également installer le système de fichiers et les appareils virtuels en exécutant les commandes suivantes:

      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
      

    Le système de fichiers du disque de démarrage inaccessible est maintenant installé dans /rescue. Vous pouvez parcourir le système de fichiers, modifier des fichiers de configuration, résoudre des problèmes ou récupérer les données.

Annuler les modifications et redémarrer la VM inaccessible

Une fois le problème résolu ou les données récupérées, vous devez rétablir la VM réelle. Pour restaurer la VM d'origine, procédez comme suit :

  1. Désinstallez le disque supplémentaire installé dans /rescue dans la VM temporaire :

     cd ~
     sudo umount /rescue

  2. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

    1. Sélectionnez la VM temporaire que vous avez créée.

    2. Cliquez sur Modifier ().

    3. Sous Disques supplémentaires, cliquez sur pour le disque créé précédemment afin de dissocier le disque supplémentaire de la VM temporaire.

    4. Cliquez sur Enregistrer.

  3. Accédez à la page Instances de VM de la console Google Cloud.

    Accéder à la page "Instances de VM"

    1. Si la VM inaccessible est toujours en cours d'exécution, arrêtez-la.

    2. Cliquez sur le nom de la VM que vous venez d'arrêter, puis sur Modifier.

    3. Sous Disque de démarrage, cliquez sur Dissocier le disque de démarrage pour dissocier le disque de démarrage sortant de la VM inaccessible.

    4. Cliquez ensuite sur CONFIGURER LE DISQUE DE DÉMARRAGE pour associer le disque que vous avez créé et corrigé précédemment dans la section sauver une VM de la présente page.

      1. Dans la section Disque de démarrage, cliquez sur l'onglet Disques existants.
      2. Dans la liste déroulante, sélectionnez le disque que vous avez créé dans la section précédente, par exemple my-recovery-disk.
      3. Cliquez sur Sélectionner, puis sur Enregistrer.
    5. Démarrez la VM.

  4. Vous devriez maintenant pouvoir vous connecter à la VM en SSH.