Windows 10 Hyper-V nested virtualization Problems

  • 246
  • 0
  • 2018-01-21

BUG ZERG SWORM!

最近遇上詭異的問題,一直以來習慣將Hyper-V常駐2個的Guest VM。結果卻發現...在某個Windows 10 的VM 啟動時會在Hosted顯示失敗!但過了兩三分鐘後再啟動就可以了!

失敗的情況會是 在Hyper-V manager上面的VM status欄位顯示 starting 然後不到一秒顯示成 canceled(持續loop 2次) 接下來就會停止啟動該VM了!

結果出現了...0X1E的錯誤!使用 CHKDSK檢查該在Host 以及Guest OS的部分卻沒有發現任何錯誤!最後....發現了一個可能性!

NESTED VIRTUALIZATION

在Windows Insider build 143XX的時候介紹了在Windows 10 AU更新將會帶來Nested Hyper-V的功能,所以可以在Guest OS下再開啟Hyper-V的功能。

開啟Nested Virtualization的需求如下:

Host OS -> 需要Windows 10 AU (14393) or Windows Server 2016

Guest OS -> 需要Windows 10 AU (14393) or Windows Server 2016

Hyper-V的設定檔版本需要8.0以上

需要Intel VT-X 和EPT技術的支援(可以去Intel ark檢查是否CPU有支援VT-X以及UEFI是否開啟VT-X和EPT)

開啟巢狀虛擬化的流程如下:

  1. 在Host上開啟Hyper-V的服務
  2. 關閉Guest OS
  3. 在Windows的Icon右鍵開啟Powershell (使用Admin權限)
  4. 使用以下指令
    
    Set-VMProcessor -VMName "放入VM的名稱" -ExposeVirtualizationExtensions $true
    // 比如VM名稱是Win10那指令就會如下
    // Set-VMProcessor -VMName Win10 -ExposeVirtualizationExtensions $true
    
    Set-VMProcessor -VMName "放入VM的名稱" -ExposeVirtualizationExtensions $false
    // 比如VM名稱是Win10那指令就會如下
    // Set-VMProcessor -VMName Win10 -ExposeVirtualizationExtensions $false
    
  5. 然後需要設定成動態記憶體配置

 

詳細原文設定Nested virtualization 網址( https://msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/user_guide/nesting