如何在Windows 8.1 Hyper-V中實現巢狀虛擬機(Nesting Virtual Machines)

Hyper-V一路發展至今,不但發展出了複本、零共享上線移轉…等等讓MIS們可以減輕工作負擔的功能,但一直讓人不解的,無法在Hyper-V發展出巢狀虛擬化的技術,使得大家都必須得要在底層安裝VMware workstation,再到VM中安裝Windows Server 2012 R2並啟用Hyper-V,我想大家會有這個需求,就是因為實體機器的資源實在是無法取得的狀況下,才會考慮使用這種方式來重現環境或是Lab,若今天可以在windows 的環境之下建構出Hyper-V為基礎的巢狀虛擬化,是不是就不再額外去裝軟體,或是準備其它的硬體,可以在一台設備上去重現出多台機器運作虛擬化環境的架構了...

Hyper-V一路發展至今,不但發展出了複本、零共享上線移轉…等等讓MIS們可以減輕工作負擔的功能,但一直讓人不解的,無法在Hyper-V發展出巢狀虛擬化的技術,使得大家都必須得要在底層安裝VMware workstation,再到VM中安裝Windows Server 2012 R2並啟用Hyper-V,我想大家會有這個需求,就是因為實體機器的資源實在是無法取得的狀況下,才會考慮使用這種方式來重現環境或是Lab,若今天可以在windows 的環境之下建構出Hyper-V為基礎的巢狀虛擬化,是不是就不再額外去裝軟體,或是準備其它的硬體,可以在一台設備上去重現出多台機器運作虛擬化環境的架構了。

當然要做這件事情門檻還不小,我們試問,若虛擬機器需要有三台建構在兩台實體機器上,那麼巢狀中的這兩台偽實體機器,是不是就至少得要有8GB以上的記憶體,再者因為是巢狀的架構,因此對於CPU的要求也很高,你要做為巢狀主機的CPU至少要符合下列的兩個需求:

  • Intel VT-x 或 AMD-V
  • Intel EPT 或 AMD RVI

以Jason的NB為例,雖然網路上有檢測工具CoreInfo,但在Jason的電腦中執行,卻顯示i7-4700MQ不支援(出現星號才有支援該功能,而最重要的VMX(也就是VT-x),以及EPT(也就是傳說中的SLAT;第二層定址傳輸)。害我傷心了一下。

※感謝偉任的指正,因為我已在Windows 8.1上已啟用Hyper-V因此測得結果為不支援,事實上是因為Hypervisor已被佔用!

image

 

最準確的,請上到你的CPU官網上查看有沒有這兩個功能最精準!! 害我又破涕為笑,師太在旁邊看著他老公像神經病一樣的一下子嘖嘖叫,一下子叫爽!!

image

 

而Jason的NB將記憶體插到頂32G,目前是使用Windows 8.1  Update1 x64專業版,如果你一切符合,接下來,我們就要開始囉!!

image

 

 

準備作業

首先我們會需要到一片Windows Server 2012 R2的ISO檔,以及事先裝好的ADK(Windows ),請照你的需求來取得:

ADK 8.0對映的是Windows 8及Windows Server 2012 http://www.microsoft.com/zh-tw/download/details.aspx?id=30652

ADK 8.1對映的是Windows 8.1及Windows Server 2012 R2 http://www.microsoft.com/zh-tw/download/details.aspx?id=39982

※特別注意,我們需要安裝的只有兩個組件:佈署工具及Windows 預先安裝環境 (Windows PE) ,本範例以Windows 8.1實現在Hyper-V中建立Windows Server 2012 R2的VM,再於Windows Server 2012 R2的VM中啟用Hyper-V。

image

 

開始動手玩

安裝好ADK之後,請將你的Windows Server 2012 R2 ISO掛載起來!

image

 

並且將上面的光碟內容原封不動的COPY到你的硬碟中,因為我們的操作過程中,必須要有掛接和修改映像檔的過程。

Jason所使用的是直接將摙個J:下的所有東西透過Robocopy將檔案複製到E:\WinISO目錄中

Robocopy j:\ e:\WinISO /e

image

 

接下來,請在你的電腦中選定一個至少有10G的空間,以本例以E:\為目的。並且於搜尋中叫出「部署與映像工具環境」以系統管理員身份執行,你可以直接在開始畫面中輸入CMD。

image

 

接下來利用DISM指令列出我們希望安裝的版本在install.wim中的Index值。

dism /get-imageinfo /imagefile:E:\WinISO\sources\install.wim

image

 

由上圖可知,索引1是標準版(Server Core),索引2是標準版(含GUI),索引3是DataCenter版(Server Core),索引4是DataCenter(含GUI),需要那個版本就自已長吧! 本例以DataCenter含GUI為例。

透過DISM工具將ISO檔中的資訊佈署到硬碟E:\NestingOS

dism /Mount-Image /ImageFile:E:\WinISO\sources\install.wim /Index:4 /MountDir:E:\NestingOS

image

 

※如果你出現下面的錯誤訊息,請將E:\WinISO\install.wim的檔案唯讀屬性拿掉。

image

image

 

我們來確認一下,看看有沒有長好呢!!.

image

 

完成上面的動作後,接下來我們就要把產生出來的檔案(E:\NestingOS)直接做啟用Hyper-V功能

dism /image:E:\NetingOS /Enable-Feature:Microsoft-Hyper-V

image

 

最後,我們要把產生好的映像佈署給回寫、斷開

※出現錯誤0XC1420117純粹是Jason在截圖時,把e:\NestingOS給打開了,如果你做的過程中,有用檔案管理員把它關閉了,就不會出現囉!

image

 

建立WindowsPE光碟

請一樣以系統管理員的身份啟用部署與映像工具環境,接下來輸入下列指令,並確認是否有產生成功:

CopyPE AMD64 E:\WinPE

image

image

 

接下來就要將WinPE產生的資料封裝成為ISO檔!

Makewinpemedia /iso E:\WinPE E:\NestingPE.iso

image

 

準備巢狀VM並安裝作業系統

安裝的過程中,你必須將剛才產生出來的NestingPE.ISO作為開機光碟,並且將它掛載到你的VM中,開機成功後,你有兩個選擇:

1.將你剛才建立好的E:\WinISO作成另一個ISO檔,讓虛擬機器掛載在另一個光碟機中進行安裝。

2.直接讓剛才建立好的E:\WinISO做分享,直接透過網路上的芳鄰,以NET指令將目錄掛載給VM進行作業系統安裝。

多數的人都會選擇以第二個方法來做,因為現成的,不需要再封裝,二來是因為,我們修改好的Install.wim變肥!! 再封裝回去ISO檔,又是一個空間的增長,不信?請看!!

imageimage

 

至於網路的設定,可以選擇以建立的內部網路虛擬交換器來做連結即可。

image

image

 

開機成功後,會在這個畫面中停一下子,沒關係,先去泡杯咖啡吧!!

image

 

接下來,請不要忘了,要先將你的E:\WinISO目錄做分享,並且在畫面中直接輸入下列指令:

(Jason的環境中,主機名稱是Jason-NB,請自行更換你的電腦名稱)

Net Use Z: \\Jason-NB\WinISO

接下來會要求要輸入帳號密碼,輸入完成後,就掛載成功囉!並且直接切到Z:下 Setup.exe安裝

 

image

 

接下來,你知道的,就死命的按下一步囉!

image

 

接下來我們就看到直接在伺服器管理員中,竟然出現了Hyper-V了耶!!

049f6d6028abf04e4d8325f383b1afd5

image

 

接下來,你還必須要先安裝Hyper-V管理員…等等的管理工具。

※記得,裝好管理工具要重開虛擬機喔!!

image

 

image

雖然這樣子的程序可以在Windows 8.1上運作,而Windows Server 可否運行Nesting,聽說是不行的,再找個時間實測看看吧! 有一點要跟大家說明的,由於網路卡在實體機器已經虛擬化了,到了虛擬機器中,已經無法再透過已虛擬化的網卡二次的虛擬化,因此只可以在VM中建立內部或私人網路,無法再將實體機器已虛擬給VM的虛擬交換器二次虛擬化,這點是美中不足的,希望本篇可以帶給大家一些小小的成本節省!


Anything keeps Availability.
Anywhere keeps Integrity.
Anytime keeps Confidentiality.
keep A.I.C. = Information Security