Windows 11/10의 중첩 가상화(Nested Virtualization)란?
중첩 가상화(Nested Virtualization)는 가상 머신(VM) 내부에 또 다른 하이퍼바이저를 실행할 수 있도록 해주는 기술입니다. Windows 10에서 처음 도입된 이 기능은 가상 환경 안에 가상 환경을 구축해야 하는 개발자와 테스터에게 특히 유용합니다. 꼭 필요하지 않더라도 알아두면 도움이 될 핵심 정보를 정리해 보았습니다.
컨테이너 안의 컨테이너: Windows의 중첩 가상화
이전에는 물리 메모리가 허용하는 한도 내에서 여러 개의 컨테이너를 병렬로 생성해 각기 다른 용도로 활용할 수 있었습니다. Microsoft는 Insider Build 10565부터 중첩 가상화 기능을 공개했으며, 이를 통해 컨테이너 안에 또 다른 컨테이너를 만드는 것이 가능해졌습니다. 아직 완벽한 수준은 아니지만, 그 구조와 활용 방법을 이해해 두면 큰 도움이 됩니다.
Hyper-V를 활용한 가상화
Windows는 Docker를 통해 간단한 형태의 컨테이너를 병렬로 생성하는 것을 지원하며, 일반 컨테이너보다 안정적인 Hyper-V 컨테이너 생성도 가능합니다. 여러 Windows 컨테이너를 병렬로 운영하다 보면 종종 동일한 라이브러리와 리소스를 공유하게 되는데, 이 경우 특정 컨테이너가 리소스를 점유한 채 반환하지 않아 다른 컨테이너의 작업이 막히는 문제가 발생할 수 있습니다. 바로 이러한 단점이 Hyper-V 컨테이너가 등장한 배경입니다.
Hyper-V 컨테이너는 각 가상 환경마다 필요한 모든 요소를 독립적으로 구성합니다. 운영체제조차 가상 환경별로 새로 만들어 해당 공간에서 실행되는 애플리케이션에 제공됩니다. 덕분에 공유되는 가상 리소스가 없어 리소스 충돌이 발생하지 않습니다.

Windows의 중첩 가상화는 Hyper-V를 통해 구현됩니다. Microsoft에 따르면 현재 중첩 가상화는 Hyper-V 컨테이너에서만 작동합니다. 따라서 첫 번째 컨테이너를 만든 뒤 그 내부에 또 다른 컨테이너를 생성하는 순서로 진행해야 합니다. 다른 하이퍼바이저를 사용하거나 이미 만든 컨테이너와 병렬로 새 Hyper-V 컨테이너를 만들려고 하면 정상적으로 작동하지 않을 수 있습니다.
중첩 가상화의 원리와 구현 방법
앞서 언급했듯이 Hyper-V 컨테이너를 생성하면 다른 하이퍼바이저가 실제 CPU를 직접 인식하지 못하도록 차단됩니다. 즉, 하이퍼바이저에게는 컨테이너만이 CPU처럼 보이며, 실제 물리 CPU는 감춰집니다. 여기서 자연스럽게 생기는 의문은 "Hyper-V 컨테이너를 두 개 이상 병렬로 만들 수 있는가, 아니면 최초 컨테이너 내부에만 생성할 수 있는가"입니다.
Microsoft 블로그에 따르면, Hyper-V 컨테이너를 한 번 생성하면 실제 CPU가 보이지 않기 때문에 그 외부에 추가 Hyper-V 컨테이너를 더 설치할 수 없습니다. 대신 다른 가상화 소프트웨어를 실행하면 해당 프로그램은 기존 컨테이너를 실제 CPU로 인식하고, 그 안쪽에 새로운 가상 컨테이너를 생성합니다.
이것이 바로 중첩 가상화입니다. 컨테이너 안에 컨테이너가 겹겹이 들어 있는 구조로, 각 계층은 서로 완전히 독립적이며 라이브러리나 드라이버를 공유하지 않습니다. 다음은 Microsoft에서 제공한 이미지로, 중첩 가상화의 작동 방식을 보여줍니다.

중첩 가상화를 실제로 구현하기 전에는 다음과 같은 요소들을 반드시 확인해야 합니다.
- RAM 용량 — RAM은 핵심 제약 요소입니다. 물리 메모리가 수용할 수 있는 만큼만 컨테이너를 생성할 수 있습니다.
- 프로세서 지원 여부 — 현재는 Intel VT-x를 지원하는 프로세서만 사용 가능합니다.
- 동적 메모리 비활성화 — 동적 메모리(Dynamic Memory) 기능을 반드시 꺼야 합니다.
- 런타임 메모리 모니터링 — 실행 중인 메모리 사용량을 지속적으로 점검해야 합니다.
현재 몇 가지 미해결 이슈가 남아 있지만, Microsoft가 향후 업데이트를 통해 점진적으로 개선해 나갈 예정입니다. 중첩 가상화를 직접 시험해 보고 싶다면 GitHub에서 공개된 PowerShell 스크립트를 활용할 수 있습니다.
Windows 11/10은 중첩 가상화를 지원하나요?
네, Windows 11과 Windows 10 모두 중첩 가상화를 지원합니다. 참고로 이 기능은 단순한 소프트웨어 기능이 아니라 하드웨어 기반 기능입니다. 따라서 사용 중인 PC가 SLAT(Second Level Address Translation, 2차 수준 주소 변환)을 지원해야 합니다. SLAT을 지원하지 않는 하드웨어에서는 중첩 가상화를 사용할 수 없습니다.
Windows 11/10에서 중첩 가상화를 활성화하는 방법
Hyper-V로 가상 머신을 생성하는 경우에는 별도의 추가 설정 없이도 중첩 가상화를 사용할 수 있는 경우가 많습니다. 반면 VirtualBox나 VMware를 사용한다면 각 프로그램의 설정에서 해당 옵션(예: "Nested VT-x/AMD-V", "Virtualize Intel VT-x/EPT")을 찾아 직접 활성화해야 합니다. 가상 머신을 실행하기 전에 이 옵션을 켜 두어야 게스트 OS 안에 또 다른 가상 머신을 생성하고 사용할 수 있습니다.
Windows 10에서 중첩 가상화 컨테이너를 만드는 자세한 절차와 추가 정보는 MSDN 블로그 게시물을 참고하시기 바랍니다.
