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 instance. Pour plus d'informations sur l'arrêt et la suspension d'une VM, consultez la section Cycle de vie des instances.

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. 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 dimensionnement.

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.

Une VM arrêtée n'entraîne pas de frais, mais toutes les ressources associées à la VM continueront d'être facturées. Par exemple, vous serez toujours facturé pour les disques persistants et les adresses IP externes, même si une VM est arrêtée. 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.

Si vous devez conserver le système d'exploitation invité et l'état de l'application, suspendez plutôt l'instance.

Avant de commencer

Restrictions

Vous ne pouvez pas arrêter une VM à laquelle un disque SSD local est associé. Si la VM dispose d'un disque SSD local, Compute Engine ne vous empêchera pas d'arrêter une VM à partir du système d'exploitation invité. Vous devez migrer vos données critiques du disque SSD local vers un disque persistant ou vers une autre VM avant de supprimer complètement l'instance. Compute Engine ne vous empêche pas d'arrêter le système d'exploitation invité sur une VM associée à un disque SSD local. Redoublez donc de vigilance.

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 machine virtuelle, telles que les adresses IP statiques et les disques persistants, sont facturées jusqu'à leur suppression.

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

Utilisez la commande instances stop et spécifiez une ou plusieurs VM à arrêter.

gcloud compute instances stop VM_NAME

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

API

Dans l'API, créez une requête POST pour arrêter une VM.

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.

Une fois que la VM est à l'état TERMINATED, vous pouvez redémarrer l'instance ou la supprimer. Si vous ne prévoyez 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. Pour cela, exécutez l'une des commandes suivantes lorsque vous êtes connecté à la machine virtuelle :

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. Elle permet de démarrer une VM arrêtée qui est à l'état TERMINATED.

La méthode start redémarre une VM dont l'état est TERMINATED, alors que les méthodes telles que reset() et sudo reboot ne fonctionnent que sur les VM en cours d'exécution. Presque toutes les VM peuvent être redémarrées, tant que la VM est à l'état TERMINATED.

Console

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

    Accéder à la page "Instances de VM"

  2. Cochez les cases correspondant à la ou aux VM à démarrer.

  3. Cliquez sur Démarrer.

gcloud

Pour démarrer vos VM à l'aide de gcloud compute, procédez comme suit :

gcloud compute instances start VM_NAME

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

API

Dans l'API, envoyez une demande POST à l'adresse URI suivante :

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 dans la méthodeinstances().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

Pour plus d'informations sur cette méthode, consultez la documentation de référence de instances().start.

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. Cliquez sur le nom de la VM à démarrer. La page "Détails de l'instance" s'ouvre.

  3. Cliquez sur le bouton Démarrer. 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

Lorsque vous démarrez la VM, indiquez la clé à l'aide de l'option --csek-key-file et du nom du disque. Si vous utilisez une clé encapsulée en RSA, utilisez le composant gcloud beta :

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

Remplacez l'élément suivant :

  • INSTANCE_NAME : nom de la VM.
  • ENCRYPTION_KEY : clé de chiffrement que vous utilisez pour chiffrer les disques persistants associés à la VM.

API

Dans l'API, créez une requête POST utilisant la méthode instances.startWithEncryptionKey.

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

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • ZONE : zone de l'instance.
  • INSTANCE_NAME : nom de l'instance.
  • 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 à l'instance. Les clés de type rawKey ou rsaEncryptedKey doivent être encodées en base64. Vous devez suivre des étapes supplémentaires pour préparer une clé de type rsaEncryptedKey. Pour plus d'informations, consultez la section sur l'encapsulation de clé RSA.
  • 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.

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 machine virtuelle. 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 effectuer une réinitialisation sur une VM en cours d'exécution, sélectionnez le bouton Réinitialiser dans Cloud Console, exécutez la commande instances reset dans gcloud, ou effectuez une requête POST dans l'API.

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 votre VM à l'aide de gcloud compute, procédez comme suit :

gcloud compute instances reset VM_NAME

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

API

Dans l'API, effectuez une requête POST sur l'URI suivant, en remplaçant le nom du projet, de la zone et de la VM par les valeurs correspondantes :

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 instance à l'aide des bibliothèques clientes, créez une requête utilisant 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

Pour plus d'informations sur cette méthode, consultez la documentation de référence de instances().reset.

Après l'exécution de la commande reset, l'opération de zone suivante renvoie l'état DONE une fois que l'instance a été complètement arrêtée.

Utiliser d'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, semblable à sudo reboot ci-dessus, à 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.
  • gcloud compute instances delete suivie de gcloud compute instances create : il s'agit d'un redémarrage totalement destructif qui initialise la VM avec toutes les informations transmises dans gcloud compute instances create. Vous pouvez ensuite sélectionner de nouvelles images ou d'autres ressources que vous souhaitez utiliser. Il se peut que la VM redémarrée ait une adresse IP différente. Cette méthode peut échanger la machine physique hébergeant la VM.

Étape suivante