vhd模式

vhd模式

文件形式存在的虛拟機的磁盤
絕大多數人最初接觸VHD格式的文件,是在使用Virtual PC或者Virtual Server時,VHD是以文件形式存在的虛拟機的磁盤。[1]微軟在2005年公開了VHD格式文件的全部細節,可以從微軟的TechNet網站下載VirtualHardDiskImageFormatSpecification。這說明了微軟不僅僅要把VHD應用在虛拟機領域,更希望VHD能夠成為一種新的磁盤格式和載體在業界得到更多的支持。
  • 中文名:vhd模式
  • vhd實質:虛拟的硬盤
  • 分類:2.5寸、3.5寸等
  • 操作系統:Windows7

簡介

讓我們抛開虛拟機,把目光集中在VHD文件本身。VHD是一塊虛拟的硬盤,不同于傳統硬盤的盤片、磁頭和磁道,VHD硬盤的載體是文件系統上的一個VHD文件。

如果大家仔細閱讀VHD文件的技術标準,就會發現标準中定義了很多Cylinder、Heads和Sectors等硬盤特有的術語,來模拟針對硬盤的I/O操作。

既然VHD是一塊硬盤,那麼就可以跟物理硬盤一樣,進行分區、格式化、讀寫等操作。

我們這可以這樣認為,VHD也是硬盤的一種,就像2.5寸、3.5寸、SCSI、SATA、IDE等不同規格的硬盤一樣,VHD是在一個文件中的硬盤。

實現方式

在讨論具體的技術實現方式之前,我們首先需要理解操作系統對磁盤和文件的管理

操作系統有磁盤系統和文件系統兩部分,分别處理對硬盤的I/O讀寫指令(磁盤系統),和管理硬盤之上的分區、數據和文件格式(文件系統)。

VHD是存在于文件之上的磁盤,可想而知它的技術實現必須橫跨磁盤系統和文件系統這兩部分。如果您對操作系統中這一部分不是非常的了解,可以聽一聽微軟網站上的Windows存儲技術系列Webcast。

簡單的說,要把VHD文件當作硬盤一樣讀寫,必須有相應的驅動程序。在VirtualPC和VirtualServer中,微軟就是通過在虛拟機種加入VHD的驅動程序,使得虛拟機可以從VHD啟動并進行後續的操作。

在Windows7中,微軟把VHD的驅動内置進了操作系統,也包括在了Windows7的引導程序中。

這也就是說,我們可在使用Windows7的時候,直接訪問VHD文件中的内容(把VHD的硬盤映射到一個盤符,後面會詳細描述),也可以通過Windows7的引導程序,啟動位于VHD磁盤上的另一個操作系統。

理解VHD驅動的工作細節,需要比較多的Windows底層知識,下圖是一個比較簡單和抽象的結構,可以發現,VHD的驅動是跟磁盤驅動和文件系統緊密結合的。

應用

既然在Windows7中可以對VHD直接讀寫,讓我們來看看這個強大的功能到底能有多少過人之處。

首先,我們可以用命令行工具Diskpart創建VHD文件。

上面這段命令,創建了一個固定尺寸的VHD文件,并且進行了分區、分配盤符和格式化,一氣呵成。

Diskpart還能做很多事情,具體參數,請參考這個文檔,如果你不喜歡命令行,那麼Windows7的磁盤管理工具,一樣可以完成上述操作。現在我們看看VHD在Windows7中直接訪問的幾種方法:

方法一

Foo.VHD文件中可以包含一個以上的磁盤分區,這些分區都可以映射到Windows操作系統中,可以為之分配盤符,也可以映射到一個NTFS的目錄。

方法二

VHD的磁盤中可以包含VHD文件,這個VHD文件還可以被映射到操作系統中,目前版本的Windows支持2層嵌套VHD。

方法三

如果你還沒有被上面的嵌套VHD搞糊塗的話,還記得VHD文件的差異磁盤功能吧?Bar.VHD在嵌套的基礎上,使用物理C盤上的BarParent.VHD做成了一個差異磁盤。

其實這種方法還是挺實用的,不考慮嵌套,Foo.VHD可以使用BarParent.VHD做差異磁盤,如果這樣的話,從Foo.VHD啟動計算機,每次用完都通過批處理自動銷毀,硬盤保護卡的市場,恐怕從此要消失了。

方法四

我們可以把網絡共享裡面的VHD文件,映射到系統中來。這個功能,結合上面的那個差異磁盤,對,小硬盤學生機,都不用硬盤保護卡勒!

這些功能的确令人眼花缭亂,我們冷靜一下,看看VHD有什麼局限性和功能上的限制:最多可以同時映射的VHD文件數量是512個(似乎也夠用了)。

VHD磁盤的父分區,不支持VolumeSnapshot。

映射的VHD磁盤,不能被配置為動态磁盤,也就是不能在VHD上建軟RAID(知足吧,VHD實現已經很複雜了,軟RAID就不要來添亂了。

啟動電腦

如果說你對在Windows7中映射和使用VHD文件無動于衷,那麼,我相信從VHD啟動計算機一定會抓住你的眼球。

我之前提到了,在Windows7中,微軟把VHD的驅動内置進了操作系統,也包括在了Windows7的引導程序中。

這也就是說,在啟動計算機的階段,Windows7的引導程序可以大搖大擺的直接訪問VHD文件,并且啟動VHD中安裝的系統。

慢着,什麼是Windows7的引導程序?簡單地說,引導程序就是在操作系統内核或用戶應用程序運行之前運行的一段小程序。

通過這段小程序,可以初始化硬件設備(加載必要的驅動程序)、建立内存映射圖,從而将系統的軟硬件環境帶到一個合适的狀态,以便為最終調用操作系統内核或用戶應用程序準備好正确的環境。

在裸機上安裝Windows7時,首先做的,就是把Windows7的引導程序寫入磁盤的特殊位置。Windows7的引導程序帶有VHD驅動,因此可以從VHD啟動。

注意事項

1.從VHD啟動是有版本限制的,目前(2009年1月)的文檔指出隻有WindowsServer2008R2、Windows7商業版及以上版本,才支持此功能,未來正式發布時可能會有變化,敬請留意。

2.UDFS文件系統暫時不被支持

3.啟動用的VHD文件,不能保存在壓縮或者加密的NTFS磁盤之上(這一點很多人會忽略

4.根據一些朋友的反饋,動态的VHD文件無法啟動,需要在建立vhd是設置成立即分配才可以從vhd啟動

5.如果你的物理硬盤是RAID格式,則必須要在VHD中的操作系統鏡像中注入RAID的驅動程序,可以使用peimg命令。

相關詞條

相關搜索

其它詞條