Ce document explique comment activer la virtualisation imbriquée sur une instance de machine virtuelle (VM) et comment confirmer la possibilité de créer une VM imbriquée. Vous pouvez activer la virtualisation imbriquée sur une VM en utilisant l'une des méthodes suivantes :
Recommandation. Activer la virtualisation imbriquée directement sur une VM nouvelle ou existante en définissant le champ
enableNestedVirtualization
surtrue
lors de la création ou de la mise à jour de la VM, respectivement. Cette méthode est recommandée, car elle ne nécessite pas de créer une image personnalisée ni d'utiliser la clé de licence spéciale.Activer la virtualisation imbriquée à l'aide de la clé de licence spéciale. Pour cela, créez un disque de démarrage, créez une image personnalisée avec la clé de licence spéciale pour la virtualisation imbriquée, puis créez une VM qui utilise l'image personnalisée.
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 :
gcloud
-
Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :
gcloud init
- Définissez une région et une zone par défaut.
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.
Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :
gcloud init
-
Activer la virtualisation imbriquée directement sur une nouvelle VM
Activez la virtualisation imbriquée directement sur une VM en procédant comme suit :
gcloud
Créez une VM L1 avec la virtualisation imbriquée activée à l'aide de la commande gcloud compute instances create
suivante :
gcloud compute instances create VM_NAME \ --enable-nested-virtualization \ --zone=ZONE \ --min-cpu-platform="Intel Haswell"
Remplacez l'élément suivant :
VM_NAME
: nom de la nouvelle VM L1 avec la virtualisation imbriquée activéeZONE
: zone de la nouvelle VM L1 avec la virtualisation imbriquée activée
REST
Créez une VM L1 avec la virtualisation imbriquée activée à l'aide de la méthode instances.insert
suivante :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "name": "VM_NAME", ... "minCpuPlatform": "Intel Haswell", "advancedMachineFeatures": { "enableNestedVirtualization": true }, ... }
Remplacez l'élément suivant :
PROJECT_ID
: ID du projetZONE
: zone de la nouvelle VM L1 avec la virtualisation imbriquée activéeVM_NAME
: nom de la nouvelle VM L1 avec la virtualisation imbriquée activée
Activer la virtualisation imbriquée directement sur une VM existante
Activez la virtualisation imbriquée sur une VM existante à l'aide de la méthode suivante :
gcloud
Exportez les propriétés de la VM à l'aide de la commande
gcloud compute instances export
suivante :gcloud compute instances export VM_NAME \ --destination=YAML_FILE_PATH \ --zone=ZONE
Remplacez l'élément suivant :
VM_NAME
: nom de la VM à partir de laquelle exporter les propriétésYAML_FILE_PATH
: chemin d'accès et nom du fichier .yaml dans lequel enregistrer les données de configuration exportéesZONE
: zone contenant la VM
Dans le fichier de configuration de la VM enregistré dans FILE_PATH, mettez à jour la valeur de
enableNestedVirtualization
. Si la valeur ne figure dans le fichier, ajoutez l'élément suivant :advancedMachineFeatures: enableNestedVirtualization: true
Mettez à jour la VM avec la valeur de
enableNestedVirtualization
en utilisant la commandegcloud compute instances update-from-file
suivante :gcloud compute instances update-from-file VM_NAME \ --source=FILE_PATH \ --most-disruptive-allowed-action=RESTART \ --zone=ZONE
Remplacez l'élément suivant :
VM_NAME
: nom de la VM à mettre à jourFILE_PATH
: chemin d'accès au fichier de configuration de la VM mis à jourZONE
: zone contenant la VM à mettre à jour
REST
Mettez à jour la valeur pour enableNestedVirtualization
à l'aide de la méthode instances.update
suivante :
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART { ⋮ "advanced_machine_features": { ⋮ "enableNestedVirtualization": "true" }, ⋮ }
Remplacez l'élément suivant :
PROJECT_ID
: ID du projetZONE
: zone contenant la VMVM_NAME
: nom de la VM à partir de laquelle exporter les propriétés
Activer la virtualisation imbriquée à l'aide de la clé de licence spéciale
Vous pouvez activer la virtualisation imbriquée sur la VM en créant une image personnalisée avec une clé de licence spéciale qui active VMX sur la VM L1. La clé de licence n'entraîne pas de frais supplémentaires.
Créez un disque de démarrage à partir d'une image publique ou d'une image personnalisée. L'exemple suivant utilise
debian-cloud
pour le projet d'image etdebian-10
pour la famille d'images. Si vous disposez déjà d'une instance de VM avec un disque existant, vous pouvez ignorer cette étape.gcloud
gcloud compute disks create DISK_NAME \ --zone=ZONE \ --image-project=debian-cloud \ --image-family=debian-10
Remplacez l'élément suivant :
DISK_NAME
: le nom du nouveau disque.ZONE
: zone dans laquelle vous souhaitez créer le disque
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { ... "name": "DISK_NAME", "sourceImage": "projects/debian-cloud/global/images/family/debian-10", ... }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projetZONE
: zone dans laquelle vous souhaitez créer le disqueDISK_NAME
: le nom du nouveau disque.
Créez une image personnalisée avec la clé de licence spéciale requise pour la virtualisation imbriquée.
gcloud
gcloud compute images create IMAGE_NAME \ --source-disk DISK_NAME \ --source-disk-zone ZONE \ --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
Remplacez l'élément suivant :
IMAGE_NAME
: nom de la nouvelle imageDISK_NAME
: nom du disque précédemment créé.ZONE
: zone dans laquelle vous souhaitez créer l'image
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images { ... "licenses": ["projects/vm-options/global/licenses/enable-vmx"], "name": "IMAGE_NAME", "sourceDisk": "zones/ZONE/disks/DISK_NAME", ... }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projetIMAGE_NAME
: nom de la nouvelle imageZONE
: zone dans laquelle vous souhaitez créer l'imageDISK_NAME
: nom du disque précédemment créé.
Vous pouvez éventuellement supprimer le disque source après avoir créé l'image avec la licence spéciale.
gcloud
gcloud compute disks delete DISK_NAME --zone=ZONE
Remplacez l'élément suivant :
DISK_NAME
: nom du disque à supprimerZONE
: zone contenant le disque à supprimer
REST
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
Remplacez les éléments suivants :
PROJECT_ID
: ID du projetZONE
: zone contenant le disque à supprimerDISK_NAME
: nom du disque à supprimer
Créez une VM qui utilise la nouvelle image avec la licence spéciale. La configuration minimale de la plate-forme du processeur doit être
"Intel Haswell"
.gcloud
gcloud compute instances create VM_NAME \ --zone=ZONE \ --min-cpu-platform "Intel Haswell" \ --image IMAGE_NAME
Remplacez les éléments suivants :
VM_NAME
: nom de la VMZONE
: zone dans laquelle créer la VMIMAGE_NAME
: nom de l'image précédemment créée
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "name": "VM_NAME", "minCpuPlatform": "Intel Haswell", "disks": [ { "initializeParams": { "sourceImage": "IMAGE_NAME" } } ] ... }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projetVM_NAME
: nom de la VMZONE
: zone dans laquelle créer la VMIMAGE_NAME
: nom de l'image précédemment créée
Vérifier que la virtualisation imbriquée est activée sur la VM
Connectez-vous à l'instance de VM.
gcloud compute ssh VM_NAME
Remplacez
VM_NAME
par le nom de la VM à laquelle se connecter.Vérifiez que la virtualisation imbriquée est activée. Toute réponse autre que
0
confirme que la virtualisation imbriquée est activée.grep -cw vmx /proc/cpuinfo