2010年8月2日 星期一

VVirtual PC/Virtual Server與Hyper-V的VHD相容性


VVirtual PC/Virtual Server與Hyper-V的VHD相容性

在Windows 2008之前,我一直使用Virtual Server 2005來跑VM,所以手上有一堆經營多時的VM: Windows XP, Windows 2003, Vista, Windows 2008...
說老實話,要搞好一個開發測試環境,從灌OS、上Update、安裝必要的軟體,耗掉時間十分可觀(我寶貴的青春吶~~),換到Windows 2008後,若能直接把Virtual Server的VM Image(VHD檔)拿來用,省去砍掉重練的功夫,豈不快哉。
不過,先前實測的經驗不甚理想,搬移後OS或許可用,但總有一堆網路無法使用、滑鼠整合失效之類的後遺症,所以我印象中認定它不可行,還是選擇乖乖重裝新VM。
今天找到一篇文章(Are VHDs compatible between Hyper-V and Virtual Server and Virtual PC?),解答我多年的困惑。歸納成簡單結論: 雖然VHD格式未變,但Hyper-V需要的HAL版本(IO-APIC)與Virtual PC/Virtual Server需要的HAL版本(PIC)不同。所以可想像成將電腦A的HD拔起來插到電腦B時,若OS HAL版本與新硬體不匹配,就會衍生問題。[HAL的定義: 中文英文]
不相容的狀況分成兩種: Hyper-V的VHD(IO-APIC)移到VPC/Virtual Server的環境(PIC)必死無疑,連開機都別想。而我比較在意的VPC/Virtual Server VHD(PIC HAL)移到Hyper-V(IO-APIC),答案則是: 可行,只要不裝整合元件(Integration Components)的話。[這解釋了為什麼VM移到Hyper-V後網路卡、滑鼠整合會出錯。]
那麼HAL版本不同的問題可以解決嗎? Windows Vista以前的OS,HAL版本是在安裝過程決定的,雖然有些奇門遁甲之術可以抽換HAL,但並不在微軟官方支援範圍內。Windows Vista/Windows 7/Windows 2008比較幸運,可以透過以下的手法解決: [參考]
移到Hyper-V的Virtual Server VHD開機後會看到"Virtual Machine Bus"裝置出現小驚嘆號:
先移除舊版的Virtual Machine Add-In,啟動msconfig,勾選Detect HAL後重新開機:
接著重新安裝Hyper-V版的Integration Service,網路卡/滑鼠整合就通通回來了,讚!!irtual PC/Virtual Server與Hyper-V的VHD相容性

硬體抽象層

維基百科,自由的百科全書
硬體抽象層(HAL, Hardware Abstraction Layer),是抽象層的一種,是實作於硬體和執行於該電腦的軟體之間的一種特殊軟體。它的功用是將硬體方面的不同,隱藏並抽離於作業系統核心之中。如此一來核心模式的程式碼就不必因為硬體的不同而需要修改。所以硬體抽象層可增進軟體的可移植性。

[編輯]外部連結

Windows Server 2008 有不同的版本,每種版本可安在虛擬機器中的個數不同

Windows Server 2008 有不同的版本,每種版本可安在虛擬機器中的個數不同

版本              個數
==================== ===
Windows Server 2008 Standard    1
Windows Server 2008 Enterprise  4
Windows Server 2008 Datacenter 無上限
Windows Server 2008 for Itanium Based Systems 無上限
Windows Web Server 2008    1

參考資料:http://www.microsoft.com/licensing/about-licensing/virtualization.aspx