把 Windows 7 灌進 VHD 虛擬磁碟(上)

把 Windows 7 灌進 VHD 虛擬磁碟(上)
Windows XP Mode的首要組成核心是Virtual PC加上Windows XP的VHD映像檔。然而,Virtual PC本身並不稀奇,比起他牌的虛擬機器甚至只是小咖一隻,倒是新出現的VHD技術顛覆了「映像檔只能在虛擬機器使用」的傳統思維,它甚至可以直接拿來開機,而且主系統的備份還原也能變得更加簡單,堪稱為目前功能最多、支援程度也最廣的映像檔格式。

什麼是VHD檔?

VHD(Virtual Hard Disk)是微軟虛擬化技術體系下的終極產物,也是用來延續、衍伸、壯大虛擬化版圖野心的主要火力。它原本只能掛載於Virtual PC 2007及Virtual Server系統,到了Windows 7則搖身一變成為「原生、虛擬兩相宜」的雙棲格式,可以在虛擬機器內使用,也能掛載成實體磁碟區直接開機,靈活性十足。

第三方軟體也可以用

最重要的是,有別於一般虛擬機廠商使用的封閉系統,VHD是一種開放格式的解決方案,加上其對於自家虛擬化技術的依存及延展性,可半強迫虛擬化廠商跟著支援。不得不說,Virtual PC並非微軟主打的主流虛擬化應用,Hyper-V及Virtual Server才是真正用來賺錢的金母雞(事實上,VHD是在企業端沿用既久且廣的技術)。但不管如何,最終受益的仍是使用者,因為既然有了一個開放的映像檔格式,在挑選虛擬機軟體時就不會再綁手綁腳,也能有更自由並多元化的選擇。

把 Windows 7 灌進 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原生開機的設置功能。有了這套軟體,其實本篇專題後面的教學可以全部省略。

把 Windows 7 灌進 VHD 虛擬磁碟(上)

把 Windows 7 灌進 VHD 虛擬磁碟(上)

把 Windows 7 灌進 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仍然是一個檔案,它必須建立在既有的文件系統上,因此在磁碟存取的運作上會比原生系統多了幾道工。

把 Windows 7 灌進 VHD 虛擬磁碟(上)

把 Windows 7 灌進 VHD 虛擬磁碟(上)

動手建立VHD磁碟

Step 1

在「我的電腦」上按右鍵,進入「電腦管理」後選擇「磁碟管理」,出現兩個VHD選項。其中「連結VHD」是掛載已經做好的VHD檔案,「建立VHD」才是產生新的VHD磁碟。

把 Windows 7 灌進 VHD 虛擬磁碟(上)

Step 2

選擇磁碟型態、存放位置及容量大小,沒把握的話請不要選動態磁碟,除了限制不少、實際用處也不大。

把 Windows 7 灌進 VHD 虛擬磁碟(上)

Step 3

創建完成後,它還不會出現在磁碟區列表裡,但是已經可在下方視窗中看到,需要先進行初始化。

把 Windows 7 灌進 VHD 虛擬磁碟(上)

Step 4

點擊右鍵>切始化,選擇MBR格式,這個分割才能開始使用。

把 Windows 7 灌進 VHD 虛擬磁碟(上)

Step 5

接下來指定磁碟區、檔案系統及進行格式化,與一般硬碟的操作沒有兩樣。

把 Windows 7 灌進 VHD 虛擬磁碟(上)

Step 6

格式化完成後,整個VHD磁碟才算大功告成,在「我的電腦」裡可以看到已經成功掛載,盡情地把它當作一般硬碟使用吧!

把 Windows 7 灌進 VHD 虛擬磁碟(上)

T小編
作者

使用 Facebook 留言
Cc71a7e0c2171af5a740610cd0d6f40d?size=48&default=wavatar
1.  zz (發表於 2010年11月14日 16:13)
>其實大部份都是先讀取主映像檔,再參考自己本身修改過的內容來相輔相成

我怎麼覺得看到UnionFS或Aufs的Clone?
fb:100001268361643
3.  fb:100001268361643 (發表於 2010年11月15日 07:32)
請問主編大大
我還是弄不清楚VHD為什麼是實體的虛擬硬碟
是在我們原有的硬碟中分割一塊給VHD用嗎?
就像我們會把硬碟分割成C或D槽一樣?
neco
4.  neco (發表於 2010年11月15日 09:16)
※ 引述《fb:100001268361643》的留言:
> 請問主編大大
> 我還是弄不清楚VHD為什麼是實體的虛擬硬碟
> 是在我們原有的硬碟中分割一塊給VHD用嗎?
> 就像我們會把硬碟分割成C或D槽一樣?
>
你就假想他跟硬碟分割一樣囉
VHD設定出來他就會獨立出現在磁碟管理裡面
只是一個是實體一個是邏輯
86a44558c97c941aa09c51d980badef0?size=48&default=wavatar
6.  老沾 (發表於 2011年7月15日 23:11)
我現在最大的問題是原本在A機器做的vhd,不知道怎麼移到B機器一樣可以雙開機? copy vhd過去都沒辦法掛載,使用bcdedit加入了開機選單,可是進vhd就會出現藍屏後重開,有什麼方法呢?搞死我了...
6e45dcc959627d17f1db52d73a6c2827?size=48&default=wavatar
7.  Macro (發表於 2012年11月11日 18:13)
╮(╯_╰)╭ 不好意思 請教一下:我照你這篇的方法成功建立了VHD,可是為什麼我電腦重開後、打開『檔案總管』跟『磁碟管理』都沒有看到磁碟,是不是還需要設定什麼才可自動掛載VHD磁碟?

麻煩你回覆指教一下 謝謝您

PS:我是想把 Win8 灌進 VHD 玩雙系統
Asdtel Lin
8.  Asdtel Lin (發表於 2013年3月16日 21:25)
想請教,VHD開機僅win7企業版、旗艦版才支援,那可有辦法可以克服在win7家用進階版下使用?更改boot嗎?謝謝!再請教,使用vhd環境若中毒,是否會影響到原本的系統,謝謝!
Asdtel Lin
9.  Asdtel Lin (發表於 2013年3月19日 21:58)
再請教,官網購買後下載的win8版本裡面只找到install.esd 而不是install.wim,該如何解決呢?
發表回應
謹慎發言,尊重彼此。按此展開留言規則