Utilisez une image système pour stocker la totalité de la configuration, des métadonnées, des autorisations et des données de plusieurs disques pour une instance Compute Engine. L'instance que vous utilisez pour créer une image système est appelée instance source.
Pour savoir quand et comment utiliser des images système, consultez la page Images système.
Ce document explique comment créer une image système à partir d'une instance source.
Avant de commencer
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification permet de valider votre identité pour accéder aux services et aux API Cloud de Confiance by S3NS . Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes :
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 Cloud de Confiance pour accéder aux services Cloud de Confiance by S3NS et aux API, vous n'avez pas besoin de configurer l'authentification.
gcloud
-
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée. Après vous être connecté, initialisez la Google Cloud CLI en exécutant la commande suivante :
gcloud init
-
- Définissez une région et une zone par défaut.
REST
Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Cloud de Confiance .
Limites et restrictions
- Vous pouvez créer une image système d'une instance spécifique au maximum six fois toutes les 60 minutes.
- Vous pouvez protéger une image système à l'aide de Cloud Key Management Service (Cloud KMS) ou d'une clé de chiffrement fournie par le client (CSEK). La clé de chiffrement protège le contenu des disques. Cependant, notez que les métadonnées ne sont pas protégées.
- Si vous utilisez une clé CSEK pour protéger votre image système, une copie intégrale de toutes les données du disque est enregistrée lors de la génération de l'image système. Dans tout autre scénario, les données de disque sont stockées dans des copies différentielles.
Vous ne pouvez pas créer d'images système à partir d'instances Compute Engine sources qui :
- sont associées à des disques dont la capacité combinée dépasse 200 Tio.
- ne sont associées à aucun disque ;
- sont associées à des volumes Hyperdisk.
- Utilisez le type de machine Z3, à l'exception de
z3-highmem-192-highlssd-metal. - Utilisez un type de machine C3D, H3 ou A3.
Pour les instances qui ne permettent pas de créer des images système, vous pouvez créer une image d'OS à partir du disque de démarrage de l'instance, comme décrit dans Créer des images personnalisées.
Vous ne pouvez pas spécifier à la fois des disques à inclure et des disques à exclure.
Propriétés d'instance et de disque non compatibles avec l'image système
Lorsque vous créez des images système à partir d'instances ou que vous créez des instances à partir d'images système, les propriétés d'instance et de disque suivantes ne sont pas conservées ni restaurées :
disks.architecturedisks.descriptiondisks.labelsdisks.lockeddisks.multiWriterdisks.onUpdateActiondisks.provisionedIopsdisks.shieldedInstanceInitialStatedisks.sourceImagedisks.sourceImageEncryptionKeydisks.sourceInstantSnapshotdisks.sourceSnapshotdisks.sourceSnapshotEncryptionKeyprivateIpv6GoogleAccessresourceManagerTagsresourcePoliciessecure_tagshieldedInstanceConfig
Créer une image système à partir d'une instance
Par défaut, une image de machine inclut le disque de démarrage et tous les autres disques associés à l'instance Compute Engine source. Vous pouvez éventuellement spécifier les disques autres que le disque de démarrage à inclure ou à exclure, mais vous ne pouvez pas exclure le disque de démarrage.
Créer une image système à partir d'une instance et inclure tous les disques associés
Vous pouvez créer des images système à l'aide de la consoleCloud de Confiance , de la Google Cloud CLI ou de REST.
Pour créer une image système, vous avez besoin des informations suivantes :
- Le nom de l'image système que vous souhaitez créer.
- Le nom de l'instance source.
- La zone dans laquelle se trouve l'instance source.
- Description facultative
- Un emplacement
storageLocationfacultatif. Si vous ne spécifiez pas d'emplacement, l'emplacement de stockage par défaut est l'emplacement Cloud Storage multirégional de l'instance source. - Une clé de chiffrement facultative. Vous pouvez choisir entre une clé Google Cloud-powered encryption key, une clé Cloud Key Management Service (Cloud KMS) ou une clé de chiffrement fournie par le client (CSEK). Si aucune clé de chiffrement n'est spécifiée, les images système sont chiffrées à l'aide d'une Google Cloud-powered encryption key.
Si vous souhaitez utiliser une image système pour le clonage et la création d'instantanées d'une instance, supprimez les informations de système d'exploitation et d'application propres à l'instance avant de l'utiliser pour générer l'image système. Par exemple, pour les instances de VM Windows, utilisez
GCESyspreppour préparer le système à la réplication.
Console
Dans la console Cloud de Confiance , accédez à la page Images système.
Cliquez sur Créer une image système.
Spécifiez un nom pour votre image système.
Facultatif : Fournissez une description.
Sélectionnez l'instance de VM source.
Facultatif : Spécifiez l'emplacement où stocker l'image système. Choisissez entre un stockage multirégional et régional. Pour en savoir plus sur l'emplacement, consultez Emplacement de stockage des images système.
Facultatif : Sélectionnez une méthode de chiffrement.
Cliquez sur Créer.
gcloud
Pour créer une image système à partir d'une instance, utilisez la commande gcloud compute machine-images create.
gcloud compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME
Remplacez les éléments suivants :
MACHINE_IMAGE_NAME: nom de l'image système que vous souhaitez créer.SOURCE_INSTANCE_NAME: nom de l'instance source à partir de laquelle vous souhaitez créer l'image.
Exemple
Par exemple, vous pouvez utiliser la commande gcloud suivante pour créer une image système appelée my-machine-image à partir d'une instance source nommée my-instance :
gcloud compute machine-images create my-machine-image \
--source-instance=my-instance
Le processus prend quelques minutes. Une fois l'image système créée, vous obtenez un résultat semblable à celui-ci :
Created [https://www.googleapis.com/compute/v1/projects/project-12345/global/machineImages/my-machine-image]. NAME STATUS my-machine-image READY
REST
Dans l'API, envoyez une requête POST à la méthode machineimages.insert. Dans le corps de la requête, incluez la requête POST suivante :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL"
}
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.MACHINE_IMAGE_NAME: nom de l'image système que vous souhaitez créer.SOURCE_INSTANCE_URL: URL complète ou partielle de l'instance source que vous souhaitez utiliser pour créer l'image système. Par exemple, si vous avez une instance source appeléemy-instancedans un projet nommémyProject, les URL suivantes sont valides :https://www.googleapis.com/compute/v1/projects/myProject/global/instances/my-instanceprojects/myProject/global/instances/my-instanceglobal/instances/my-instance
Créer une image système et inclure des disques spécifiques (aperçu)
Vous pouvez utiliser la sauvegarde sélective de disques pour créer une image système qui inclut ou exclut des disques non amorçables spécifiques.
Les sauvegardes de disque sélectives vous permettent d'effectuer les tâches suivantes lorsque vous créez une image système :
Inclure des disques non amorçables spécifiques : vous pouvez créer une image système qui ne sauvegarde que le disque de démarrage et une liste spécifique de disques non amorçables que vous fournissez.
Exclure des disques non amorçables spécifiques : vous pouvez créer une image système qui sauvegarde le disque de démarrage et tous les disques non amorçables associés, à l'exception de ceux que vous spécifiez dans une liste d'exclusion.
Bonnes pratiques pour les instances Linux
Pour les instances Linux, nous vous recommandons de suivre les bonnes pratiques suivantes :
Lorsque vous créez une image de machine qui exclut des disques non bootables spécifiques ou les omet à l'aide d'une liste d'inclusion, assurez-vous que le fichier
/etc/fstabsur les instances Compute Engine sources Linux utilise l'optionnofailpour ces disques. Cela empêche l'échec du démarrage de l'instance Compute Engine restaurée si un disque attendu est manquant.Lors du processus de démarrage d'une instance Compute Engine restaurée à partir d'une image de machine, le système d'exploitation tente de monter tous les disques listés dans
/etc/fstab. Si un disque attendu est manquant et que l'optionnofailn'est pas spécifiée, le processus de démarrage s'arrête et l'instance ne peut pas démarrer. Pour contourner les échecs de démarrage, consultez Solutions de contournement pour les échecs de démarrage causés par l'exclusion de disques spécifiques.
Inclure uniquement certains disques
Suivez les instructions ci-dessous pour créer une image système à partir de disques spécifiques uniquement. Vous devez toujours inclure le disque de démarrage. Vous ne pouvez pas créer d'image système à partir de disques spécifiques uniquement à l'aide de la console Cloud de Confiance . Vous devez utiliser Google Cloud CLI ou REST.
Google Cloud CLI
Pour créer une image système à partir de disques spécifiques uniquement, utilisez la commande gcloud beta compute machine-images create.
gcloud beta compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME \
--source-instance-zone=ZONE \
--include-disks=BOOT_DISK,DISK_NAME_1,DISK_NAME_2
Remplacez les éléments suivants :
MACHINE_IMAGE_NAME: nom de l'image système que vous souhaitez créer.SOURCE_INSTANCE_NAME: nom de l'instance source à partir de laquelle vous souhaitez créer l'image.ZONE: zone où se trouve l'instance source.BOOT_DISK, DISK_NAME_1,DISK_NAME_2: liste séparée par une virgule du disque de démarrage et des disques non amorçables associés à l'instance source que vous souhaitez inclure dans l'image système.
Par exemple, vous pouvez utiliser la commande gcloud suivante pour créer une image système appelée my-gmi-include à partir d'une instance source appelée my-instance située dans us-central1-a, en incluant uniquement data-disk-1 et data-disk-2 :
gcloud beta compute machine-images create my-gmi-include \
--source-instance=my-instance \
--source-instance-zone=us-central1-a \
--include-disks=boot-disk,data-disk-1,data-disk-2
REST
Dans l'API, envoyez une requête POST à la méthode machineimages.insert. Dans le corps de la requête, incluez la requête POST suivante :
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL",
"params": {
"includedDisks": ["BOOT_DISK", "DISK_NAME_1", "DISK_NAME_2"]
}
}
Remplacez les éléments suivants :
PROJECT_ID: ID du projet contenant l'image système, par exemple,my-project.MACHINE_IMAGE_NAME: nom de l'image système que vous souhaitez créer.SOURCE_INSTANCE_URL: URL complète ou partielle de l'instance source que vous souhaitez utiliser pour créer l'image système.BOOT_DISK, DISK_NAME_1, DISK_NAME_2: liste des disque de démarrage et non amorçables associés à l'instance source que vous souhaitez inclure dans l'image système.
Créer une image système et exclure des disques spécifiques (aperçu)
Suivez les instructions ci-dessous pour créer une image système et exclure des disques spécifiques de la sauvegarde. Vous ne pouvez pas exclure le disque de démarrage. Vous ne pouvez pas créer d'image système et exclure des disques spécifiques à l'aide de la console Cloud de Confiance . Vous pouvez utiliser Google Cloud CLI ou REST.
gcloud
Pour créer une image système et exclure des disques spécifiques, utilisez la commande gcloud beta compute machine-images create.
gcloud beta compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME \
--source-instance-zone=ZONE \
--exclude-disks=DISK_NAME_1,DISK_NAME_2
Remplacez les éléments suivants :
MACHINE_IMAGE_NAME: nom de l'image système que vous souhaitez créer.SOURCE_INSTANCE_NAME: nom de l'instance source à partir de laquelle vous souhaitez créer l'image.ZONE: zone où se trouve l'instance source.DISK_NAME_1,DISK_NAME_2: liste des disques non amorçables associés à l'instance source que vous souhaitez exclure de l'image système, séparés par une virgule.
Exemple
Par exemple, vous pouvez utiliser la commande gcloud suivante pour créer une image système appelée my-gmi-exclude à partir d'une instance source appelée my-instance située dans us-central1-a, en excluant temp-disk-1 et scratch-disk :
gcloud beta compute machine-images create my-gmi-exclude \
--source-instance=my-instance \
--source-instance-zone=us-central1-a \
--exclude-disks=temp-disk-1,scratch-disk
REST
Dans l'API, envoyez une requête POST à la méthode machineimages.insert. Dans le corps de la requête, incluez la requête POST suivante :
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL",
"params": {
"excludedDisks": ["DISK_NAME_1", "DISK_NAME_2"]
}
}
Remplacez les éléments suivants :
PROJECT_ID: ID du projet contenant l'image système.MACHINE_IMAGE_NAME: nom de l'image système que vous souhaitez créer.SOURCE_INSTANCE_URL: URL complète ou partielle de l'instance source que vous souhaitez utiliser pour créer l'image système.DISK_NAME_1, DISK_NAME_2: liste des disques non amorçables associés à l'instance source que vous souhaitez exclure de l'image système.
Solutions pour les échecs de démarrage causés par l'exclusion de disques spécifiques
Si vous créez une instance à partir d'une image système dans laquelle un disque exclu provoque un échec du démarrage, vous pouvez récupérer l'instance à l'aide de l'une des solutions de contournement suivantes :
Connectez-vous à la console série : activez et connectez-vous à la console série interactive de l'instance Compute Engine non bootable. Connectez-vous pour résoudre le problème et modifier le fichier
/etc/fstabdirectement afin de supprimer l'entrée de disque manquante ou d'ajouter l'optionnofail.Échange de disque : si une instance Compute Engine ne parvient pas à démarrer, car un disque a été exclu de l'image système, mais figure toujours dans
/etc/fstabsans l'optionnofail, suivez les instructions ci-dessous pour réparer la configuration à l'aide de Google Cloud CLI.Arrêtez l'instance Compute Engine non bootable à l'aide de la commande
gcloud compute instances stop:gcloud compute instances stop UNBOOTABLE_INSTANCE_NAME \ --zone=ZONE
Remplacez les éléments suivants :
UNBOOTABLE_INSTANCE_NAME: nom de l'instance Compute Engine non bootable.ZONE: zone dans laquelle se trouvent les instances Compute Engine.
Dissociez le disque de démarrage à l'aide de la commande
gcloud compute instances detach-disk:gcloud compute instances detach-disk UNBOOTABLE_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Remplacez les éléments suivants :
UNBOOTABLE_INSTANCE_NAME: nom de l'instance Compute Engine non bootable.BOOT_DISK_NAME: nom du disque de démarrage associé à l'instance Compute Engine non amorçable.ZONE: zone dans laquelle se trouvent les instances Compute Engine.
Associez le disque en tant que disque secondaire à une autre instance Compute Engine fonctionnelle à l'aide de la commande
gcloud compute instances attach-disk:gcloud compute instances attach-disk SECONDARY_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Remplacez les éléments suivants :
SECONDARY_INSTANCE_NAME: nom de l'instance Compute Engine secondaire fonctionnelle utilisée pour réparer le disque.BOOT_DISK_NAME: nom du disque de démarrage associé à l'instance Compute Engine non amorçable.ZONE: zone dans laquelle se trouvent les instances Compute Engine.
Montez le disque et modifiez son fichier
/etc/fstabpour corriger l'entrée problématique en suivant la séquence d'instructions suivante :Connectez-vous à l'instance Compute Engine secondaire à l'aide de SSH :
gcloud compute ssh SECONDARY_INSTANCE_NAME \ --zone=ZONE
Remplacez les éléments suivants :
SECONDARY_INSTANCE_NAME: nom de l'instance Compute Engine secondaire fonctionnelle utilisée pour réparer le disque.ZONE: zone dans laquelle se trouvent les instances Compute Engine.
Identifiez le disque associé, généralement
/dev/sdbou similaire, à l'aide delsblk:lsblk
Créez un point de montage temporaire :
sudo mkdir /mnt/repair
Installez la partition racine :
sudo mount /dev/DEVICE_PARTITION /mnt/repair
Remplacez
DEVICE_PARTITIONpar le nom de l'appareil et le numéro de partition du disque secondaire associé à l'instance Compute Engine secondaire (par exemple,sdb1).Ouvrez le fichier
fstab:sudo nano /mnt/repair/etc/fstab
Ajoutez l'option
nofailà l'entrée du disque manquant ou mettez en commentaire la ligne entière en ajoutant un#au début.Enregistrez la modification et quittez l'éditeur.
Désinstallez le disque :
sudo umount /mnt/repair
Dissociez le disque de l'instance Compute Engine secondaire à l'aide de la commande
gcloud compute instances detach-disk:gcloud compute instances detach-disk SECONDARY_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Remplacez les éléments suivants :
SECONDARY_INSTANCE_NAME: nom de l'instance Compute Engine secondaire fonctionnelle utilisée pour réparer le disque.BOOT_DISK_NAME: nom du disque de démarrage associé à l'instance Compute Engine non amorçable.ZONE: zone dans laquelle se trouvent les instances Compute Engine.
Réassociez le disque en tant que disque de démarrage à l'instance Compute Engine d'origine à l'aide de la commande
gcloud compute instances attach-disk:gcloud compute instances attach-disk UNBOOTABLE_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --boot \ --zone=ZONE
Remplacez les éléments suivants :
UNBOOTABLE_INSTANCE_NAME: nom de l'instance Compute Engine non bootable.BOOT_DISK_NAME: nom du disque de démarrage associé à l'instance Compute Engine non amorçable.ZONE: zone dans laquelle se trouvent les instances Compute Engine.
Démarrez l'instance Compute Engine réparée :
gcloud compute instances start UNBOOTABLE_INSTANCE_NAME \ --zone=ZONE
Remplacez les éléments suivants :
UNBOOTABLE_INSTANCE_NAME: nom de l'instance Compute Engine non bootable.ZONE: zone dans laquelle se trouvent les instances Compute Engine.
Étape suivante
- Apprenez-en sur les images système.
- Créer des instances à partir d'images système