

# Use a virtualização aninhada para executar hipervisores em instâncias do Amazon EC2
<a name="amazon-ec2-nested-virtualization"></a>

A virtualização aninhada permite que você execute hipervisores como Hyper-V e KVM dentro de instâncias virtuais do Amazon EC2. As instâncias virtuais do EC2 não são instâncias bare metal. Esse recurso amplia a flexibilidade da virtualização ao adicionar suporte de virtualização em nível de processador às instâncias virtuais do EC2, permitindo que um hipervisor em execução na sua instância crie e gerencie máquinas virtuais.

A virtualização aninhada pode ajudar quando você executa ferramentas de desenvolvimento como Docker Desktop, Windows Subsystem for Linux 2 (WSL2), emuladores do Android Studio ou QEMU em seu fluxo de trabalho de desenvolvimento, pois permite escolher entre uma ampla variedade de tipos de instâncias virtuais padrão do Amazon EC2 que atendem aos seus requisitos específicos de desempenho e preço.

Não há custo adicional para usar a virtualização aninhada.

**Topics**
+ [

## Como funcionam
](#nested-virtualization-how-it-works)
+ [

## Considerações
](#nested-virtualization-considerations)
+ [

## Iniciar uma nova instância com a virtualização aninhada
](#nested-virtualization-launch-new-instance)
+ [

## Configurar uma instância existente para usar a virtualização aninhada
](#nested-virtualization-configure-existing-instance)

## Como funcionam
<a name="nested-virtualization-how-it-works"></a>

As instâncias virtuais do EC2 são executadas em um host físico que tem o hipervisor Nitro. Para oferecer suporte à virtualização aninhada, o Sistema Nitro transfere as extensões do processador, como Intel VT-x, para instâncias para facilitar a execução de máquinas virtuais aninhadas. A arquitetura de virtualização aninhada consiste em três camadas: a infraestrutura física da AWS e o hipervisor Nitro (L0), sua instância EC2 executando um hipervisor (L1) e uma ou mais máquinas virtuais criadas nessa instância (L2).

## Considerações
<a name="nested-virtualization-considerations"></a>

Antes de começar a usar a virtualização aninhada, considere o seguinte:
+ **Tipos de instância compatíveis**: atualmente, a virtualização aninhada é compatível com instâncias C8i, M8i e R8i.
+ **Hipervisores compatíveis**: atualmente, o KVM e o Hyper-V são os hipervisores L1 compatíveis.
+ **Instâncias do Windows**: quando a virtualização aninhada está habilitada em uma instância do Windows:
  + **[Credential Guard](credential-guard.md)**: o Virtual Secure Mode (VSM) é automaticamente desativado.
  + **Hibernação**: a hibernação e a retomada da instância não são compatíveis.
  + **Limite de CPU**: não é compatível em instâncias do Windows com mais de 192 CPUs, como `m8i.96xl`.
+ **Responsabilidades de segurança**: ao usar a virtualização aninhada em instâncias do EC2, a AWS é responsável pela “segurança *da* nuvem”, protegendo a infraestrutura subjacente e mantendo os fortes limites de isolamento entre as instâncias do EC2 fornecidos pelo AWS Nitro System. Os clientes são responsáveis pela “segurança *na* nuvem”, que inclui proteger o sistema operacional, o hipervisor, as máquinas virtuais aninhadas, os sistemas operacionais convidados, as aplicações e os dados nas instâncias do EC2.
+ **Desempenho**: a AWS recomenda que os clientes que desejam executar workloads que exijam acesso a extensões de virtualização de hardware, sejam sensíveis ao desempenho ou tenham requisitos rígidos de latência, avaliem instâncias bare metal.

## Iniciar uma nova instância com a virtualização aninhada
<a name="nested-virtualization-launch-new-instance"></a>

Ao iniciar uma nova instância, você pode ativar a virtualização aninhada para executar hipervisores e máquinas virtuais nela.

**Pré-requisitos**  
É necessário ter as permissões do IAM exigidas para iniciar uma instância do Amazon EC2.

------
#### [ Console ]

**Para habilitar um virtualização aninhada durante o início da instância**

1. Siga o procedimento [Executar uma instância do EC2 usando o assistente de inicialização de instâncias no console](ec2-launch-instance-wizard.md) e configure sua instância conforme necessário.

1. Verifique se um tipo de instância compatível está selecionado.

1. Expanda os **detalhes avançados** e em **Virtualização aninhada**, escolha **Habilitar**.

1. No painel **Resumo**, analise a configuração da instância e selecione **Iniciar instância**.

------
#### [ AWS CLI ]

**Para iniciar uma instância com a virtualização aninhada habilitada**  
Use o comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html).

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type r8i.4xlarge \
    --cpu-options "NestedVirtualization=enabled" \
    --key-name my-key-pair
```

------
#### [ PowerShell ]

**Para iniciar uma instância com a virtualização aninhada habilitada**  
Use o comando [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html).

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType r8i.4xlarge `
    -CpuOption @{NestedVirtualization='enabled'} `
    -KeyName my-key-pair
```

------

## Configurar uma instância existente para usar a virtualização aninhada
<a name="nested-virtualization-configure-existing-instance"></a>

Você pode ativar a virtualização aninhada em uma instância existente do Amazon EC2.

**Pré-requisitos**
+ A instância deve se encontrar no estado `stopped`. 
+ O tipo de instância deve permitir a virtualização aninhada.

------
#### [ Console ]

**Para habilitar a virtualização aninhada em uma instância existente**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione a instância que você deseja modificar na tabela de instâncias.

1. Escolha **Ações**, **Configurações de instância**, **Alterar opções de CPU**.

1. Na página **Alterar opções de CPU**, para **Virtualização aninhada**, escolha uma das seguintes opções:
   + **Habilitar**: ativa a virtualização aninhada para a instância
   + **Desabilitar**: desativa a virtualização aninhada para a instância

1. Confira suas alterações e escolha **Alterar** para aplicar as novas opções de CPU.

------
#### [ AWS CLI ]

**Para habilitar a virtualização aninhada em uma instância existente**  
Primeiro, interrompa a instância e use o comando [modify-instance-cpu-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-cpu-options.html).

```
aws ec2 modify-instance-cpu-options \
    --instance-id i-1234567890abcdef0 \
    --core-count 4 \
    --threads-per-core 2 \
    --nested-virtualization enabled
```

------
#### [ PowerShell ]

**Para habilitar a virtualização aninhada em uma instância existente**  
Primeiro, interrompa a instância e use o comando [Edit-EC2InstanceCpuOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceCpuOption.html).

```
Edit-EC2InstanceCpuOption `
    -InstanceId i-1234567890abcdef0 `
    -CoreCount 4 `
    -ThreadsPerCore 2 `
    -NestedVirtualization enabled
```

------