前兩天有人問了我幾個伺服器虛擬化的問題,這裡我總結一下,分享給大家:
1:全虛擬化與準虛擬化的真正區別在哪?
真正區別在於架構不同:由於虛擬機器的指令和傳統作業系統的指令內涵不一致(例如關機,虛擬機器只要求釋放記憶體與cpu時間,而傳統指令需要斷電);所以如何讓硬體執行傳統os的指令是關鍵。全虛擬化是將傳統os的指令進行翻譯,交給物理機執行,扮演了翻譯的角色,以前一次的互動需要來去兩次指令傳送,而全虛擬化就需要4次傳送和2次轉義,則效率損失較大。
泛(準)虛擬化是將作業系統或者硬體轉變為能夠理解對方指令的角色(兩者之間有一個知道自己是執行在虛擬環境下得),對於linux系統,採用的技術是修改核心,目前linux核心標準都支援xen,對於Windows系統,採用硬體支援(即用intel-v,amd-vt技術的晶片),讓硬體知道上層執行虛擬機器,所以傳輸的指令需要不按照以前的方式執行。這種架構還是保證一次互動進行2次指令傳輸,效率損失比較低。
2:Xen的整體架構是怎樣的,在硬體到應用中它扮演什麼樣的角色,如何進行控制的?
在xen的架構裡,硬體其實就是一個平臺,硬體伺服器被放置在一個資源池中,對於虛擬機器或者負載,他們沒有差別,具體虛擬機器或者負載執行在哪臺機器上,可以動態計算分佈,保證對資源的高效利用,在這個層面上,可以更自由地實現負載均衡和雙擊熱備(作業系統層面)。對硬體的控制可以通過虛擬環境的管理控制平臺統一進行控制。