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 VMtrue
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 bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:
Select the tab for how you plan to use the samples on this page:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
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
Erforderliche Berechtigungen für diese Aufgabe
Zum Ausführen dieser Aufgabe benötigen Sie die folgenden Berechtigungen:
-
Zum Aktivieren der verschachtelten Virtualisierung direkt auf einer neuen VM benötigen Sie die Berechtigung
compute.instances.create
für das Projekt, den Ordner oder die Organisation.
Aktivieren Sie die verschachtelte Virtualisierung direkt auf einer VM. Gehen Sie dazu so vor:
Erstellen Sie mit dem folgenden gcloud compute instances create
-Befehl eine L1-VM mit aktivierter verschachtelter Virtualisierung:
gcloud compute instances createVM_NAME \ --enable-nested-virtualization \ --zone=ZONE \ --min-cpu-platform="Intel Haswell"
Dabei gilt:
VM_NAME
: der Name der neuen L1-VM mit aktivierter verschachtelter VirtualisierungZONE
: die Zone für die neue L1-VM mit aktivierter verschachtelter Virtualisierung
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-IDZONE
: die Zone für die neue L1-VM mit aktivierter verschachtelter VirtualisierungVM_NAME
: der Name der neuen L1-VM mit aktivierter verschachtelter Virtualisierung
Verschachtelte Virtualisierung direkt auf einer vorhandenen VM aktivieren
Erforderliche Berechtigungen für diese Aufgabe
Zum Ausführen dieser Aufgabe benötigen Sie die folgenden Berechtigungen:
-
Zum Aktivieren der verschachtelten Virtualisierung direkt auf einer neuen VM benötigen Sie die Berechtigung
compute.instances.create
für das Projekt, den Ordner oder die Organisation.
Aktivieren Sie die verschachtelte Virtualisierung auf einer vorhandenen VM. Verwenden Sie dazu die folgende Methode:
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 sollenYAML_FILE_PATH
: Pfad und Dateiname einer YAML-Datei, in der die exportierten Konfigurationsdaten gespeichert werden sollenZONE
: die Zone mit der VM
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
Aktualisieren Sie die VM mit dem Wert für
enableNestedVirtualization
mit dem folgendengcloud 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 VMFILE_PATH
ist der Pfad zur aktualisierten VM-Konfigurationsdatei.ZONE
: Zone, die die zu aktualisierende VM enthält
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
: die ID des Projekts.ZONE
ist die Zone mit der VMVM_NAME
ist der Name der VM, von der Attribute exportiert werden sollen
Verschachtelte Virtualisierung mithilfe des speziellen Lizenzschlüssels aktivieren
Erforderliche Berechtigungen für diese Aufgabe
Zum Ausführen dieser Aufgabe benötigen Sie die folgenden Berechtigungen:
compute.disks.create
für das Projekt, den Ordner oder die Organisationcompute.images.create
für das Projekt, den Ordner oder die Organisationcompute.disks.delete
für das Projekt, den Ordner oder die Organisationcompute.instances.create
für das Projekt, den Ordner oder die Organisation
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.
Erstellen Sie ein Bootlaufwerk von einem öffentlichen Image oder von einem benutzerdefinierten Image. Im folgenden Beispiel wird
debian-cloud
für das Image-Projekt unddebian-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 compute disks create
DISK_NAME \ --zone=ZONE \ --image-project=debian-cloud \ --image-family=debian-10Dabei gilt:
DISK_NAME
: Name des neuen LaufwerksZONE
: Zone, in der die VM erstellt werden soll
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-IDZONE
: Zone, in der die VM erstellt werden sollDISK_NAME
: Name des neuen Laufwerks
Erstellen Sie ein benutzerdefiniertes Image mit dem speziellen Lizenzschlüssel, der für die verschachtelte Virtualisierung erforderlich ist.
gcloud compute images create
IMAGE_NAME \ --source-diskDISK_NAME \ --source-disk-zoneZONE \ --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"Dabei gilt:
IMAGE_NAME
: Name des neuen ImagesDISK_NAME
: Name des zuvor erstellten LaufwerksZONE
: Zone, in der die VM erstellt werden soll
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-IDIMAGE_NAME
: Name des neuen ImagesZONE
: Zone, in der die VM erstellt werden sollDISK_NAME
: Name des zuvor erstellten Laufwerks
Optional können Sie das Quelllaufwerk löschen, nachdem Sie das Image mit der speziellen Lizenz erstellt haben.
gcloud compute disks delete
DISK_NAME --zone=ZONE Dabei gilt:
DISK_NAME
: Name des Laufwerks, das gelöscht werden sollZONE
: Zone, die das zu löschende Laufwerk enthält
DELETE https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /zones/ZONE /disks/DISK_NAME Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-IDZONE
: Zone, die das zu löschende Laufwerk enthältDISK_NAME
: Name des Laufwerks, das gelöscht werden soll
Erstellen Sie eine VM, die das neue Image mit der speziellen Lizenz verwendet. Die Mindest-CPU-Plattform muss
"Intel Haswell"
sein.gcloud compute instances create
VM_NAME \ --zone=ZONE \ --min-cpu-platform "Intel Haswell" \ --imageIMAGE_NAME Dabei gilt:
VM_NAME
: Der Name der VMZONE
ist die Zone, in der die VM erstellt werden soll.IMAGE_NAME
ist der Name des zuvor erstellten Images.
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-IDVM_NAME
: Der Name der VMZONE
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
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.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