중첩된 가상화를 사용하여 Amazon EC2 인스턴스에서 하이퍼바이저 실행
중첩된 가상화를 사용하면 가상 Amazon EC2 인스턴스 내에서 Hyper-V, KVM 등의 하이퍼바이저를 실행할 수 있습니다. 가상 EC2 인스턴스는 비베어 메탈 인스턴스입니다. 이 기능은 프로세서 수준의 가상화 지원을 가상 EC2 인스턴스에 추가하여 가상화 유연성을 확장하므로 인스턴스에서 실행되는 하이퍼바이저가 가상 머신을 생성하고 관리할 수 있습니다.
중첩된 가상화는 Docker Desktop, Windows Subsystem for Linux 2(WSL2), Android Studio 에뮬레이터, QEMU와 같은 개발 도구를 개발 워크플로에서 실행할 때 유용합니다. 이를 통해 특정 성능 및 가격 요구 사항을 충족하는 다양한 표준 Amazon EC2 가상 인스턴스 유형 중에서 선택할 수 있기 때문입니다.
중첩된 가상화 사용에 따른 추가 비용은 없습니다.
작동 방식
가상 EC2 인스턴스는 Nitro 하이퍼바이저가 있는 물리적 호스트에서 실행됩니다. 중첩된 가상화를 지원하기 위해 Nitro System은 인스턴스에 Intel VT-x와 같은 프로세서 확장을 전달하여 중첩 가상 머신의 실행을 용이하게 합니다. 중첩된 가상화 아키텍처는 물리적 AWS 인프라와 Nitro 하이퍼바이저(L0), 하이퍼바이저(L1)를 실행하는 EC2 인스턴스, 해당 인스턴스 내에 생성된 하나 이상의 가상 머신(L2)의 세 계층으로 구성됩니다.
고려 사항
중첩된 가상화 사용을 시작하기 전에 다음 사항을 고려하세요.
-
지원되는 인스턴스 유형 - 중첩된 가상화는 현재 다음 인스턴스 유형에서 지원됩니다.
범용: M7i | M7i-flex | M8i | M8id | M8i-flex
컴퓨팅 최적화: C7i | C7i-flex | C8i | C8id | C8i-flex
메모리 최적화: R7i | R7iz | R8i | R8id | R8i-flex | X8i
스토리지 최적화: I7i | I7ie
-
지원되는 하이퍼바이저 - 현재 KVM과 Hyper-V가 지원되는 L1 하이퍼바이저입니다.
-
Windows 인스턴스 - Windows 인스턴스에서 중첩된 가상화가 활성화된 경우:
-
Credential Guard - VSM(Virtual Secure Mode)이 자동으로 비활성화됩니다.
-
최대 절전 모드 - 인스턴스 최대 절전 모드와 재개는 지원되지 않습니다.
-
CPU 제한 - m8i.96xl과 같이 CPU가 192개 이상인 Windows 인스턴스에서는 지원되지 않습니다.
-
보안 책임 - EC2 인스턴스에서 중첩된 가상화를 사용하는 경우 AWS가 ‘클라우드의 보안’을 책임지며 기본 인프라를 보호하고 AWS Nitro System에서 제공하는 EC2 인스턴스 간의 강력한 격리 경계를 유지합니다. 고객은 EC2 인스턴스 내 운영 체제, 하이퍼바이저, 중첩된 가상 머신, 게스트 운영 체제, 애플리케이션 및 데이터 보안을 포함한 ‘클라우드의 보안’을 책임집니다.
-
성능 - AWS는 하드웨어 가상화 확장에 액세스해야 하고 성능에 민감하거나 지연 시간 요구 사항이 엄격한 워크로드를 실행하려는 고객에게 베어 메탈 인스턴스를 평가할 것을 권장합니다.
중첩된 가상화가 활성화된 새 인스턴스 시작
새 인스턴스를 시작할 때 중첩된 가상화를 켜서 하이퍼바이저와 그 위의 가상 머신을 실행할 수 있습니다.
- Console
-
인스턴스 시작 중 중첩된 가상화를 활성화하려면 다음을 수행하세요.
-
콘솔에서 인스턴스 시작 마법사를 사용하여 EC2 인스턴스 시작 절차를 수행하고 필요에 따라 인스턴스를 구성합니다.
-
지원되는 인스턴스 유형이 선택되었는지 확인합니다.
-
고급 세부 정보를 확장하고 중첩된 가상화에서 활성화를 선택합니다.
-
Summary(요약) 패널에서 인스턴스 구성을 검토한 다음 Launch instance(인스턴스 시작)를 선택합니다.
- AWS CLI
-
중첩된 가상화가 활성화된 인스턴스를 시작하려면 다음을 수행하세요.
run-instances 명령을 사용합니다.
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type r8i.4xlarge \
--cpu-options "NestedVirtualization=enabled" \
--key-name my-key-pair
- PowerShell
-
중첩된 가상화가 활성화된 인스턴스를 시작하려면 다음을 수행하세요.
New-EC2Instance 명령을 사용합니다.
New-EC2Instance `
-ImageId ami-0abcdef1234567890 `
-InstanceType r8i.4xlarge `
-CpuOption @{NestedVirtualization='enabled'} `
-KeyName my-key-pair
기존 Amazon EC2 인스턴스에서 중첩된 가상화를 켤 수 있습니다.
- Console
-
- AWS CLI
-
기존 인스턴스에서 중첩된 가상화를 활성화하려면 다음을 수행하세요.
먼저 인스턴스를 중지하고 modify-instance-cpu-options 명령을 사용합니다.
aws ec2 modify-instance-cpu-options \
--instance-id i-1234567890abcdef0 \
--core-count 4 \
--threads-per-core 2 \
--nested-virtualization enabled
- PowerShell
-
기존 인스턴스에서 중첩된 가상화를 활성화하려면 다음을 수행하세요.
먼저 인스턴스를 중지하고 Edit-EC2InstanceCpuOption 명령을 사용합니다.
Edit-EC2InstanceCpuOption `
-InstanceId i-1234567890abcdef0 `
-CoreCount 4 `
-ThreadsPerCore 2 `
-NestedVirtualization enabled
중첩된 가상화를 지원하는 인스턴스 유형 찾기
중첩된 가상화를 지원하는 Amazon EC2 인스턴스 유형을 찾을 수 있습니다. 전체 AWS 리전을 쿼리하거나 특정 인스턴스 유형을 확인할 수 있습니다.
- AWS CLI
-
리전에서 중첩된 가상화를 지원하는 모든 인스턴스 패밀리를 나열하려면
describe-instance-types 명령을 processor-info.supported-features 필터와 함께 사용하고 값을 nested-virtualization으로 설정합니다.
aws ec2 describe-instance-types --region us-east-1 \
--filters "Name=processor-info.supported-features,Values=nested-virtualization" \
--query "InstanceTypes[].InstanceType" --output text \
| tr '\t' '\n' | cut -d. -f1 | sort -u
특정 인스턴스 유형이 중첩된 가상화를 지원하는지 확인하려면
describe-instance-types 명령을 사용하여 지정된 인스턴스 유형의 ProcessorInfo.SupportedFeatures 필드를 쿼리합니다.
aws ec2 describe-instance-types \
--instance-types m8i.2xlarge \
--query "InstanceTypes[].ProcessorInfo.SupportedFeatures"
인스턴스 유형이 중첩된 가상화를 지원하는 경우 출력에는 nested-virtualization이 포함됩니다. 그렇지 않은 경우 명령은 빈 배열([])을 반환합니다.
- PowerShell
-
리전에서 중첩된 가상화를 지원하는 모든 인스턴스 패밀리를 나열하려면
processor-info.supported-features 필터가 nested-virtualization 값으로 설정된 상태에서 Get-EC2InstanceType 명령을 사용합니다.
Get-EC2InstanceType -Region us-east-1 -Filter @{ Name='processor-info.supported-features'; Values='nested-virtualization' } |
ForEach-Object { ($_.InstanceType -split '\.')[0] } |
Sort-Object -Unique
특정 인스턴스 유형이 중첩된 가상화를 지원하는지 확인하려면
Get-EC2InstanceType 명령을 사용하여 지정된 인스턴스 유형의 ProcessorInfo.SupportedFeatures 속성을 쿼리합니다.
(Get-EC2InstanceType -InstanceType m8i.2xlarge).ProcessorInfo.SupportedFeatures
인스턴스 유형이 중첩된 가상화를 지원하는 경우 출력에는 nested-virtualization이 포함됩니다. 그렇지 않으면 명령은 아무 출력도 반환하지 않습니다.