2008年11月29日 星期六

container與vm

這一兩年來,vm(virtual machine)這話題被炒的火熱,好像沒用這東西就是落伍就會被淘汰。但是事實上,vm在使用面與技術面上還有很長的路要走阿(茶)

就我個人看法目前使用vm需要有兩個條件當前提:
1. 舊有的包袱無法更動所以使用vm當solution
2. 測試lab或是其他理由需要暫時性computing power

VM本身有他自己的限制性,比方說犧牲調度的彈性。vm的彈性是可以縮限硬體限制之下,而無法擴充到硬體限制之外。(有接觸過的人當會明白這句話,沒接觸過的等你接觸後就會明白)真實環境中需要擴充的硬體限制外的情況才是常態,所以vm的實用性還有很長的路要走。

這些日子使用vm是因為第一種情形。這種情況其實不少,就是2000年以前因為千禧年的關係大量擴充IT設備,不巧其中有些東西用到現在硬體已經過於老舊,而軟體可能是開發商已經成為歷史的灰塵或是根本不知道哪裡來的。當你想要更新系統卻發現,花費的成本遠超過效益或是更本找不到辦法更新他。這種情況下vm就派上用場了。

我把話說明白一點好了,就是原本的solution使用sun的硬體,結果sun的硬體在千禧年附近生產的機型現在紛紛進入缺料狀態。不得不更新硬體,但是軟體可能是無法更新或是更新時程趕不上,所以vm的機制成為目前唯一可行的soulution。sun針對這種情況推出了container這種技術來補破網,就是在solaris 10上面做一個小vm來跑solaris 8(他只能往前支援到8),然後讓你把原本的程式直接copy到這小vm中繼續使用。

實測的結果確實是一個runable的solution。但是這方案無法得到其他軟體廠商認同(當然啦,這樣軟體商就不能逼迫你升版了),所以只能淪為沒有辦法中的辦法。

雖然container號稱與原本的solaris 8環境完全相同,事實上卻有很多地方不一樣。只要是需要直接操控硬體的功能都受到限制,不過因為軟(driver)硬體都是sun他們家的,支援度還算高。如果有其他廠牌的東西就不知道了(很幸運的我沒碰到這種case)。

測試過程中有一個意外的問題是container中要建立raw device給oracle是沒有被規劃的。所以要自己手動建立node path,簡單說來就是要先在global環境中建立好,然後自己mknod給container zone使用。這部份的作法是廠商的工程師想出來的,細節就不寫了。

沒有留言:

最常被訪