Activer la virtualisation imbriquée


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 sur true 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

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
    2. 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ée

  • ZONE : 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 projet

  • ZONE : zone de la nouvelle VM L1 avec la virtualisation imbriquée activée

  • VM_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

  1. 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és

    • YAML_FILE_PATH : chemin d'accès et nom du fichier .yaml dans lequel enregistrer les données de configuration exportées

    • ZONE : zone contenant la VM

  2. 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
    
  3. Mettez à jour la VM avec la valeur de enableNestedVirtualization en utilisant la commande gcloud 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 à jour

    • FILE_PATH : chemin d'accès au fichier de configuration de la VM mis à jour

    • ZONE : 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 projet

  • ZONE : zone contenant la VM

  • VM_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.

  1. 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 et debian-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 projet

    • ZONE : zone dans laquelle vous souhaitez créer le disque

    • DISK_NAME : le nom du nouveau disque.

  2. 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 image

    • DISK_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 projet

    • IMAGE_NAME : nom de la nouvelle image

    • ZONE : zone dans laquelle vous souhaitez créer l'image

    • DISK_NAME : nom du disque précédemment créé.

  3. 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 à supprimer

    • ZONE : 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 projet

    • ZONE : zone contenant le disque à supprimer

    • DISK_NAME : nom du disque à supprimer

  4. 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 VM

    • ZONE : zone dans laquelle créer la VM

    • IMAGE_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 projet

    • VM_NAME : nom de la VM

    • ZONE : zone dans laquelle créer la VM

    • IMAGE_NAME : nom de l'image précédemment créée

Vérifier que la virtualisation imbriquée est activée sur la VM

  1. Connectez-vous à l'instance de VM.

    gcloud compute ssh VM_NAME
    

    Remplacez VM_NAME par le nom de la VM à laquelle se connecter.

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

Étapes suivantes