Arrêter et démarrer une VM


Cette page explique comment arrêter et démarrer une instance de machine virtuelle (VM). Notez que Compute Engine utilise STOP et TERMINATE de manière interchangeable. Pour suspendre et réactiver une VM, consultez la page Suspendre et réactiver une VM. Pour en savoir plus sur l'arrêt et la suspension d'une VM, consultez la page Cycle de vie des instances de VM.

Vous pouvez arrêter temporairement une VM si vous n'en avez plus besoin, puis la redémarrer ultérieurement. Une VM arrêtée conserve ses disques persistants, ses adresses IP internes et ses adresses MAC. Cependant, elle arrête le système d'exploitation invité et perd l'état de l'application. Si vous devez conserver le système d'exploitation invité et l'état de l'application, suspendez plutôt la VM. En fait, une VM arrêtée revient à son état de mise sous tension et aucune donnée n'est enregistrée. Arrêtez une VM si vous souhaitez modifier le type de machine, ajouter ou supprimer des disques associés, modifier la configuration minimale de la plate-forme du processeur, ajouter ou supprimer des GPU, ou appliquer des recommandations de types de machines.

Lorsque vous arrêtez une VM, Compute Engine lui envoie le signal d'arrêt ACPI. Les systèmes d'exploitation invités modernes sont configurés de manière à effectuer un arrêt normal avant de s'éteindre en réponse au signal de mise hors tension. Compute Engine attend donc un court instant jusqu'à l'arrêt complet de l'invité, puis transitionne la VM à l'état TERMINATED.

Avant de commencer

Restrictions

Vous ne pouvez pas arrêter et redémarrer une VM avec un disque SSD local associé. Toutefois, si la VM utilise des disques SSD locaux, Compute Engine ne vous empêche pas d'arrêter la VM depuis le système d'exploitation invité. Si vous arrêtez une VM à l'aide de disques SSD locaux via le système d'exploitation invité, vous ne pouvez pas la redémarrer, et les données stockées sur le disque SSD local sont perdues. Assurez-vous de migrer vos données critiques du disque SSD local vers un disque persistant ou vers une autre VM avant de supprimer la VM.

Facturation

Les VM à l'état TERMINATED ne sont pas facturées pour une utilisation à la seconde et ne sont pas comptabilisées dans votre quota régional de processeurs. Toutefois, toutes les ressources associées à la VM, telles que les disques persistants et les adresses IP externes, sont facturées jusqu'à leur suppression. Pour ne plus être facturé pour les ressources associées, vous pouvez reconfigurer une VM arrêtée pour qu'elle ne les utilise plus, puis les supprimer.

Vous pouvez donc choisir d'arrêter les VM que vous n'utilisez pas, et éviter ainsi d'être facturé pour des VM inactives. Lorsque vous êtes prêt, vous pouvez redémarrer les VM avec les mêmes propriétés, métadonnées et ressources de VM.

Arrêter une VM

Pour arrêter une VM, utilisez Google Cloud Console, l'outil gcloud ou l'API Compute Engine.

Console

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

    Accéder à la page "Instances de VM"

  2. Sélectionnez une ou plusieurs VM à arrêter.

  3. Cliquez sur Stop (Arrêter).

gcloud

Pour arrêter des VM, exécutez la commande gcloud compute instances stop, et spécifiez une ou plusieurs VM que vous souhaitez arrêter :

gcloud compute instances stop VM_NAME

Remplacez VM_NAME par le nom de la VM à arrêter.

API

Pour arrêter une VM, envoyez une requête POST à l'aide de la méthode instances.stop :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop

Remplacez l'élément suivant :

  • PROJECT_ID : le projet dans lequel se trouve votre VM.
  • ZONE : zone où se trouve votre VM.
  • VM_NAME : nom de la VM à arrêter.

Une VM à l'état TERMINATED existe toujours avec ses paramètres de configuration et ses métadonnées d'instance, mais elle perd ses données en mémoire et son état de machine virtuelle. Toutes les ressources associées à la VM arrêtée le resteront jusqu'à ce que vous dissociiez manuellement ces ressources ou que vous supprimiez la VM.

Lorsqu'une VM est à l'état TERMINATED, vous pouvez la redémarrer ou la supprimer. Si vous n'envisagez pas de redémarrer la VM, supprimez-la.

Arrêter une VM via le système d'exploitation

Vous pouvez éventuellement arrêter une VM via le système d'exploitation invité à l'aide de la commande sudo shutdown -h now ou sudo poweroff. Utilisez ces commandes pour arrêter une VM qui utilise des disques SSD locaux. Exécutez l'une des commandes suivantes lorsque vous êtes connecté à la VM :

sudo shutdown -h now
sudo poweroff

Redémarrer une VM arrêtée qui n'est pas associée à un disque chiffré

Pour démarrer une VM arrêtée, utilisez la méthode instances().start. Cette méthode démarre une VM arrêtée dont l'état est TERMINATED.

La méthode start redémarre une VM à l'état TERMINATED, tandis que les méthodes telles que reset() et sudo reboot ne fonctionnent qu'avec les VM en cours d'exécution. Presque toutes les VM, y compris les VM préemptives, peuvent être redémarrées si leur état est TERMINATED.

Console

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

    Accéder à la page "Instances de VM"

  2. Sélectionnez une ou plusieurs VM à démarrer.

  3. Cliquez sur Démarrer/Réactiver.

gcloud

Pour démarrer des VM, exécutez la commande gcloud compute instances start, et spécifiez une ou plusieurs VM que vous souhaitez démarrer :

gcloud compute instances start VM_NAME

Remplacez VM_NAME par le nom de la VM à démarrer.

API

Pour démarrer une VM, envoyez une requête POST à l'aide de la méthode instances.start :

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start

Remplacez l'élément suivant :

  • PROJECT_ID : le projet dans lequel se trouve votre VM.
  • ZONE : zone où se trouve votre VM.
  • VM_NAME : nom de la VM à démarrer.

Pour redémarrer votre VM à l'aide des bibliothèques clientes, créez une requête utilisant la méthode instances().start :

def restartInstance(auth_http, gce_service):
  request = gce_service.instances().start(project="myproject", zone="us-central1-a", instance="example-instance")
  response = request.execute(auth_http)

  print response

Redémarrer une VM associée à des disques chiffrés

Si la VM que vous souhaitez redémarrer utilise des clés de chiffrement fournies par le client, vous devez les indiquer lorsque vous essayez de redémarrer cette VM.

Console

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

    Accéder à la page "Instances de VM"

  2. Sélectionnez la VM que vous souhaitez démarrer.

  3. Cliquez sur Démarrer/Réactiver. Une fenêtre s'ouvre dans laquelle vous pouvez spécifier des clés de chiffrement pour les périphériques associés à cette VM.

  4. Spécifiez la clé de chiffrement de chaque disque chiffré associé à cette VM.

  5. Cliquez sur Démarrer pour démarrer la VM.

gcloud

Pour démarrer une VM qui utilise des clés de chiffrement, exécutez la commande gcloud compute instances start avec l'option --csek-key-file. Si vous utilisez une clé encapsulée en RSA, exécutez la commande gcloud beta.

gcloud compute instances start VM_NAME \
    --csek-key-file ENCRYPTION_KEY_FILE

Remplacez l'élément suivant :

  • VM_NAME : nom de la VM à démarrer.
  • ENCRYPTION_KEY_FILE : chemin d'accès relatif au fichier JSON contenant la clé de chiffrement. Cette clé permet de chiffrer les disques persistants associés à la VM. Pour en savoir plus, consultez la section Format du fichier de clé de chiffrement.

API

Pour démarrer une VM qui possède des clés de chiffrement, envoyez une requête POST à l'aide de la méthode instances.startWithEncryptionKey :

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/startWithEncryptionKey
    {
      "disks": [
        {
           "source": "DISK_URL",
           "diskEncryptionKey": {
             "ENCRYPTION_TYPE": "ENCRYPTION_KEY"
           }
        }
      ]
    }
 

Remplacez l'élément suivant :

  • PROJECT_ID : le projet dans lequel se trouve votre VM.
  • ZONE : zone où se trouve votre VM.
  • VM_NAME : nom de la VM à démarrer.
  • DISK_URL : URL de la ressource correspondant au nom complet de la ressource du disque associé qui est chiffré avec une clé de chiffrement fournie par le client.
  • ENCRYPTION_TYPE : type de chiffrement de disque que vous utilisez (rawKey, kmsKeyName ou rsaEncryptedKey). Si vous utilisez le chiffrement rsaEncryptedKey, vous devez utiliser l'API bêta plutôt que l'API v1.
  • ENCRYPTION_KEY : clé de chiffrement que vous utilisez pour chiffrer les disques persistants associés à la VM. Les clés de type rawKey ou rsaEncryptedKey doivent être encodées en base64. Préparez une clé de type rsaEncryptedKey en suivant les instructions de la section Encapsuler une clé RSA.

Réinitialiser une VM

La réinitialisation de votre VM revient à effectuer une réinitialisation matérielle sur votre ordinateur, en appuyant sur un bouton de réinitialisation ou en maintenant enfoncé le bouton Marche/Arrêt. La réinitialisation forcée d'une VM efface le contenu de la mémoire de la machine et rétablit l'état initial de la VM. La VM ne procède pas à un arrêt normal du système d'exploitation invité. Tout au long de ce processus, la VM reste à l'état RUNNING.

Pour réinitialiser une VM en cours d'exécution, utilisez Google Cloud Console, l'outil gcloud ou l'API Compute Engine.

Console

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

    Accéder à la page "Instances de VM"

  2. Sélectionnez une ou plusieurs VM à réinitialiser.

  3. Cliquez sur Réinitialiser.

gcloud

Pour réinitialiser des VM en cours d'exécution, exécutez la commande gcloud compute instances reset, et spécifiez une ou plusieurs VM que vous souhaitez réinitialiser :

gcloud compute instances reset VM_NAME

Remplacez VM_NAME par le nom de la VM à réinitialiser.

API

Pour réinitialiser une VM, envoyez une requête POST à l'aide de la méthode instances.reset :

 POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/reset

Remplacez l'élément suivant :

  • PROJECT_ID : le projet dans lequel se trouve votre VM.
  • ZONE : zone où se trouve votre VM.
  • VM_NAME : nom de la VM à réinitialiser.

Pour réinitialiser votre VM à l'aide des bibliothèques clientes, envoyez une requête à la méthode instances().reset :

def resetInstance(auth_http, gce_service):
  request = gce_service.instances().reset(project="myproject", zone="us-central1-a", instance="example-instance")

  print response

Lorsque vous exécutez la commande reset, l'opération de zone suivante renvoie l'état DONE une fois la VM arrêtée.

Autres méthodes de redémarrage

Vous pouvez également choisir de réinitialiser votre VM à l'aide des méthodes suivantes :

  • sudo reboot (seulement sous Linux) : appelez cette méthode à partir de la VM. Elle efface la mémoire et réinitialise la VM avec les métadonnées, l'image et les disques persistants d'origine. Cette commande ne récupère pas les versions mises à jour de l'image, et la VM conserve la même adresse IP éphémère. Cette méthode revient à redémarrer votre ordinateur.
  • Redémarrer une VM Windows : vous pouvez redémarrer une VM Windows, comme pour sudo reboot dans l'exemple précédent, à l'aide du menu Démarrer. Dans le menu Démarrer, cliquez sur la flèche située à côté du bouton Déconnexion, puis sur Redémarrer.

Étape suivante