2008年5月5日 星期一

虛擬化的多作業系統(Virtual Multi-Operating System)

最近在利用虛擬化技術(Virtual)在同一台電腦內安裝不同的作業系統,如此一來能夠節省硬體(體積),另一方面也能夠快速的在不同作業系統下做切換,可以免去KVM或遠端連線的手續,雖然使用起來相當方便,但是硬體需求也就相對地墊高許多。(以順暢使用的狀態而論)

除了硬體的需求變高之外,它也不是萬靈丹,因為還是有虛擬化無法兼顧的部份,例:顯示能力網路環境(雙網卡也許會比較合宜),但是在做系統(病毒)測試,或是不同作業系統的相容性測試,虛擬化技術就成了金剛不壞之身,頂多是虛擬化的系統毀損,對於你原本的作業系統來說,只是把其中一個Guest給刪除,只要再重新建立即可(或是直接利用快照功能還原)。

在虛擬化的技術中,VMware應該是最被人所熟悉的"品牌",但是它是商業軟體,對於口袋不夠深的我們來說,它總是難下手了點,所以在免費軟體的世界中,還有Virtual BoxXen...等。

我自己則是試用了Virtual Box做為虛擬化的平台,在上面試裝過Windows(玩了半天結果有bug的XP SP3)、Linux(Fedora、Ubuntu、Centos),在安裝的過程中並沒有遇到太多的困擾,應該是現階段的作業系統,對於硬體的支援性都還算蠻完備,如果你是在更早幾年有接觸過Linux的話,就會知道我說的意思。

我想使用虛擬化技術,對一般人來說,最大的門檻應該是來自網路架構的設定,什麼Bridged(橋接)、NAT、Host-Only或Custom:



很多人在這部份上的設定吃盡了苦頭(其實...我也是),畢竟它與實機操作的環境還是有所不同,你得先設定好虛擬軟體中指定的網路模式後,再處理虛擬器內的網路設定,有時還得在本機端做上「網路橋接器」(讓外界能夠直接連線到虛擬器內的作業系統)。(官方文件XP無法啟用網路橋接器的原因



除了網路設定值之外,筆者還在碰過一種狀況,那就是在更改虛擬器內的網路介面時,例:Bridged改為NAT時,可能會發生虛擬器內的作業系統會無法偵測到新的網路介面,而舊的網路介面卻又遭停用,這時你就得強迫虛擬器內的作業系統進行硬體掃描(Linux中的kudzu),才能夠虛擬器內的網路恢復正常。

其實,利用虛擬器來建構單機多系統的作業環境,絕大多數都是以Linux為HOST(安裝虛擬化軟體的主系統),而XP或是其他OS為Guest,這是為了讓自己能夠隨時調用系統效能,以及支援特定用途的做法,畢竟Linux(文字介面)在運作效能上還是為一般人所讚賞。不過...我先前就曾提過在虛擬器內安裝IE的例子(以WINEIEs4Linux安裝Internet Explorer),自己還是要注意一下合法性。

在最近的發布的Linux中,Xen虛擬化技術也已內建,所以虛擬化的應用愈來愈廣,不過大部份應該還是在技術層面上的應用(病毒測試、相容性、安全性...等),畢竟一般企業想透過虛擬化來架構作業系統,或是透過Thin PC中央伺服器做軟體及資料控管,也不是一般中小企業能夠負擔的起,先不論硬體架構(除非是規劃中的新廠,不然砍掉重來?),光是嚇死人的軟體授權費就相當驚人。

如果你是在虛擬化軟體內,安裝Windows的作業系統,在微軟「Virtual PC」的官網上有不同作業系統的最小需求參考網址),大家也可做個參考,雖然大部份的虛擬化軟體都已有類似的設計。(竟然官方有公佈也就參考著用)

或許有人會想在虛擬化的作業系統內玩遊戲,因為虛擬化技術的限制,"原則"上是無法在虛擬化系統內運作,雖然某遊戲的愛好者已經在LINUX上的系統上跑WINDOWS的大型遊戲(參考羊男實驗の咖啡館Ubuntu 7.04 跑 WoW),至於是否能夠如法泡製地移殖到虛擬器內,我想這就是一個極大的考驗(如果有人成功了,歡迎留言)。

利用虛擬化安裝作業系統還有一個最大的好處就是,基本上玩掛了也不會心疼,因為你可以在安裝完畢後,用快照(Snapshot)的方式就可以快速地進行系統備份復原

至於異機還原呢?可能就不太樂觀,雖然虛擬化技術能夠突破很多硬體上的限制,但是對作業系統來說,它仍有"認硬體"的機制(CPU、主機板...等),雖然你能夠在虛擬化軟體內建造一個多作業系統的王國,一旦你的硬體不慎陣亡,就有可能原本所安裝的虛擬化系統全都無法運作,所以千萬別把這樣子的作業環境視為萬靈丹(雖然Windows能用Sysprep來做重新封裝,但在虛擬化的架構之下,有非這麼做不可的價值嗎?)

最後,什麼樣的硬體適合在虛擬化軟體上運行多作業系統呢?以下僅為個人建議:
1.CPU:雙核心2.2 GHz以上的時脈。
2.RAM:至少要1GB以上,Vista則需2GB以上。
3.HDD:除了主程式,至少需留10GB以上的空間。
...其餘的部份影響不大,例:硬碟轉速顯示晶片(能抓到就好)
有興趣的話可以親自試試,也許會有一種截然不同的使用經驗也說不定,電腦原本就是要拿來玩、跟滿足自己多工作業的需求,不然,如此昂貴的"玩具",我們卻沒有好好善待它,應該也挺對不起自己吧!(我是物盡其用一派)

6 則留言:

  1. 感謝分享。
    以自身使用 VMWare 的經驗,以 RAID0 及 NON-RAID 環境測試,效能差別滿大的,硬碟轉速也是愈高愈快。

    回覆刪除
  2. 多謝你的分享,我自己是沒有在虛擬化技術裡使用raid來測試,多謝你提供了這個想法。

    至於硬碟轉速的部份,其實...我還是以大多數人都有的7200轉為依據,至於10000或15000轉的硬碟或SSD,還是特定用途才會使用,其實在什麼環境中都一樣。轉速愈快效能愈好呀!

    不過,你也下了很多苦心去測試,代表你也是有需求的人呀!有機會的話可以來個資訊交換唷!這才是網路的優勢呀!^^

    回覆刪除
  3. 據聞Windows 2008 Server利用類似的技術(Hyper-V)
    若真的很穩定且安全,應該可以減少大量的Backup and Restore 時間才是

    回覆刪除
  4. 大蛇丸:

    "Windows 2008 Server"這東西也不是一般人玩得起的呀!

    如果能善用虛擬化技術的確可以減輕許多麻煩,就像現在很多網路代管主機,有得也是透過虛擬化技術來達成的唷!

    備份跟還原,一直都是資訊人不得不看重的一環呀...^^

    回覆刪除
  5. 我是可以成功在 VMware 裡面跑楓谷(DX8 的遊戲)
    http://m-wei.net/?p=274
    我也把說明寫在裡面了
    http://wiki.ubuntu.org.tw/index.php/Games_on_Wine_or_VM

    回覆刪除
  6. 魏藥:
    不錯唷!多謝你的分享!如此一來可以造福更多在vm裡面玩東西的人

    雖然我沒有嘗試過在vm裡面開遊戲(不代表未來沒機會),下次有機會我也會試試...^^"

    網路就是教學相長的好地方唷!^^"

    回覆刪除