Este documento descreve como ativar a virtualização aninhada numa instância de máquina virtual (VM) e como confirmar que pode criar uma VM aninhada. Ative a virtualização aninhada numa VM através de um dos seguintes métodos:
Recomendado. Ative a virtualização aninhada diretamente numa VM nova ou existente definindo o campo
enableNestedVirtualization
comotrue
ao criar a VM ou atualizando a VM. Este é o método recomendado porque não requer que crie uma imagem personalizada nem use a chave de licença especial.Ative a virtualização aninhada usando a chave de licença especial. Para tal, crie um disco de arranque, crie uma imagem personalizada com a chave de licença especial de virtualização aninhada e, em seguida, crie uma VM que use a imagem personalizada.
Antes de começar
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
gcloud
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- Set a default region and zone.
REST
Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.
Ative a virtualização aninhada diretamente numa nova VM
Ative a virtualização aninhada diretamente numa VM através do seguinte procedimento.
gcloud
Crie uma VM L1 com a virtualização aninhada ativada através do seguinte
gcloud compute instances create
comando:gcloud compute instances create VM_NAME \ --enable-nested-virtualization \ --zone=ZONE \ --min-cpu-platform="Intel Haswell"
Substitua o seguinte:
VM_NAME
: o nome da nova VM de nível 1 com a virtualização aninhada ativadaZONE
: a zona para a nova VM L1 com a virtualização aninhada ativada
REST
Crie uma VM de nível 1 com a virtualização aninhada ativada através do seguinte
instances.insert
método:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "name": "VM_NAME", ... "minCpuPlatform": "Intel Haswell", "advancedMachineFeatures": { "enableNestedVirtualization": true }, ... }
Substitua o seguinte:
PROJECT_ID
: o ID do projetoZONE
: a zona para a nova VM L1 com a virtualização aninhada ativadaVM_NAME
: o nome da nova VM de nível 1 com a virtualização aninhada ativada
Ative a virtualização aninhada diretamente numa VM existente
Ative a virtualização aninhada numa VM existente através do seguinte procedimento.
gcloud
Exporte as propriedades da VM através do seguinte
gcloud compute instances export
comando:gcloud compute instances export VM_NAME \ --destination=YAML_FILE_PATH \ --zone=ZONE
Substitua o seguinte:
VM_NAME
: o nome da VM a partir da qual exportar propriedadesYAML_FILE_PATH
: o caminho e o nome do ficheiro de um ficheiro .yaml no qual guardar os dados de configuração exportadosZONE
: a zona que contém a VM
No ficheiro de configuração da VM que foi guardado em FILE_PATH, atualize o valor de
enableNestedVirtualization
. Se o valor não estiver no ficheiro, adicione o seguinte:advancedMachineFeatures: enableNestedVirtualization: true
Atualize a VM com o valor de
enableNestedVirtualization
através do seguinte comandogcloud compute instances update-from-file
:gcloud compute instances update-from-file VM_NAME \ --source=FILE_PATH \ --most-disruptive-allowed-action=RESTART \ --zone=ZONE
Substitua o seguinte:
VM_NAME
: o nome da VM a atualizarFILE_PATH
: o caminho para o ficheiro de configuração da VM atualizadoZONE
: a zona que contém a VM a atualizar
REST
Atualize o valor de
enableNestedVirtualization
através do seguinteinstances.update
método: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" }, ⋮ }
Substitua o seguinte:
PROJECT_ID
: o ID do projetoZONE
: a zona que contém a VMVM_NAME
: o nome da VM a partir da qual exportar as propriedades
Ative a virtualização aninhada através da chave de licença especial
Pode ativar a virtualização aninhada na VM criando uma imagem personalizada com uma chave de licença especial que ativa o VMX na VM de nível 1. A chave de licença não incorre em custos adicionais.
Crie um disco de arranque a partir de uma imagem pública ou de uma imagem personalizada. O exemplo seguinte usa
debian-cloud
para o projeto de imagem edebian-10
para a família de imagens. Se já tiver uma instância de VM com um disco existente, pode ignorar este passo.gcloud
gcloud compute disks create DISK_NAME \ --zone=ZONE \ --image-project=debian-cloud \ --image-family=debian-10
Substitua o seguinte:
DISK_NAME
: o nome do novo discoZONE
: a zona na qual criar o disco
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", ... }
Substitua o seguinte:
PROJECT_ID
: o ID do projetoZONE
: a zona na qual criar o discoDISK_NAME
: o nome do novo disco
Crie uma imagem personalizada com a chave de licença especial necessária para a virtualização aninhada.
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"
Substitua o seguinte:
IMAGE_NAME
: o nome da nova imagemDISK_NAME
: o nome do disco criado anteriormenteZONE
: a zona onde criar a imagem
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", ... }
Substitua o seguinte:
PROJECT_ID
: o ID do projetoIMAGE_NAME
: o nome da nova imagemZONE
: a zona onde criar a imagemDISK_NAME
: o nome do disco criado anteriormente
Opcionalmente, elimine o disco de origem após criar a imagem com a licença especial.
gcloud
gcloud compute disks delete DISK_NAME --zone=ZONE
Substitua o seguinte:
DISK_NAME
: o nome do disco a eliminarZONE
: a zona que contém o disco a eliminar
REST
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
Substitua o seguinte:
PROJECT_ID
: o ID do projetoZONE
: a zona que contém o disco a eliminarDISK_NAME
: o nome do disco a eliminar
Crie uma VM que use a nova imagem com a licença especial. A plataforma mínima da CPU tem de ser
"Intel Haswell"
.gcloud
gcloud compute instances create VM_NAME \ --zone=ZONE \ --min-cpu-platform "Intel Haswell" \ --image IMAGE_NAME
Substitua o seguinte:
VM_NAME
: o nome da VMZONE
: a zona na qual criar a VMIMAGE_NAME
: o nome da imagem criada anteriormente
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" } } ] ... }
Substitua o seguinte:
PROJECT_ID
: o ID do projetoVM_NAME
: o nome da VMZONE
: a zona na qual criar a VMIMAGE_NAME
: o nome da imagem criada anteriormente
Confirme se a virtualização aninhada está ativada na VM
Estabeleça ligação à instância de VM.
gcloud compute ssh VM_NAME
Substitua
VM_NAME
pelo nome da VM à qual se quer ligar.Confirme se a virtualização aninhada está ativada. Qualquer resposta que não seja
0
confirma que a virtualização aninhada está ativada.grep -cw vmx /proc/cpuinfo
O que se segue?
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-19 UTC.
-