윈도우 서버 2019 / Hyper-V / 중첩된 가상화 - Hyper-V 가상 머신 안에 Hyper-V 만들기
중첩된 가상화
여러 팀이 같이 사용하는 테스트용 서버가 있다. OS는 Windows Server 2019이고, Hyper-V를 이용하여 가상 머신을 여러 개 만들어 이것 저것 시험한다. 이 때 불편한 점은 다른 팀의 가상 머신도 보이고, 호스트 설정을 마음대로 변경할 수 없다는 것이다. 각 팀 별로 독립적인 공간을 갖추고 싶다면 그 수만큼 물리적 서버가 있어야 할까?
이런 경우 중첩된 가상화를 고려해볼 수 있다. 중첩된 가상화는 Hyper-V로 만든 가상 머신 안에 다시 Hyper-V를 실행하여 가상 머신을 만드는 것이다. 즉, 각 팀에게 가상 머신을 올릴 수 있는 가상 머신을 할당해주면 되는 것.
중첩된 가상화를 사용하기 위한 조건은 다음과 같다.
- Hyper-V 호스트 및 게스트는 Windows Server 2016/Windows 10 1주년 업데이트 이상
- VM 구성 버전 8.0 이상
- VT-x 및 EPT 기술을 사용하는 Intel 프로세서
중첩된 가상화 사용하기
중첩된 가상화는 가상 머신 별로 사용 여부를 정한다. 기본 설정은 사용하지 않는 것이므로, 가상 머신 안에서 Hyper-V 기능을 추가하려고 하면 다음과 같이 오류가 난다.
중첩된 가상화를 사용하려면 해당 가상 머신을 끈 상태에서 다음과 같이 명령한다.
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
<VMName>은 가상 머신 이름으로, 마약 이름이 TEST 01이라면 다음과 같이 명령한다.
Set-VMProcessor -VMName "TEST 01" -ExposeVirtualizationExtensions $true
이제 가상 머신에 Hyper-V 기능을 추가하고 가상 머신을 만들 수 있다.
가상 머신 안의 가상 머신의 네트워크 통신을 위해서는 다음과 같이 명령한다.
Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On
중첩된 가상화 사용하지 않기
중첩된 가상화를 사용하지 않고 싶다면, 다음과 같이 true를 false로 변경하여 명령한다.(이것도 가상 머신을 끝 상태에서 한다.)
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false
위 명령을 내린 다음부터는 다음처럼 가상 머신 안의 가상 머신이 작동하지 않는다.