1. 程式人生 > >在Windows Server 2016 Hyper-V中開啟巢狀虛擬化(NestedVM)

在Windows Server 2016 Hyper-V中開啟巢狀虛擬化(NestedVM)

2016年

 

早期如果我們想做Hyper-V功能測試,例如Hyper-V Cluster或者Hyper-V Replica時至少使用兩臺物理機器實現,作為大眾屌絲沒那麼多錢購買機器怎麼辦?——巢狀虛擬化。巢狀虛擬化,顧名思義,即在虛擬機器中執行虛擬機器。該技術最早出現在VMware產品中,包括我,早期介紹Windows Server 2012 R2 Hyper-V時也不得不借助VMware產品實現Hyper-V高階功能測試。

隨著Windows Server 2016的正式釋出,微軟伺服器虛擬化產品Hyper-V也帶來了該技術,即在Hyper-V虛擬機器內執行Hyper-V。通過使用巢狀虛擬化,我們可以繼續先前所說的高大上的功能,也能夠進行Windows Server 2016中另外一個新功能-Hyper-V Container【後續為大家帶來】。

其實作為IT人員或者企業管理員,大家都有一個共識:巢狀虛擬化技術似乎並不能在生產環境當中發揮任何重要作用。那麼究竟應該在哪些情況中使用巢狀虛擬化技術呢?既然不能在生產環境發揮重要作用,為什麼還大費周章開發這項技術?

個人認為使用巢狀虛擬化技術目前主要有以下場景:

第一:利用巢狀虛擬化技術搭建開發環境或者測試環境

過去,需要使用專用的物理伺服器才能夠完成一系列開發測試工作,因為需要在物理伺服器當中安裝 hypervisor,之後按照需求建立虛擬機器。使用這種方式的問題在於成本過高。IT部門沒有足夠的預算為開發/測試環境購買專用硬體。即便預算方面不存在問題,如果硬體使用率很低,也很難證明專用伺服器的必要性。

巢狀虛擬化技術可以解決這種問題,它允許IT部門在獨立環境當中建立開發/測試虛擬機器,並且不會產生任何專用硬體開銷。企業可以在一個單獨的虛擬 Hyper-V伺服器當中搭建完整的開發/測試環境。確實,這臺執行Hyper-V伺服器的虛擬機器需要大量記憶體、虛擬 CPU 和儲存才能夠保證虛擬化環境高效執行,但是Hyper-V能夠支援大規模虛擬機器。即便是這樣的大型虛擬機器也不會消耗過多的硬體資源,因此不用擔心需要購買額外的 硬體伺服器。

 

第二:培訓

使用者在進行Hyper-V培訓過當中肯定不希望一個沒有任何經驗的管理員操作生產環境當中的Hyper-V伺服器。但是可以使用巢狀虛擬化技術搭建一個全新環境,讓沒有經驗的管理員“安全”學習Hyper-V的各種原理與技術。

 

第三:“屌絲版”私有云

Hyper-V 巢狀虛擬化特性允許IT管理員為有經驗的使用者提供虛擬Hyper-V伺服器,將其作為私有云的替代解決方案。由於這些Hyper-V伺服器是虛擬的,因此管理員能夠限制資源使用情況,就像在真正的私有云環境當中一樣。Windows Server 2016當中的Hyper-V甚至支援動態增加記憶體和網絡卡,意味著管理員可以在 不產生任何中斷的情況下為虛擬 Hyper-V 伺服器新增額外的硬體資源。

不過就目前而言最大的作用就是解決實驗時機器不夠用的問題。

 

先決條件

  • 執行 Windows Server 2016 或 Windows 10 週年更新的 Hyper-V 主機。
  • 執行 Windows Server 2016 或 Windows 10 週年更新的 Hyper-V VM。
  • 配置版本為 8.0 或更高的 Hyper-V VM。
  • 採用 VT-x 和 EPT 技術的 Intel 處理器(AMD-V技術的暫時不支援)

配置巢狀虛擬化

1、 在Windows Server 2016中啟用Hyper-V角色,建立一臺虛擬機器

clip_image002

2、 以管理員身份執行Windows PowerShell,使用以下命令開啟Hyper-V巢狀虛擬化

Set-VMProcessor -VMName NestedVM -ExposeVirtualizationExtensions $true

clip_image004

3、 啟動並連線虛擬機器“NestedVM”

clip_image006

4、 在虛擬機器“NestedVM”中安裝Hyper-V角色

clip_image008

clip_image010

5、 在早期build中,如果想啟用Hyper-V巢狀虛擬化,還必須進行另一項設定:啟用MAC 地址欺騙,但是最新的RTM版本並不需要單獨進行設定,如果還想啟用MAC 地址欺騙,您可以使用命令列或者GUI操作

Get-VMNetworkAdapter -VMName NestedVM | Set-VMNetworkAdapter -MacAddressSpoofing On

clip_image012

6、 如果想禁用巢狀虛擬化,可使用以下 PowerShell 命令禁用已停止虛擬機器的巢狀虛擬化

Set-VMProcessor -VMName NestedVM -ExposeVirtualizationExtensions $false

 

在早期build中,當啟用巢狀虛擬化技術之後,如下功能無法使用:

  • 動態記憶體必須被關閉;
  • Runtime記憶體大小調整失敗;
  • 虛擬機器中的檢查點功能不能正常工作;
  • 不能進行實時遷移操作;
  • 無法使用虛擬機器“儲存”和“恢復”;

 

在Windows Server 2016 Hyper-V中啟用巢狀虛擬化之後如下功能依然不可用

  • 動態記憶體必須被關閉;
  • Runtime記憶體大小調整失敗;

clip_image014

可以使用Hyper-V中的“儲存”和“恢復”

clip_image016

 

最早在build10565時寫過一篇在Windows 10下啟用Hyper-V巢狀虛擬化技術,有興趣的朋友可以前往我的51CTO部落格:

Microsoft 巢狀虛擬化技術(Nested Virtualization)

http://ericxuting.blog.51cto.com/8995534/1704391

 本文固定連結: http://365vcloud.net/2016/10/10/%e5%9c%a8windows-server-2016-hyper-v%e4%b8%ad%e5%bc%80%e5%90%af%e5%b5%8c%e5%a5%97%e8%99%9a%e6%8b%9f%e5%8c%96%ef%bc%88nestedvm%ef%bc%89/ | Eric的學習之路