

# 중첩된 가상화를 사용하여 Amazon EC2 인스턴스에서 하이퍼바이저 실행
<a name="amazon-ec2-nested-virtualization"></a>

중첩된 가상화를 사용하면 가상 Amazon EC2 인스턴스 내에서 Hyper-V, KVM 등의 하이퍼바이저를 실행할 수 있습니다. 가상 EC2 인스턴스는 비베어 메탈 인스턴스입니다. 이 기능은 프로세서 수준의 가상화 지원을 가상 EC2 인스턴스에 추가하여 가상화 유연성을 확장하므로 인스턴스에서 실행되는 하이퍼바이저가 가상 머신을 생성하고 관리할 수 있습니다.

중첩된 가상화는 Docker Desktop, Windows Subsystem for Linux 2(WSL2), Android Studio 에뮬레이터, QEMU와 같은 개발 도구를 개발 워크플로에서 실행할 때 유용합니다. 이를 통해 특정 성능 및 가격 요구 사항을 충족하는 다양한 표준 Amazon EC2 가상 인스턴스 유형 중에서 선택할 수 있기 때문입니다.

중첩된 가상화 사용에 따른 추가 비용은 없습니다.

**Topics**
+ [

## 작동 방식
](#nested-virtualization-how-it-works)
+ [

## 고려 사항
](#nested-virtualization-considerations)
+ [

## 중첩된 가상화가 활성화된 새 인스턴스 시작
](#nested-virtualization-launch-new-instance)
+ [

## 중첩된 가상화를 사용하도록 기존 인스턴스 구성
](#nested-virtualization-configure-existing-instance)

## 작동 방식
<a name="nested-virtualization-how-it-works"></a>

가상 EC2 인스턴스는 Nitro 하이퍼바이저가 있는 물리적 호스트에서 실행됩니다. 중첩된 가상화를 지원하기 위해 Nitro System은 인스턴스에 Intel VT-x와 같은 프로세서 확장을 전달하여 중첩 가상 머신의 실행을 용이하게 합니다. 중첩된 가상화 아키텍처는 물리적 AWS 인프라와 Nitro 하이퍼바이저(L0), 하이퍼바이저(L1)를 실행하는 EC2 인스턴스, 해당 인스턴스 내에 생성된 하나 이상의 가상 머신(L2)의 세 계층으로 구성됩니다.

## 고려 사항
<a name="nested-virtualization-considerations"></a>

중첩된 가상화 사용을 시작하기 전에 다음 사항을 고려하세요.
+ **지원되는 인스턴스 유형** - 중첩된 가상화는 현재 C8i, M8i 및 R8i 인스턴스에서 지원됩니다.
+ **지원되는 하이퍼바이저** - 현재 KVM과 Hyper-V가 지원되는 L1 하이퍼바이저입니다.
+ **Windows 인스턴스** - Windows 인스턴스에서 중첩된 가상화가 활성화된 경우:
  + **[Credential Guard](credential-guard.md)** - VSM(Virtual Secure Mode)이 자동으로 비활성화됩니다.
  + **최대 절전 모드** - 인스턴스 최대 절전 모드와 재개는 지원되지 않습니다.
  + **CPU 제한** - `m8i.96xl`과 같이 CPU가 192개 이상인 Windows 인스턴스에서는 지원되지 않습니다.
+ **보안 책임** - EC2 인스턴스에서 중첩된 가상화를 사용하는 경우 AWS가 ‘클라우드*의* 보안’을 책임지며 기본 인프라를 보호하고 AWS Nitro System에서 제공하는 EC2 인스턴스 간의 강력한 격리 경계를 유지합니다. 고객은 EC2 인스턴스 내 운영 체제, 하이퍼바이저, 중첩된 가상 머신, 게스트 운영 체제, 애플리케이션 및 데이터 보안을 포함한 ‘클라우드*의* 보안’을 책임집니다.
+ **성능** - AWS는 하드웨어 가상화 확장에 액세스해야 하고 성능에 민감하거나 지연 시간 요구 사항이 엄격한 워크로드를 실행하려는 고객에게 베어 메탈 인스턴스를 평가할 것을 권장합니다.

## 중첩된 가상화가 활성화된 새 인스턴스 시작
<a name="nested-virtualization-launch-new-instance"></a>

새 인스턴스를 시작할 때 중첩된 가상화를 켜서 하이퍼바이저와 그 위의 가상 머신을 실행할 수 있습니다.

**사전 조건**  
Amazon EC2 인스턴스를 시작하는 데 필요한 IAM 권한이 있어야 합니다.

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

**인스턴스 시작 중 중첩된 가상화를 활성화하려면 다음을 수행하세요.**

1. [콘솔에서 인스턴스 시작 마법사를 사용하여 EC2 인스턴스 시작](ec2-launch-instance-wizard.md) 절차를 수행하고 필요에 따라 인스턴스를 구성합니다.

1. 지원되는 인스턴스 유형이 선택되었는지 확인합니다.

1. **고급 세부 정보**를 확장하고 **중첩된 가상화**에서 **활성화**를 선택합니다.

1. **Summary**(요약) 패널에서 인스턴스 구성을 검토한 다음 **Launch instance**(인스턴스 시작)를 선택합니다.

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

**중첩된 가상화가 활성화된 인스턴스를 시작하려면 다음을 수행하세요.**  
[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 ]

**중첩된 가상화가 활성화된 인스턴스를 시작하려면 다음을 수행하세요.**  
[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
```

------

## 중첩된 가상화를 사용하도록 기존 인스턴스 구성
<a name="nested-virtualization-configure-existing-instance"></a>

기존 Amazon EC2 인스턴스에서 중첩된 가상화를 켤 수 있습니다.

**사전 조건**
+ 인스턴스가 [`stopped`] 상태여야 합니다.
+ 인스턴스 유형이 중첩된 가상화를 지원해야 합니다.

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

**기존 인스턴스에서 중첩된 가상화를 활성화하려면 다음을 수행하세요.**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 인스턴스 테이블에서 수정하려는 인스턴스를 선택합니다.

1. **작업**, **인스턴스 설정**, **CPU 옵션 변경**을 선택합니다.

1. **CPU 옵션 변경** 페이지의 **중첩된 가상화**에서 다음 옵션 중 하나를 선택합니다.
   + **활성화** - 인스턴스에 대해 중첩된 가상화를 켭니다.
   + **비활성화** - 인스턴스에 대해 중첩된 가상화를 끕니다.

1. 변경 사항을 검토하고 **변경**을 선택하여 새 CPU 옵션을 적용합니다.

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

**기존 인스턴스에서 중첩된 가상화를 활성화하려면 다음을 수행하세요.**  
먼저 인스턴스를 중지하고 [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 ]

**기존 인스턴스에서 중첩된 가상화를 활성화하려면 다음을 수행하세요.**  
먼저 인스턴스를 중지하고 [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
```

------