Ce document explique comment suspendre et réactiver une instance de machine virtuelle (VM). Pour en savoir plus sur comment arrêter et démarrer une instance, consultez la page Arrêter et démarrer une instance. Pour en savoir plus sur le cycle de vie des instances, consultez la documentation relative au cycle de vie des instances.
Si vous souhaitez conserver votre instance de VM sans qu'elle ne vous soit facturée lorsqu'elle n'est pas utilisée, vous pouvez la suspendre. Lorsque vous suspendez une VM, Google la conserve dans votre projet et déplace le contenu de sa mémoire vers un espace de stockage. Lorsque la VM est suspendue, Google ne facture que le stockage utilisé pour conserver la mémoire de la VM. Des attributs tels que les adresses IP statiques restent en place afin que les fonctions réseau fonctionnent comme prévu lorsque vous réactivez la VM. Une fois la VM réactivée, Google déplace sa mémoire de l'espace de stockage vers l'instance et commence à vous facturer l'instance de VM en cours d'exécution.
La suspension d'une instance est idéale pour les cas suivants :
- Pour les environnements de développement et de test qui ne sont pas pleinement utilisés pendant les périodes creuses, telles que le soir ou le week-end, pour réduire les coûts ou accélérer l'initialisation plutôt que de créer de nouvelles instances de VM.
- Pour les applications qui nécessitent une longue période d'initialisation après le démarrage de l'instance, mais avant que l'application soit prête à traiter sa première requête, telles que des postes de travail de développeur virtuel ou des applications Java complexes.
Fonctionnement de la suspension
La suspension d'une instance entraîne l'envoi d'un signal ACPI S3 Suspend au système d'exploitation de l'instance. La suspension d'une instance revient à fermer le capot de votre ordinateur portable, causant un état SUSPENDED
.
Voici les différences entre la suspension et l'arrêt d'une instance :
- Les instances suspendues conservent la mémoire de l'OS invité, l'état de l'appareil et l'état de l'application.
- Google facture le stockage nécessaire pour économiser la mémoire de l'instance.
- Vous ne pouvez suspendre une instance que pendant 60 jours. Au-delà de cette période, l'instance passe automatiquement à l'état
TERMINATED
.
Toutes les ressources associées à l'instance le restent et sont facturées, y compris les disques persistants et les adresses IP externes statiques ou réservées. Toutes ces ressources sont facturées conformément à la grille tarifaire, même si une instance est suspendue.
Vous ne pouvez pas suspendre une instance à l'aide des processus standards intégrés à l'environnement invité. Les commandes, telles que la commande systemctl suspend
dans Ubuntu 16.04 ou version ultérieure, ne sont pas disponibles. Vous ne pouvez utiliser que Google Cloud CLI ou REST pour suspendre une instance.
Si vous ne souhaitez pas restaurer l'état de la mémoire et de l'appareil lorsque vous réactivez l'instance, vous pouvez arrêter l'instance pour ne pas avoir à payer de frais de stockage supplémentaires.
Avant de commencer
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
Console
Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Définissez une région et une zone par défaut.
Go
Pour utiliser les exemples Go de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.
Java
Pour utiliser les exemples Java de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.
Node.js
Pour utiliser les exemples Node.js de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.
PHP
Pour utiliser les exemples PHP de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.
Python
Pour utiliser les exemples Python de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
Limites
Les limites suivantes s'appliquent à cette fonctionnalité :
- Vous ne pouvez pas suspendre une instance qui utilise un GPU.
- Vous ne pouvez pas suspendre une instance à l'aide des processus standards intégrés à l'environnement invité. Les commandes, telles que la commande
systemctl suspend
dans Ubuntu 16.04 ou version ultérieure, ne sont pas disponibles. Le signal en mode invité est ignoré. - Vous ne pouvez suspendre une instance que pendant une durée maximale de 60 jours avant l'arrêt automatique de la VM.
- Vous ne pouvez pas suspendre des instances disposant de plus de 208 Go de mémoire.
- Vous pouvez suspendre des instances préemptives, mais celles-ci peuvent être arrêtées avant d'être correctement suspendues.
- Vous ne pouvez pas suspendre une Confidential VM.
- Vous ne pouvez pas suspendre une VM associée à des disques protégés par une CSEK.
Disques SSD locaux
Normalement, la suspension d'une instance de VM utilisant des SSD locaux supprime toutes les données stockées sur ces disques, comme quand on arrête l'instance.
Pour en savoir plus, consultez la documentation sur les SSD locaux.
VM préemptives
Vous pouvez suspendre une VM préemptive. Toutefois, si la préemption (et non l'avertissement préalable précédant la préemption) se produit avant la fin de l'opération de suspension, celle-ci est interrompue et l'instance est préemptée.
Compatibilité de l'OS
La plupart des systèmes d'exploitation proposés sur Compute Engine sont compatibles avec les fonctionnalités de suspension et de réactivation, mais certains ne le permettent pas. Consultez la page Informations sur les systèmes d'exploitation pour obtenir la liste complète.
Tarifs
Lorsque vous suspendez une instance, les éléments suivants vous sont facturés :
- Mémoire de l'instance (consultez les tarifs des instances de VM suspendues)
- Toute utilisation de disque persistant pour le disque de démarrage et les disques supplémentaires associés à l'instance (consultez la section Tarifs des disques persistants)
- Toutes les adresses IP statiques associées à l'instance
- La suspension de VM peut vous permettre de réduire vos frais de licence logicielle. Par exemple, si vous suspendez des VM Windows, les frais de licence Windows ne vous sont pas facturés. Les frais de licence d'autres images peuvent présenter des conditions d'utilisation différentes et entraîner des frais même lorsqu'ils sont suspendus.
Suspendre une instance
Pour suspendre une instance, utilisez la console Google Cloud, gcloud CLI, l'API ou les bibliothèques clientes Cloud.
Vous ne pouvez pas suspendre une instance à l'aide des processus standards intégrés à l'environnement invité. Vous pouvez utiliser la console Google Cloud, Google Cloud CLI ou l'API pour suspendre une instance.
L'opération de suspension peut échouer si elle est déclenchée trop tôt après le démarrage de l'instance. L'instance doit être entièrement démarrée (y compris les processus tels que l'agent invité) pour que l'opération de suspension aboutisse.
Console
Dans Google Cloud Console, accédez à la page Instances de VM.
Sélectionnez une ou plusieurs instances à suspendre.
Cliquez sur Suspendre.
Lorsque vous y êtes invité, sélectionnez Supprimer le contenu des disques SSD locaux si vous souhaitez supprimer les données qu'ils contiennent. Lorsque votre instance est réactivée, toutes les données de disques SSD locaux qui lui sont associées ont été supprimées.
gcloud
Pour suspendre une instance dans Google Cloud CLI, procédez comme suit :
gcloud compute instances suspend VM_NAME
Après que vous avez envoyé une requête pour suspendre une instance, Compute Engine peut prendre un certain temps pour conserver toutes les données nécessaires à l'instance. Pendant cette période, des frais vous seront facturés tant que l'instance reste en cours d'exécution.
Une instance suspendue est indiquée par l'état SUSPENDED
. Pour vérifier l'état d'une instance, envoyez une requête describe
:
gcloud compute instances describe VM_NAME
Pour suspendre une instance qui contient des données de SSD locaux, vous devez fournir l'option --discard-local-ssd
:
gcloud compute instances suspend VM_NAME --discard-local-ssd
L'utilisation de --discard-local-ssd
ou --discard-local-ssd=True
entraîne la suppression du contenu du SSD local. Compute Engine --discard-local-ssd=False
est actuellement disponible en version Preview publique. Utilisez cette option pour enregistrer le contenu de jusqu'à 16 disques SSD locaux au maximum pendant la suspension. Pour en savoir plus, consultez la documentation sur les SSD locaux.
Go
Java
Node.js
PHP
Python
REST
Dans l'API, exécutez une requête à l'aide de la méthode instances.suspend
:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/suspend
Remplacez les éléments suivants :
PROJECT_ID
: ID du projetZONE
: zone de la VMVM_NAME
: instance que vous souhaitez suspendre
Après que vous avez envoyé une requête pour suspendre une instance, Compute Engine peut prendre un certain temps pour conserver toutes les données nécessaires à l'instance. Pendant cette période, des frais vous seront facturés tant que l'instance reste en cours d'exécution.
Compute Engine indique que l'instance est suspendue avec l'état SUSPENDED
. Pour vérifier l'état d'une instance, effectuez une requête GET
:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
L'état de l'instance est visible dans le champ "status" (état). Exemple :
...
"zone": "https://content.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
"status": "SUSPENDED",
"name": "example-vm",
...
Pour suspendre une instance avec plus de {maximum_local_ssd_disks_for_suspend}}disque SSD local, vous devez supprimer les données du SSD local en fournissant le paramètre de requête discardLocalSsd
:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/suspend?discardLocalSsd=true
Réactiver une instance suspendue
Vous ne pouvez réactiver une instance que si la capacité est suffisante dans la zone où se trouve la VM. Dans la plupart des cas, cela ne pose pas de problème. Toutefois, si vous rencontrez des problèmes de capacité, renvoyez votre demande de réactivation ultérieurement.
Pour réactiver une instance suspendue, utilisez la console Google Cloud, gcloud CLI, l'API ou les bibliothèques clientes Cloud.
Console
Dans Google Cloud Console, accédez à la page Instances de VM.
Sélectionnez une ou plusieurs instances à réactiver.
Cliquez sur Démarrer/Réactiver.
gcloud
Pour réactiver une instance dans Google Cloud CLI, procédez comme suit :
gcloud compute instances resume VM_NAME
Après que vous avez envoyé une requête pour réactiver une instance, Compute Engine peut prendre un certain temps pour restaurer toutes les données nécessaires à l'instance. Pendant cette période, des frais vous seront facturés pendant la réactivation de l'instance.
Une instance réactivée porte l'indication RUNNING
. Pour vérifier l'état d'une instance, envoyez une requête "describe" :
gcloud compute instances describe VM_NAME
Go
Java
Node.js
PHP
Python
REST
Envoyez une requête à la méthode instances.resume
.
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/resume
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet pour cette requêteZONE
: zone de la VMVM_NAME
: instance à réactiver
Après que vous avez envoyé une requête pour réactiver une instance, Compute Engine peut prendre un certain temps pour restaurer toutes les données nécessaires à l'instance. Pendant cette période, des frais vous seront facturés pendant la réactivation de l'instance.
Compute Engine indique l'état RUNNING
dès que la réactivation de l'instance est terminée. Pour vérifier l'état d'une instance, envoyez une requête GET
:
GET https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance
L'état de l'instance est visible dans le champ "status" (état). Exemple :
...
"zone": "https://content.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
"status": "RUNNING",
"name": "example-instance",
...
Procédure de suspension
Lorsque vous effectuez une requête de suspension, vous envoyez un signal ACPI de suspension à l'instance de VM. Si la VM ne répond pas au signal ACPI S3 de suspension au bout de quelques minutes, Compute Engine annule la tentative de suspension et renvoie la VM à l'état RUNNING
.
Le tableau suivant décrit l'effet de la suspension d'une instance de VM sur les ressources associées :
Ressource | Assistance |
---|---|
Memory | Seules les VM dont la mémoire est inférieure ou égale à 208 Go peuvent être suspendues. |
SSD local | Les données des disques SSD locaux sont supprimées. |
Disque persistant | Les disques HDD et SSD persistants sont conservés. |
Adresses IP | Les adresses IP éphémères sont libérées pendant la suspension, mais les adresses IP statiques restent associées aux instances de VM. Si vous souhaitez conserver votre ID éphémère, convertissez-le. |
Configuration de la VM (type de machine, métadonnées, libellés, etc.) | Toutes les configurations de la VM autres que les adresses IP éphémères sont conservées et restaurées lorsque l'instance est réactivée. |
Configurer une VM Debian pour la suspension et la réactivation
Les VM exécutant Debian 8 et 9 sont compatibles avec la suspension et la réactivation, mais elles doivent être configurées au préalable. Pour configurer votre instance Debian, suivez l'un des ensembles d'instructions suivants (option A ou option B). Si possible, nous vous recommandons de configurer l'ACPID (option A).
Option A
Cette option configure l'ACPID afin qu'il gère l'événement du bouton de mise en veille et ajoute un script shell pour gérer cet événement.
Connectez-vous à votre instance de VM à l'aide de SSH :
gcloud compute ssh VM_NAME
Sur l'instance de VM, créez un répertoire sous le dossier
acpi
:sudo mkdir -p /etc/acpi/events/
Configurez l'ACPID pour qu'il gère l'événement du bouton de mise en veille :
cat <<EOF | sudo tee /etc/acpi/events/sleepbtn-acpi-support event=button[ /]sleep action=/etc/acpi/sleepbtn-acpi-support.sh EOF
Créez le script de gestion des événements de mise en veille :
cat <<EOF | sudo tee /etc/acpi/sleepbtn-acpi-support.sh #!/bin/sh echo mem > /sys/power/state EOF
Configurez les autorisations pour le script :
sudo chmod 755 /etc/acpi/sleepbtn-acpi-support.sh
Redémarrez l'ACPID :
sudo systemctl restart acpid.service
Option B
Connectez-vous à votre instance de VM à l'aide de SSH :
gcloud compute ssh VM_NAME
Installez
dbus
sur l'instance de VM :sudo apt-get install dbus
Redémarrez
logind
:sudo systemctl restart systemd-logind.service
Étapes suivantes
- Supprimez une instance si vous n'en avez plus besoin.
- Arrêtez et démarrez une instance.
- Examinez le cycle de vie d'une instance.
- Consultez la page Résoudre les problèmes liés à la suspension des VM si vous rencontrez des problèmes lors de la suspension d'une VM.