2017-01-20

Nested Virtualization on Windows (Hyper-V) Server 2016

Windows Server 2016 的 Hyper-V 開始支援 Nested Virtualization (巢狀虛擬化)
據說以前不提供這個功能是因為微軟認為不需要
但 Windows Server 2016 要開始支援 Container, 所以不得不提供巢狀虛擬化的功能

要使用巢狀虛擬化, 必須滿足/留意以下條件:

  • 實體 Virtualization Host 的 CPU 必須支援 VT-x 、EPT
  • Guest Hypervisor VM 必須啟用 vCPU Virtualization Extensions
  • Guest Hypervisor VM 提供給 Guest VM 的網卡必須啟用 MAC Address Spoofing
  • Guest Hypervisor VM 必須為 Generational 2
  • Guest Hypervisor VM Configuration Version 必須為 8.0
  • Guest Hypervisor VM 不可使用 Dynamic Memory
  • Guest Hypervisor VM 無法進行 Runtime Memory Resize
實作很簡單
建立一個 Windows Server 2016 的 Guest Hypervisor VM
用 CoreInfo 檢查會發現這個 Guest VM 不支援虛擬化
此時先將他關機
再在實體 OS 上執行以下 PowerShell 指令 (TestVM 為 Guest Hypervisor VM 的 Name)

$VMName = 'TestVM'
Set-VMProcessor -VMName $VMName -ExposeVirtualizationExtensions $true
Set-VMNetworkAdapter -VMName $VMName -MacAddressSpoofing on

再將 Guest Hypervisor VM 開機用 CoreInfo 檢查會發現已經具有虛擬化能力
安裝 Hyper-V Role 時也能成功
便可以開始巢狀虛擬化之路了

*. 可以多層巢狀虛擬化, 就像 Inception 一樣進入多層夢境...

沒有留言:

張貼留言