首頁‎ > ‎電子期刊‎ > ‎2008年4月號‎ > ‎

虛擬化技術的現況

VMwareLogo.jpg

sm_xen_logo.jpg

本篇文章也同時發佈在http://kiwi.csie.chu.edu.tw/blog/archives/178

虛擬機器(Virtual Machine, VM),用比較白話的方式講,就是「模擬器」。 利用現行的硬體,撰寫系統,模擬另一套系統的整體結構,包括硬體,甚至韌體,就是虛擬機器。

虛擬機器大致上可以分兩種,一種是模擬整個硬體系統,執行環境,我們稱做「虛擬系統」,如最有名的VMWare系列,便是一種用來虛擬 IBM x86 PC架構電腦的虛擬機器。另一種稱做「虛擬行程」是利用軟體中介層的方式,模擬出一套執行環境,例如Java的執行環境Java Runtime,就是使用Java Virtual Machine (JVM)作為其執行環境。

本篇文章主要介紹虛擬化技術,及兩個最常見的虛擬化平台,VMWare及Xen。

Virtualization - 虛擬化

舉個例子,很多人可能會有這樣的經驗,Office出了2008新版了,想要裝來玩玩看,可是又發現一旦裝下去,自己的Windows可能會一片混亂;或者,就是刪掉舊版再裝,又相當地浪費時間。當忽然想要用舊版的時候,總不能夠經常刪刪裝裝吧?

另一個情景比較容易發生在軟體工程師身上,軟體工程師經常都需要一個與自己開發用的作業系統不同的乾淨環境來進行軟體測試。可是想要機器的時候,總是要不到。工作還是得做啊,怎麼辦?

為了解決類似的問題,早在很久以前就有人研究虛擬機器的可能性。不過相對以前的電腦硬體效能,想要使用程式模擬執行環境,是相當地不可能的。直到最近CPU的發展,已經邁向多核心的方向,不管是效能,或是應用性,已無法與以往的電腦硬體相比。

所以剛剛的情境,實際上就在你的電腦裡利用VMWare Workstation裝一台虛擬機器便可行了,而安裝上去的作業系統,我們便稱做「Guest OS」。Guest OS基本上可以是與你的作業系統完全不一樣的另一種作業系統。例如說你的實體機器是Linux,而你卻可以在上面灌一個虛擬的Windows。

Full Virtualization - 全虛擬化

在早期還沒有虛擬化技術的時候,本來有一種叫做「硬體虛擬化」技術,當時是藉由安裝額外的擴充卡(上面有鍵盤與滑鼠的介面),來分享系統資源。當然這種不符合成本的作法很快就被淘汰。

而在歷史上,IBM也在1966年開發過自己的虛擬化技術,而當時的作法,就成為了現在商業化虛擬技術的先驅。VMWare大約在這五年搶 下了全虛擬化的市場,其中對於個人用戶最方便的莫過於VMWare Workstation。而VMWare也在2004年被EMC這間全球最大的企業化儲存系統公司併購,搭配了VMWare Server系列產品,全面攻下高階伺服器管理的市場。

全虛擬化的技術,最主要就是完全依賴完全建構的虛擬硬體層,這個虛擬硬體層為了Windows及Linux系統提供了較佳的相容性。換句話 說,上面的「Guest OS」所看見的硬體,比較少會是直接延伸自原來實體的電腦硬體,如下圖所示。除了CPU及記憶體,主機板,VMWare幾乎都虛擬化了,有虛擬的 BIOS,也有虛擬的顯示卡,而且都必須安裝專屬的驅動程式。這樣的優點是,不管在怎樣的硬體環境中,Guest OS都能夠維持比較統一的相容性。但缺點是,因為有了這龐大複雜的虛擬硬體層,相對的實體機器就得維持比較大的負擔。


(本圖轉載自VMWare官網 )

Para Virtualization - 半虛擬化

半虛擬化是利用Linux/Unix系統核心原本有的 Monitoring Mode,將電腦硬體的使用變得可以讓多個記憶體位置的程式在不同的時間呼叫。這種作法儘管不像全虛擬化一樣,反而是變成你的電腦硬體是什麼,Guest OS就會看到同樣的硬體,也就是說真的好像把你的硬體拿去共享了。當然優點就是,不需要消耗額外的系統資源來模擬硬體層,因此就算是多個Guest OS同時執行,你也不見得會感受到效能下降。但缺點就是,Guest OS的作業系統,必須使用和實體機器的一樣。如同下圖:



(本圖轉載自http://it20.info/blogs/main/archive/2007/06/17/25.aspx )

最好的例子就是Xen。Xen是一個開放原始碼的虛擬系統軟體,相對於VMWare各個版本都需要花不少錢買(儘管有免費下載),Xen已 經被許多開放原始碼的作業系統如Fedora,CentOS,Ubuntu等內建於其中。儘管沒有像VMWare一樣有精美的操作介面,但Xen還是提供 了 Virtualization Manager,一個簡單的視窗程式來讓使用者快速建立虛擬機器。

但對於半虛擬化的最大限制:無法使用不同作業系統,還是有不少人覺得說比起VMWare來說實在是無法當作一個很好的虛擬平台使用。因此 Intel 開發出了支援虛擬化的新技術,Pentium 4包括後其的P4 6xx系列, PD系列,及現在最熱門的雙核心及四核心,全部都有支援。此外AMD也在同時開發出一樣的技術,包括後其的Athlon 64, Turion 64, Opteron, Phenom都有支援。這樣的技術,使得Xen可以執行不同的Guest OS,而對於全虛擬化的平台也能夠再加速。

參考資料

網路上都有很好的文章,關於介紹,或者是教學

http://it20.info/blogs/main/archive/2007/06/17/25.aspx

VMWare

http://tw.myblog.yahoo.com/handle1963/article?mid=13350&prev=13477&next=13205

Xen

http://linux.vbird.org/linux_enterprise/xen.php

結論 - 虛擬化的應用

儘管虛擬化技術為個人能夠帶來一些工作上的便利,但其實從企業的角度,虛擬化是不可或缺的。

台灣自從好幾年前,政府積極投入半導體產業以來,已經搖身一變成為名符其實的電腦王國。世界上有四分之三的主機板,都是在台灣生產。而台灣 不僅是生產主機板,記憶體的主力,近年來筆記型電腦,網路產品,直到伺服器,也多在台灣生產製造。而這樣大量製造的情況下,伺服器的功能越來越好,價格越 來越便宜,一般的中小企業,學校單位,都已經不需要花大錢購買五萬十萬的伺服器,也能夠用一般的PC做一些基本的服務。

但伺服器與PC之間也存在一種迷思,我不買伺服器的話,能夠獲得穩定性嗎?確實伺服器的許多硬體設計都是雙份,兩個CPU,兩個電源供應 器…等,來增加穩定性,卻也造成運算效能的浪費。根據統計,拿全世界的伺服器計算能量,與實際產生出的資料量比較,推算這些伺服器的使用量都不到10%。 也就是說大部分的時間,你的伺服器的CPU都是閒置的。比起這樣閒置的浪費,安裝虛擬機器,不僅能夠提升CPU的使用量,而在設備的管理上,也不需要如以 前負擔龐大數量的購買成本及維修成本。

舉個例,以往公司內的MIS最頭痛也就是最主要的工作,就是有人報修電腦。個人使用的電腦沒辦法,因為會影響工作,還是得修。可是在一些軟 體公司,許多員工可能都需要數台額外的機器來做不同的應用或開發,這個時候MIS通常都要準備許多舊電腦供其使用,如果這些電腦也報修,在管理上真的是一 大負擔。有了虛擬機器,MIS只要使用管理介面新增一個虛擬機器,並且將磁碟映象檔複製一下,IP抓好,一個新的作業系統就可以使用了。而增加的動作,加 上映象檔拷貝的時間,可能花不到10分鐘。尤其在Linux系統上,透過Xen使用虛擬機器的使用者,幾乎不會感受到他們是在使用虛擬機器。

這樣便利的科技,目前也運用在蘋果的Mac上,如Parallel Desktop或是VMWare Fusion,這些都是可以讓你在Mac上使用Windows的方便軟體。

由於多核心CPU的發展,虛擬化技術的應用也跟著成熟,未來我相信還會有許多更有趣的應用。





Comments