不少人選擇VPS,看到有這種虛擬化的技術,那種虛擬化的技術,到底哪一種好呢?咱們今天來了解Xen與OpenVZ這兩種虛擬技術的優點。java
1、Openvz和Xen的技術規格分析緩存
1.Xen與Openvz的區別服務器
Xen和Openvz一樣是虛擬化主機技術,區別在於Xen是半虛擬化技術,它並非一個真正的虛擬機,而是至關於本身運行了一個內核的實例,能夠自由的加載內核模塊,虛擬的內存和IO,穩定並且可預測。Openvz則是操做系統級別的虛擬化技術,是底層操做系統上的一層應用,這意味着易於理解和低權重開銷,通常來講也意味着更優的性能。性能
這裏有一個問題,能夠看到實際上openvz由於免去了大量的公共開銷,理論上來講性能會比xen更好。爲何你們都會認爲openvz過度壓榨性能呢?我認爲是由於openvz配置起來比較靈活,給黑心 openvz服務商改低限制的機會。測試
好比mediatemple,號稱512M內存的dv方案,kmemsize才12M,不瞭解的人看了512M以爲很哈皮啊,但是使用的時候通常這512M能分到你手裏一半就不錯了。此消彼長,因此纔會有xen 能更好地利用機器性能的錯覺。操作系統
2.Openvz的內核模型vps
首先當OpenVZ的主機說「256MB的保證」,它實際上意味着約232MB的「privvmpages」,14M的「kmemsize」和其餘雜項資源。當應用程序調用 malloc()分配的內存將被添加到「privvmpages」。進程
當「privvmpages」超過限制,malloc()將失敗並返回一個NULL。當主機服務器內存用光了,而後虛擬環境下的進程超過 「oomguarpages」的將被終止。內存
OpenVZ的內存管理方法既有問題也有優點。最大的問題之一是內存容量的應用程序使用的內存和應用程序實際上分配到的內存是不一樣的,不一樣的應用程序他們的差異可能會很大。以Java爲例,它一般分配一大塊的內存,可是,它可能只使用一小部分分配的內存。若是privvmpages受限,java會當即中止運行。調整參數能夠解決一部分問題,但它處理得絕對沒有Xen來得乾淨利落。事實上,幾乎全部使用內存分配的應用程序都會受OpenVZ這個問題的影響。資源
/proc/meminfo 自己也有問題。雖然OpenVZ的已經爲內存進行了虛擬,可是用」free」命令依然會返回主機的內存。這樣就會使小內存的openvz的vps沒法運行諸如java或者gcc編譯這樣的程序。
OpenVZ的內存模型的優勢是, 它容易理解: 你幾乎就只有privvmpages受限。與專用的服務器或Xen的服務器不同的是,你的磁盤高速緩存和頁面緩存並不計入您的總內存使用狀況。所以,在一個沒有過分銷售的openvz主機上,因爲擁有較大冗餘的公共資源,它實際上可能會比同類規格的Xen的VPS表現更佳。
3.Xen的內存模型
Xen的系統模型更容易解釋。256MB的Xen的VPS是就像一個256MB的專用服務器-該內存段是預留做VPS專用,沒有其餘VPS可以使用這部份內存,這就像一個真正的專用服務器。
此外,當內存不足時,VPS會使用Swap。通常每一個VPS帶有兩倍大小的交換分區,當您的應用須要更多的內存,不常使用的頁面從內存中被換出到交換分區,從而騰出使更多的房間。所以,256MB的Xen的VPS系統實際上共有768MB內存(256MB內存+ 512MB的交換空間),請相信我,交換空間是很是有用的,特別是處理突發的需求高峯時。
這麼說來,Xen是永遠遠優於OpenVZ?否則,你的256MB的VPS理論可使用高達768MB內存,而實際上內核,高速緩存,緩衝,他們都佔用內存。這部分系統開銷也是可觀的。另外,Swap會嚴重下降性能。
4.穩定性和可預測性
當內存耗盡時,xen和openvz表現截然不同。xen會把不經常使用的內存頁面換入Swap,這將大大下降性能,當Swap也用盡,那麼xen的系統會響應得愈來愈慢,就像一臺真實的服務器同樣。
而openvz一旦內存用盡,則會忽然死亡:開不出新的程序,只能等待系統資源可用。更有甚者,原本運行的好好的程序也可能由於不斷增加而超過限制,而後忽然死亡。這就像開車開到70碼,而後忽然撞牆上了,通常會死得很慘。
毫無疑問這點上我傾向於xen技術,可預測,穩定。
5.結論
若是xen和openvz同樣貴,我確定選xen,由於可預測性,即便openvz打8折,我仍是追求穩定。
上面的話總結一下,得出幾個結論:
一、XEN比openvz主機對買家更有利,好比分配給你512M內存後,這一部份內存就從服務器上專門劃給你了,別人將沒法使用,而openvz則是共用內存,好比分配給你512M內存是指最大你能使用512M內存,好比你佔用了200M內存,那麼就只從物體內存中分配200M給你,因此賣家很是容易在服務器上面超賣!
二、openvz更高效,xen是硬件底層虛擬,更接近真實服務器,而openvz是操做系統虛擬,虛擬服務自身佔用內存少,一樣的程序執行效率更高!
三、若是購買openvz應看賣家是否會超賣,應選擇良好聲譽明確申明不會超賣的
四、若是購買xen主機,應同時關注swap大小
五、測試VPS主機性能使用Unixbench(不少人不知道),國外很是流行這個東西!選擇Xen與OpenVZ哪一種虛擬機作的VPS比較好?