Hyper-v之利用差異磁盤快速創建多個虛擬機

在新建Hyper-v磁盤的時候 有3種選項

image

其中分別是 固定大小 動態擴展 和 差異(differencing,個人習慣叫 差分)

其中

固定大小是新建的時候 Hyper-v創建一個設置大小值的文件,然後才就可以使用

優點是 速度相對比較快 而且不容易產生物理上的磁盤碎片

缺點 一開始就佔用了所設置值的空間 佔用空間大 而且新建的時候產生的時間要很久(因爲系統要填充這個虛擬磁盤)

建議用於實際生產環境

動態擴展是新建的時候只佔用很小的空間(大概是4m左右吧)然後使用的時候隨着佔用空間的增大跟着增長其空間

優點是 虛擬磁盤佔用的空間隨着使用的增長而增長 有效提高硬盤利用率 新建速度很快

缺點 速度比較慢,而且由於是動態增長可能會在物理磁盤上產生碎片

建議用於實驗性環境

差異 這個需要一個父磁盤爲基礎,差異的磁盤連接到父磁盤,然後差異的那個磁盤引用父磁盤的數據,同時保存相對於父磁盤的更改數據

其結構類似於下圖

image

差異磁盤建議用於很多數據是相同的情況下 把相同的數據保存爲一個父磁盤 然後創建差異磁盤引用那個父磁盤的數據

 

很多時候 我們在使用虛擬機的時候 都要新建虛擬機 然後在裏面安裝系統

而一個系統 現在的win7/8或者其他系統 都基本接近10g左右的體積,如果要多個虛擬機的情況下 這是一筆很客觀的硬盤佔用

那麼 我們可以使用差異磁盤的方式,先裝好一個系統,然後進行初始化封裝之後做成一個父磁盤,在新建n個差異磁盤,這樣就可以很方便的可以快速新建n個虛擬機了

 

 

說了一堆基礎的東西之後

下面說如何用差異磁盤來快速創建虛擬機

首先,先創建一個父磁盤,在裏面安裝好系統(本文以ws2012爲例)

先裝好系統(這個不用詳說了吧?)進入系統,然後可以給系統做一些基礎配置,比如ws2012有些人不喜歡開機跳出那個服務器管理器 可以取消

然後諸如winrar或者.net 3.5一類的常用的東西也可以安裝好來

之後使用sysprep進行系統封裝

在ws2012下按 win+x 然後a   或者其他辦法 用管理員打開命令行提示符

輸入 sysprep\sysprep

然後如下圖選擇(關於sysprep的詳細介紹可以參考微軟官方的文檔http://technet.microsoft.com/zh-cn/library/cc766049(v=ws.10).aspx)

image

確定之後 稍等片刻等系統清理完信息 就會自動關機 自此 父磁盤就創建好了

(雖說不用sysprep也可以差分磁盤也可以使用,但是那樣子用差異磁盤建立的多個虛擬機的SID是一樣的,如果之後要做諸如域一類的實驗的話就會有問題了,sysprep就可以清除掉那些信息

然後在下一次開機的時候就會像重裝電腦完之後那樣對電腦進行初始化設置,比如掃描硬件 新建一個新的sid等)

有了父磁盤之後,照着上面步驟創建一個差異磁盤

打開hyper-v管理器,新建-磁盤

image

然後跳出嚮導,在2個下一步之後,在選擇磁盤類型裏選擇 差異

image

然後指定新建的差異磁盤保存位置和名字

image

在下一步後指定父磁盤的位置,即剛纔創建的那個帶操作系統的盤的位置

image

 

至此創建好了一個差異磁盤

該差異磁盤完整的引用了父磁盤的所有數據,一開始使用的時候,跟直接使用父磁盤是完全一致的

然後該差異磁盤會保存其相對於父磁盤的差異配置,比如父磁盤裏沒有qq,但是你在差異的那個磁盤的系統上裝了qq,那麼差異磁盤就會保存有qq的數據

新建一個使用差異磁盤的虛擬機

新建-虛擬機

在連接虛擬磁盤那一步,選擇剛纔新建的那個差異磁盤即可

image

 

每次需要一個新的系統的時候,先新建一個差異磁盤並且引用封裝好的那個父磁盤,然後在新建虛擬機的時候使用該差異虛擬磁盤即可

使用差異磁盤的注意事項

1.由於差異磁盤的父磁盤只有一個文件,當多個虛擬機使用差異磁盤的時候大家都是用這個父磁盤,需考慮硬盤io問題,所以建議父磁盤最好放在比較高速的地方,比如ssd裏(就算不通過差異的話貌似這也是個相當糾結的問題)

2.一旦封裝好父磁盤之後,就不要在直接使用父磁盤來啓動,不然會破壞父磁盤封裝然後導致所有差異磁盤的引用失效

 

ps:虛擬機的快照其實也是利用了差異磁盤的原理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章