Dépannage du démarrage des VM

Ce document contient des informations de dépannage concernant les problèmes de démarrage d'une VM liés aux erreurs de quota, aux disques de démarrage et aux scripts de démarrage.

Erreurs de quota

Si vous recevez une erreur de quota lorsque vous essayez de démarrer une instance, vous devez demander un quota de processeurs supplémentaires. Pour en savoir plus, consultez la section Instances de VM du document Quotas de ressources.

Disques de démarrage

Si votre instance ne démarre pas et que vous ne pouvez pas vous y connecter (y compris en passant par la console série interactive), identifiez la raison pour laquelle le disque de démarrage ne termine pas le processus de démarrage.

Identifier la raison pour laquelle le disque de démarrage ne fonctionne pas

  • Vérifiez que le disque de démarrage n'est pas saturé.

    Si votre disque de démarrage est complètement saturé et que votre système d'exploitation n'accepte pas le redimensionnement automatique, vous ne pourrez pas vous connecter à votre instance. Vous devez créer une instance et recréer le disque de démarrage. Consultez la section Récupérer une instance inaccessible ou un disque de démarrage saturé.

  • Vérifiez la sortie du port série de votre instance de machine virtuelle.

    Le BIOS, le bootloader et le noyau d'une instance impriment leurs messages de débogage sur la sortie du port série de l'instance, ce qui représente une source d'informations précieuse sur les erreurs ou problèmes rencontrés par l'instance. Si vous activez la journalisation des données en sortie du port série sur Cloud Logging, vous pouvez accéder à ces informations même lorsque votre instance n'est pas en cours d'exécution.

  • Activez l'accès interactif à la console série.

    Vous pouvez activer l'accès interactif à la console série d'une instance afin de pouvoir vous connecter et résoudre les problèmes de démarrage à partir de l'instance sans nécessiter son démarrage complet. Pour en savoir plus, consultez la page Interagir avec la console série.

  • Vérifiez que le disque dispose d'un système de fichiers valide.

    Si le système de fichiers est corrompu ou présente d'autres problèmes, vous ne pourrez pas lancer votre instance. Validez le système de fichiers du disque :

    1. Dissociez le disque en question des instances auxquelles il est associé, le cas échéant :

      gcloud compute instances delete old-instance --keep-disks boot

    2. Démarrez une nouvelle instance avec la dernière image fournie par Google :

      gcloud compute instances create debug-instance

    3. Associez votre disque en tant que disque non amorçable, mais ne l'installez pas. Remplacez DISK par le nom du disque qui ne démarre pas. Notez le nom de l'appareil qui identifie le disque sur l'instance :

      gcloud compute instances attach-disk debug-instance 
      --disk DISK
      --device-name debug-disk

    4. Connectez-vous à l'instance :

      gcloud compute ssh debug-instance

    5. Recherchez la partition racine du disque, identifiée par la notation part1. Ici, la partition racine du disque est sur /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. Exécutez une vérification du système de fichiers sur la partition racine :

      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. Installez le système de fichiers :

       sudo mkdir /mydisk
      
       sudo mount /dev/sdb1 /mydisk
      
    8. Vérifiez que le disque dispose des fichiers du noyau :

       ls /mydisk/boot/vmlinuz-*
      /mydisk/boot/vmlinuz-3.2.0-4-amd64
      
  • Vérifiez que le disque dispose d'un MBR (enregistrement de démarrage maître) valide.

    Exécutez la commande suivante sur l'instance de débogage à laquelle est associé le disque de démarrage persistant, tel que /dev/sdb :

     sudo parted /dev/sdb print
    

    Si le MBR est valide, les informations sur le système de fichiers doivent être indiquées :

     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
     

Corriger le problème lié au démarrage

Après avoir identifié l'endroit où le processus de démarrage a échoué, corrigez le problème via l'une de ces deux actions :

Créer un disque de démarrage autonome

Installez votre image importée sur un disque secondaire associé à une instance de VM temporaire. Utilisez Cloud Console ou l'outil gcloud pour créer un disque autonome à partir de l'image que vous avez importée et créez une VM temporaire avec le disque autonome associé. Vous pouvez vous servir de cette instance pour modifier des fichiers sur le disque autonome et résoudre les problèmes qui empêchent le démarrage de l'image.

Console

Créez un disque autonome à partir de l'image de disque de démarrage que vous avez importée. Vous pouvez également dissocier un disque de démarrage d'une instance et choisir de créer l'instance à l'aide de ce disque de démarrage dissocié.

  1. Accédez à la page Disques dans Cloud Console.

    Accéder à la page "Disques"

  2. Cliquez sur Créer un disque.
  3. Sur la page Créer un disque, spécifiez les attributs suivants :
    • Zone : Select a zone near you. You must use this same zone when you create your temporary instance.
    • Type de source : Image
    • Image source : Specify the name of the boot disk image that you imported.
  4. Cliquez sur Créer pour créer le disque.

Créez une instance temporaire où vous pourrez associer le disque autonome et configurer le bootloader pour qu'il fonctionne dans un environnement Cloud Console.

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

    Accéder à la page "Instances"

  2. Cliquez sur le bouton Créer une instance.

  3. Sur la page Créer une instance, spécifiez un nom d'instance et une zone dans laquelle l'instance sera située. La zone doit être la même que celle où vous avez créé votre disque autonome.

  4. Développez la section Gestion, sécurité, disques, mise en réseau et location unique.

  5. Dans l'onglet Disques de la section Disques supplémentaires, cliquez sur Associer un disque existant. Une nouvelle section s'affiche.

  6. Dans la section Disque, sélectionnez le disque autonome que vous avez créé dans la liste déroulante. Vous allez ainsi associer le disque autonome à l'instance, et pourrez ensuite l'installer et modifier le contenu du disque.

  7. Cliquez sur OK pour terminer l'association du disque.

  8. Cliquez sur le bouton Créer pour créer l'instance.

gcloud

Créez un disque autonome à partir de l'image de disque de démarrage que vous avez importée. Vous pouvez également dissocier un disque de démarrage d'une instance et choisir de créer l'instance à l'aide de ce disque de démarrage dissocié.

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

Remplacez l'élément suivant :

  • DISK_NAME : nom du nouveau disque autonome.
  • ZONE : une zone à proximité. Vous devez utiliser cette zone lorsque vous créez l'instance temporaire :
  • IMAGE_NAME : nom de l'image du disque de démarrage que vous avez importée.

Créez une instance temporaire où vous pourrez associer le disque autonome et configurer le bootloader pour qu'il fonctionne dans un environnement Cloud Console.

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

Remplacez l'élément suivant :

  • INSTANCE_NAME : nom unique de votre instance.
  • ZONE : zone dans laquelle vous avez créé le disque autonome.
  • DISK_NAME : nom du disque autonome que vous avez créé à partir de l'image du disque de démarrage importé.

Après avoir créé l'instance depuis le disque autonome associé, vous disposez d'un environnement virtuel dans lequel vous pouvez modifier le bootloader à partir de votre image de disque de démarrage d'origine.

Configurer le disque de démarrage

Connectez-vous à l'instance, installez le disque autonome et configurez le bootloader de sorte qu'il démarre correctement sur Compute Engine.

  1. Connectez-vous à l'instance temporaire à l'aide de la fonctionnalité SSH depuis le navigateur ou de la commande gcloud compute ssh.
  2. Utilisez la commande blkid pour identifier le disque que vous souhaitez modifier et les partitions à installer. Dans cet exemple, /dev/sdb correspond au disque que vous avez importé.

    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. Installez la partition racine du disque autonome dans le répertoire /tmp. Dans cet exemple, /dev/sdb1 est la partition racine. Les autres partitions ne nécessitent aucune modification. Votre schéma de partition peut nécessiter le montage de plusieurs partitions avant de pouvoir accéder à tous les fichiers à modifier.

    sudo mount /dev/sdb1 /tmp
    
  4. Modifiez les fichiers susceptibles d'entraîner l'échec du processus de démarrage du disque. Pour plus d'informations, consultez les instructions de configuration du bootloader.

  5. Désinstallez le disque de démarrage de l'instance temporaire.

    sudo umount /tmp
    

Utiliser le disque de démarrage

Lorsque vous avez fini de configurer ce disque, dissociez-le et utilisez-le comme disque de démarrage pour une nouvelle instance.

Console

Dissociez le disque autonome de l'instance temporaire.

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

    Accéder à la page "Instances"

  2. Dans la liste des instances, cliquez sur le nom de l'instance temporaire dans laquelle vous avez modifié le disque de démarrage autonome. La page des détails de l'instance s'affiche.

  3. Cliquez sur Modifier en haut de la page des détails de l'instance.

  4. Sous Disques supplémentaires, cliquez sur X à côté du disque autonome pour indiquer que vous souhaitez le dissocier de l'instance temporaire.

  5. Cliquez sur Enregistrer pour enregistrer les modifications.

Utilisez le disque autonome dissocié pour créer une instance.

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

    Accéder à la page "Instances"

  2. Cliquez sur le bouton Créer une instance.

  3. Sur la page Créer une instance, spécifiez un nom d'instance et une zone dans laquelle l'instance sera située. La zone doit être la même que celle où vous avez créé votre disque autonome.

  4. Sous Disque de démarrage, cliquez sur Modifier pour commencer à configurer le disque de démarrage.

  5. Dans l'onglet Disques existants, choisissez le disque de démarrage autonome à utiliser comme disque de démarrage pour cette nouvelle instance.

  6. Cliquez sur le bouton Créer pour créer l'instance.

gcloud

Dissociez le disque autonome de l'instance temporaire.

gcloud compute instances detach-disk INSTANCE_NAME --disk DISK_NAME

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom unique de l'instance.
  • DISK_NAME : nom du nouveau disque autonome.

Utilisez le disque autonome dissocié pour créer une instance.

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

Remplacez l'élément suivant :

  • INSTANCE_NAME : nom unique de votre instance.
  • ZONE : zone dans laquelle se trouve le disque autonome.
  • DISK_NAME : nom du disque autonome que vous avez créé à partir de l'image du disque de démarrage importé.

Testez l'instance que vous avez créée à l'aide du disque de démarrage modifié. Si vous ne parvenez toujours pas à vous connecter à l'instance, réexaminez la sortie de la console série pour identifier le point de défaillance dans le processus de démarrage. Répétez le processus de dépannage jusqu'à ce que vous ayez corrigé les problèmes liés à l'image de disque de démarrage.

Scripts de démarrage

Les problèmes liés au script de démarrage peuvent être liés à la connectivité réseau avec le serveur de métadonnées :

  • Dans le cas particulier des VM Linux, Compute Engine attend une connexion au serveur de métadonnées avant de tenter d'obtenir de celui-ci des informations telles qu'un script de démarrage ou d'arrêt personnalisé. Si le serveur de métadonnées ne répond pas ou que le réseau n'est pas encore configuré, la VM ne termine pas son démarrage.

  • Pour les VM Linux avec des images antérieures à la version v20160606, la sortie du port série indique "Waiting for metadata server, attempt N", où N correspond au nombre de tentatives effectuées.

    Ce problème peut durer jusqu'à sept minutes en raison d'un problème de réseau transitoire qui se résout de lui-même. Si le problème persiste après sept minutes, recréez votre instance de VM.