什麼是VHD檔?
VHD(Virtual Hard Disk)是微軟虛擬化技術體系下的終極產物,也是用來延續、衍伸、壯大虛擬化版圖野心的主要火力。它原本只能掛載於Virtual PC 2007及Virtual Server系統,到了Windows 7則搖身一變成為「原生、虛擬兩相宜」的雙棲格式,可以在虛擬機器內使用,也能掛載成實體磁碟區直接開機,靈活性十足。
第三方軟體也可以用
最重要的是,有別於一般虛擬機廠商使用的封閉系統,VHD是一種開放格式的解決方案,加上其對於自家虛擬化技術的依存及延展性,可半強迫虛擬化廠商跟著支援。不得不說,Virtual PC並非微軟主打的主流虛擬化應用,Hyper-V及Virtual Server才是真正用來賺錢的金母雞(事實上,VHD是在企業端沿用既久且廣的技術)。但不管如何,最終受益的仍是使用者,因為既然有了一個開放的映像檔格式,在挑選虛擬機軟體時就不會再綁手綁腳,也能有更自由並多元化的選擇。
▲ 不要以為VHD只是平凡無奇的映像檔文件,它真的是一顆摔不壞的「虛擬」硬碟,擁有完整的定軌結構,而且萬年保固!
VHD檔三類型
深入介紹VHD的應用前,了解其架構及基本格式能讓日後的運用更得心應手。事實上VHD檔的類型並不複雜,熟習虛擬機器設置的玩家一定似曾相識,因為它跟一般映像檔的玩法沒啥兩樣(差異不大),主要可分為以下三類:
Fixed(固定容量)
通常會直接指定給虛擬機器使用、最為普遍的基本儲存方式就是採「固定容量」。先在實體磁碟區上畫分出一定的區塊後,直接配給映像檔使用,用滿為止。虛擬磁碟區多大,映像檔就能有多大。而固定容量的好處是存取效能最好,最不容易出問題。
不過也因為如此,虛擬磁碟區的大小將會受限於映像檔所佔用的實體空間,所以也會受到主系統上文件格式的限制。譬如你不可能在FAT32磁區上建立一個超過4GB,型態為固定容量的虛擬系統。
Dynamic(動態擴展)
因為某些特殊應用的需求,比如伺服器上的共享磁碟空間彌足珍貴,使用固定容量的映像檔容易造成浪費,改採「用多少、給多少」的分配方式較能有效節省磁碟空間。
這時候,Dynamic型態的映像檔就派上用場了。雖然在虛擬系統裡看見的磁碟區是固定的,映像檔所能增長的空間也是固定的,但是基本上「實體磁碟區的容量」並不會一開始就被全部佔走,而是按照虛擬磁碟區裡真正已經使用的空間多寡而定,這個概念與許多磁碟加密軟體的「Sparse File」模式有異曲同工之妙。
Differencing(差異擴增)
Differencing則是比較特別的映像檔類型,它讓微軟引以為傲,卻可能讓你又愛又恨。Differencing映像檔結構比較複雜,若非虛擬機器或系統的維護者通常不需要全盤了解,不過必須知道的是:Differencing映像檔是由一個「主參考映像檔」與許多「差異映像檔」所組成的關係鏈,在備份還原及資料部署的應用上,它可以算是最節省空間的儲存方式,卻也是相依性最高、結構最複雜的組合格式。
Differencing一定會有一個主映像檔(parent image),它是唯讀、只能用來參考的;從其延伸而出的其他子映像檔(differencing image)則只記錄了更改後的區塊。因此,當子映像檔被讀取時,其實大部份都是先讀取主映像檔,再參考自己本身修改過的內容來相輔相成,藉此達到節省空間的效果。 差異擴增映像檔適合哪些應用呢?比如已經有一個Windows 7系統,將其打包成VHD檔後,便可利用差異擴增的方式輕鬆複製出好幾個相同的系統,不需要重新安裝或備份整個磁碟,省時又省空間。
為何需要VHD檔?
VHD的檔案格式,與實體硬碟的定軌結構有不少雷同之處,比如「Cylinder」、「Heads」及「Sector」般的定址運用。事實上,微軟的意圖十分明顯,就如VHD的全名「Virtual Hard Disk」,VHD確實就是一顆虛擬的硬碟,這顆虛擬硬碟不只可以在虛擬機器內使用,還能直接掛載在實體系統上,應用性及延展性更加廣泛。
簡單的說,從現在開始,我們得打破「VH D只是一個映像檔」的舊有概念。因為在Windows 7裡,它是確確實實存在的一顆硬碟。就算你不玩虛擬系統、沒有備份或還原Windows 7的需求,VHD也能夠讓數以萬計檔案的搬移及管理更加方便,因為在Windows裡,搬一個大檔案要比搬好幾個小檔案快得多。
Tips:Acronis True Image 2010也能玩
最新的Acronis True Image可以把自家的tib備份檔轉換成VHD,不但如此,還內建VHD原生開機的設置功能。有了這套軟體,其實本篇專題後面的教學可以全部省略。
玩不壞的VHD
要發揮VHD的最大價值,就是要在上面裝Windows 7。首先我們要了解,何謂「VHD原生開機」。利用VHD原生開機,代表不必透過虛擬機器或任何虛擬層(hypervisor)來載入位於VHD中的作業系統,也就是可以直接從開機選單中指定以VHD磁碟來開機。
效能會不會很差?
基本上,VHD系統的劣勢是在多了一層磁碟存取的轉換,其他部份就跟原生系統一樣是「直接存取硬體元件」的,並沒有再經過一層虛擬化的轉換動作,所以最明顯的效能落差只會出現在磁碟存取上。至於其他使用習慣幾乎沒有差異,也不需要特殊使用技巧,在VHD系統裡一樣能看見並存取其他實體磁碟區,並沒有因此而受到隔離或限制。
「把一個映像檔當作一個硬碟來使用」的觀念其實一點也不新奇,虛擬光碟機其實也是做類似的事。然而VHD的運作卻比虛擬光碟複雜許多,因為虛擬光碟充其量只是「提取文件」,VHD卻是在底層的磁碟結構上都做了一定程度的模擬。
最簡單的例子:不管是虛擬光碟或VHD都需要有驅動,系統才能對其進行存取,然而VHD的驅動卻是在Windows 7還沒進入桌面程序、在開機選單引導時就能夠載入。也就是說,不必進入實體Windows 7,就可以直接運行虛擬的Windows 7系統,非常神奇吧!
VHD系統怎麼裝?
事實上,不論是建立及使用VHD磁碟,或是直接把整套Windows 7系統包在裡面玩,都比我們想像中簡單。 使用Virtual PC產生的映像檔就是現成的VHD,但是VHD不需要、也不必靠Virtual PC就能製作,執行Windows 7內建的磁碟管理工具來產生及掛載即可,如果有批次處理需求,寫腳本程式(script)從命令列下指令也行。 不過VHD檔並非萬能,虛擬化的產物仍舊有目前技術尚無法克服的缺陷,為了避免在實作過程中出錯,要先了解一下VHD檔的使用有哪些先天限制:
作業系統
只有以下三種版本的Windows 7可以使用VHD原生開機──Windows 7 Enterprise、Windows 7 Ultimate及Windows Server 2008 R2,其餘敬謝不敏。
電源管理
以VHD開機的系統只能用睡眠模式,不支援休眠。
磁碟要求
存放VHD檔案的磁碟本身不可以是動態磁碟、不能使用NTFS加密或壓縮、不能是其他磁碟的鏡像。 以上三項限制是一般使用者最可能會碰到的情況,其餘雞毛蒜皮如:BitLocker的支援限制、不支援SMB等,在一般作業環境下便無須理會。
Tips:VHD是怎麼運作的?
這兩張圖可解釋VHD運作的系統核心元件及流程。基本上VHD仍然是一個檔案,它必須建立在既有的文件系統上,因此在磁碟存取的運作上會比原生系統多了幾道工。
動手建立VHD磁碟
Step 1
在「我的電腦」上按右鍵,進入「電腦管理」後選擇「磁碟管理」,出現兩個VHD選項。其中「連結VHD」是掛載已經做好的VHD檔案,「建立VHD」才是產生新的VHD磁碟。
Step 2
選擇磁碟型態、存放位置及容量大小,沒把握的話請不要選動態磁碟,除了限制不少、實際用處也不大。
Step 3
創建完成後,它還不會出現在磁碟區列表裡,但是已經可在下方視窗中看到,需要先進行初始化。
Step 4
點擊右鍵>切始化,選擇MBR格式,這個分割才能開始使用。
Step 5
接下來指定磁碟區、檔案系統及進行格式化,與一般硬碟的操作沒有兩樣。
Step 6
格式化完成後,整個VHD磁碟才算大功告成,在「我的電腦」裡可以看到已經成功掛載,盡情地把它當作一般硬碟使用吧!
我怎麼覺得看到UnionFS或Aufs的Clone?
> 我怎麼覺得看到UnionFS或Aufs的Clone?
就像游泳跑步一樣………╮(╯_╰)╭
我還是弄不清楚VHD為什麼是實體的虛擬硬碟
是在我們原有的硬碟中分割一塊給VHD用嗎?
就像我們會把硬碟分割成C或D槽一樣?
> 請問主編大大
> 我還是弄不清楚VHD為什麼是實體的虛擬硬碟
> 是在我們原有的硬碟中分割一塊給VHD用嗎?
> 就像我們會把硬碟分割成C或D槽一樣?
>
你就假想他跟硬碟分割一樣囉
VHD設定出來他就會獨立出現在磁碟管理裡面
只是一個是實體一個是邏輯
麻煩你回覆指教一下 謝謝您
PS:我是想把 Win8 灌進 VHD 玩雙系統