Verschachtelte Virtualisierung aktivieren


In diesem Dokument wird beschrieben, wie Sie die verschachtelte Virtualisierung auf einer VM-Instanz aktivieren und prüfen, ob Sie eine verschachtelte VM erstellen können. Aktivieren Sie die verschachtelte Virtualisierung auf einer VM mit einer der folgenden Methoden:

  • Empfohlen. Aktivieren Sie die verschachtelte Virtualisierung direkt auf einer neuen oder vorhandenen VM. Legen Sie dazu für das Feld enableNestedVirtualization beim Erstellen der VM true fest oder aktualisieren Sie die VM. Dies ist die empfohlene Methode, da Sie dafür kein benutzerdefiniertes Image erstellen oder den speziellen Lizenzschlüssel verwenden müssen.

  • Aktivieren Sie die verschachtelte Virtualisierung mithilfe des speziellen Lizenzschlüssels. Erstellen Sie dazu ein Bootlaufwerk, erstellen Sie ein benutzerdefiniertes Image mit dem speziellen Lizenzierungsschlüssel für die verschachtelte Virtualisierung und erstellen Sie dann eine VM, die das benutzerdefinierte Image verwendet.

Hinweise

  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

        Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

        gcloud init

      Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.

Verschachtelte Virtualisierung direkt auf einer neuen VM aktivieren

Aktivieren Sie die verschachtelte Virtualisierung direkt auf einer VM. Gehen Sie dazu so vor:

gcloud

Erstellen Sie mit dem folgenden gcloud compute instances create-Befehl eine L1-VM mit aktivierter verschachtelter Virtualisierung:

gcloud compute instances create VM_NAME \
  --enable-nested-virtualization \
  --zone=ZONE \
  --min-cpu-platform="Intel Haswell"

Dabei gilt:

  • VM_NAME: der Name der neuen L1-VM mit aktivierter verschachtelter Virtualisierung

  • ZONE: die Zone für die neue L1-VM mit aktivierter verschachtelter Virtualisierung

REST

Erstellen Sie mit der folgenden instances.insert-Methode eine L1-VM mit aktivierter verschachtelter Virtualisierung:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  ...
  "name": "VM_NAME",
  ...
  "minCpuPlatform": "Intel Haswell",
  "advancedMachineFeatures": {
    "enableNestedVirtualization": true
  },
  ...
}

Dabei gilt:

  • PROJECT_ID: die Projekt-ID

  • ZONE: die Zone für die neue L1-VM mit aktivierter verschachtelter Virtualisierung

  • VM_NAME: der Name der neuen L1-VM mit aktivierter verschachtelter Virtualisierung

Verschachtelte Virtualisierung direkt auf einer vorhandenen VM aktivieren

Aktivieren Sie die verschachtelte Virtualisierung auf einer vorhandenen VM. Verwenden Sie dazu die folgende Methode:

gcloud

  1. Exportieren Sie die Attribute der VM mit dem folgenden gcloud compute instances export-Befehl:

    gcloud compute instances export VM_NAME \
      --destination=YAML_FILE_PATH \
      --zone=ZONE
    

    Dabei gilt:

    • VM_NAME: der Name der VM, von der Attribute exportiert werden sollen

    • YAML_FILE_PATH: Pfad und Dateiname einer YAML-Datei, in der die exportierten Konfigurationsdaten gespeichert werden sollen

    • ZONE: die Zone mit der VM

  2. Aktualisieren Sie in der VM-Konfigurationsdatei, die in FILE_PATH gespeichert ist, den Wert für enableNestedVirtualization. Wenn der Wert nicht in der Datei enthalten ist, fügen Sie Folgendes hinzu:

    advancedMachineFeatures:
      enableNestedVirtualization: true
    
  3. Aktualisieren Sie die VM mit dem Wert für enableNestedVirtualization mit dem folgenden gcloud compute instances update-from-file-Befehl:

    gcloud compute instances update-from-file VM_NAME \
      --source=FILE_PATH \
      --most-disruptive-allowed-action=RESTART \
      --zone=ZONE
    

    Dabei gilt:

    • VM_NAME: Name der zu aktualisierenden VM

    • FILE_PATH ist der Pfad zur aktualisierten VM-Konfigurationsdatei.

    • ZONE: Zone, die die zu aktualisierende VM enthält

REST

Aktualisieren Sie den Wert für enableNestedVirtualization mit der folgenden instances.update-Methode:

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"
  },
  ⋮
}

Dabei gilt:

  • PROJECT_ID ist die ID des Projekts.

  • ZONE ist die Zone mit der VM

  • VM_NAME ist der Name der VM, von der Attribute exportiert werden sollen

Verschachtelte Virtualisierung mithilfe des speziellen Lizenzschlüssels aktivieren

Sie können die verschachtelte Virtualisierung auf der VM aktivieren, indem Sie ein benutzerdefiniertes Image mit einem speziellen Lizenzschlüssel erstellen, der VMX auf der L1-VM aktiviert. Für den Lizenzschlüssel fallen keine zusätzlichen Kosten an.

  1. Erstellen Sie ein Bootlaufwerk von einem öffentlichen Image oder von einem benutzerdefinierten Image. Im folgenden Beispiel wird debian-cloud für das Image-Projekt und debian-10 für die Image-Familie verwendet. Wenn Sie bereits eine VM-Instanz mit einem vorhandenen Laufwerk haben, können Sie diesen Schritt überspringen.

    gcloud

    gcloud compute disks create DISK_NAME \
      --zone=ZONE \
      --image-project=debian-cloud \
      --image-family=debian-10
    

    Dabei gilt:

    • DISK_NAME: Name des neuen Laufwerks

    • ZONE: Zone, in der die VM erstellt werden soll

    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",
      ...
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID

    • ZONE: Zone, in der die VM erstellt werden soll

    • DISK_NAME: Name des neuen Laufwerks

  2. Erstellen Sie ein benutzerdefiniertes Image mit dem speziellen Lizenzschlüssel, der für die verschachtelte Virtualisierung erforderlich ist.

    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"
    

    Dabei gilt:

    • IMAGE_NAME: Name des neuen Images

    • DISK_NAME: Name des zuvor erstellten Laufwerks

    • ZONE: Zone, in der die VM erstellt werden soll

    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",
      ...
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID

    • IMAGE_NAME: Name des neuen Images

    • ZONE: Zone, in der die VM erstellt werden soll

    • DISK_NAME: Name des zuvor erstellten Laufwerks

  3. Optional können Sie das Quelllaufwerk löschen, nachdem Sie das Image mit der speziellen Lizenz erstellt haben.

    gcloud

    gcloud compute disks delete DISK_NAME --zone=ZONE
    

    Dabei gilt:

    • DISK_NAME: Name des Laufwerks, das gelöscht werden soll

    • ZONE: Zone, die das zu löschende Laufwerk enthält

    REST

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID

    • ZONE: Zone, die das zu löschende Laufwerk enthält

    • DISK_NAME: Name des Laufwerks, das gelöscht werden soll

  4. Erstellen Sie eine VM, die das neue Image mit der speziellen Lizenz verwendet. Die Mindest-CPU-Plattform muss "Intel Haswell" sein.

    gcloud

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --min-cpu-platform "Intel Haswell" \
        --image IMAGE_NAME
    

    Dabei gilt:

    • VM_NAME: Der Name der VM

    • ZONE ist die Zone, in der die VM erstellt werden soll.

    • IMAGE_NAME ist der Name des zuvor erstellten Images.

    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"
          }
        }
      ]
      ...
    }
    
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID

    • VM_NAME: Der Name der VM

    • ZONE ist die Zone, in der die VM erstellt werden soll.

    • IMAGE_NAME ist der Name des zuvor erstellten Images.

Aktivierung der verschachtelten Virtualisierung auf der VM bestätigen

  1. Eine Verbindung zur VM-Instanz herstellen

    gcloud compute ssh VM_NAME
    

    Ersetzen Sie dabei VM_NAME durch den Namen der VM, zu der eine Verbindung hergestellt werden soll.

  2. Bestätigen Sie, dass die verschachtelte Virtualisierung aktiviert ist. Mit Ausnahme von 0 wird durch jede Antwort bestätigt, dass die verschachtelte Virtualisierung aktiviert ist.

    grep -cw vmx /proc/cpuinfo
    

Nächste Schritte