基於近期調研使用Proxmox VE的經驗以及以前使用XenServer的經驗,在本文中,我將討論Proxmox VE和XenServer並將這兩個最受歡迎的開源虛擬機管理程序進行分析比較,此分析比較側重於虛擬機資源分配上的虛擬機管理程序優點,支持的虛擬化方法,服務器體系結構,虛擬機數量,主機和客戶機的操做系統兼容性以及管理功能。這兩款開源的虛擬機管理程序因提供了近似VMware產品的企業級用戶操做體驗而在全世界範圍內廣受歡迎。基於開源的虛擬機管理程序的推動使用改變了企業管理者管理其計算資源的方式,下降了IT運營成本,提升了性能和靈活性。雖然國內也具備ZStack等許多優秀的開源產品可供使用且用戶體驗並不低於上述兩款產品,但就企業級功能開放度而言,目前還沒法與之相比較,所以不計入本文的比較範圍。算法
虛擬機管理程序是虛擬化技術採用和投資的主要載體和核心。目前市面上的開源虛擬化內核普遍,如Xen、KVM、LXC、Docker等。這些虛擬化內核均依託於的單個服務器硬件及系統而存在,在大規模運行的狀況下,須要虛擬機管理程序對其進行管理、編排和硬件集羣資源池化等操做。所以,管理程序的容量、兼容性、用戶體驗及性能等對於解決運營者在運用虛擬化技術的管理挑戰中相當重要。在這方面,開源的管理程序OpenStack一直作得很不友好,所以,專門針對這些痛點研發的開源虛擬化管理程序大受歡迎;另外,儘管虛擬化技術的增加帶來了顯著的價格降低,但經過使用開源虛擬化管理程序能夠進一步下降IT投資和運營成本。所以,大浪淘沙事後,簡單實用、貼近用戶Proxmox VE和XenServer成爲最受歡迎的開源虛擬化管理程序。數據庫
l Proxmox VE(英語:Proxmox Virtual Environment,一般簡稱爲Proxmox)是一種基於開源的虛擬化解決方案,它在一個軟件包中提供計算、網絡和存儲三大功能。Proxmox VE是一個既能夠運行虛擬機也能夠運行容器的虛擬化平臺。Proxmox VE基於Debian Linux開發,而且徹底開源。出於靈活性的考慮,Proxmox VE同時支持兩種虛擬化技術:KVM虛擬機和LXC容器。緩存
l XenServer是基於開源Xen項目發展起來的開源虛擬化平臺,後被Citrix公司收購,更名爲XenServer,並在持續一段時間商業化後轉而繼續開源。XenServer主要基於Xen開源虛擬化內核構建虛擬化管理堆棧,通過和Citrix產品搭售及AWS雲計算產品基於Xen的背書,普遍應用於各大企業生產環境。安全
從今天成熟穩定的開源虛擬化管理程序來看,擁有悠久歷史、版本迭代穩定、歷經各類生產環境實踐的開源虛擬化管理產品也就上述兩款是最爲出衆。而這兩款產品也從各個角度均代表在許多方面具備很高的類似性,所以分析比較可以客觀的提供更加細緻的比較分析,保證在節約成本及基於虛擬化技術實施行業解決方案等的運做上,採用者可以匹配到最佳的虛擬化管理程序,並基於自身的考慮因素如虛擬化要求、組織規模、人員技能和計算工做負載等實施最優的解決方案。服務器
從虛擬化技術的分類狀況全虛擬化、半虛擬化、操做系統虛擬化和硬件輔助虛擬化等類別看,Proxmox VE和XenServer各自支持的虛擬化方法有所區別,具體來講:Proxmox VE支持徹底虛擬化、硬件輔助虛擬化(基於KVM)和操做系統虛擬化,但XenServer支持徹底虛擬化、半虛擬化和硬件輔助虛擬化,以下表1所示。網絡
表1:虛擬化管理程序與虛擬化方法架構
對於XenServer的狀況,雖然硬件虛擬化虛擬機在運行硬件輔助虛擬化時須要基於Intel的VT-x或AMD-V的x86 CPU,但半虛擬化不須要處理器虛擬化的功能支持,而是修改客戶操做系統內核,這一點Proxmox VE(KVM)的實現有所區別。與XenServer不一樣,Proxmox VE支持操做系統級虛擬化,這對於1型虛擬化管理程序並不常見。現今市面上的大多數基於類型1的虛擬化管理程序支持半虛擬化和硬件輔助虛擬化,而徹底虛擬化因爲在運行期間涉及二進制翻譯,所以徹底虛擬化的性能並不理想,主要是由於二進制轉換很是耗時,而且可能致使極高的性能開銷。現今的主要解決方案是採用替代的高速緩存來改進二進制翻譯,以提高二進制翻譯的速度,但這可能會增長更多的內存使用成本。半虛擬化克服了徹底虛擬化的性能問題,在x86架構上的半虛擬化能夠提供主機80%到97%的性能。這是由於在半虛擬化技術實現機制下,操做系統可以識別虛擬化管理程序發送的超級調用命令。所以,XenServer支持半虛擬化的好處是,基於Linux版本的操做系統運行於XenServer可以獲得很大的運行性能,可是因爲半虛擬化須要修改操做系統內核,所以半虛擬化的方法不支持微軟的Windows操做系統。ide
很欣慰的是Proxmox VE和XenServer均支持基於硬件輔助虛擬化方法,經過硬件輔助虛擬化方法,Proxmox VE和XenServer均可以提供適宜的運行性能。硬件輔助虛擬化可以將軟件實現的虛擬化部分卸載到硬件上經過硬件設計的電路來執行,執行效率遠遠高於基於CPU處理器/內存虛擬化組合的計算能力。最典型的例子是AWS的Nitro,在 Nitro 系統架構中,網絡、存儲、安全管理及監控都從傳統虛擬機中解耦,被遷移到專屬硬件中。這些功能都將模塊化、微服務化,使其可以快速遷移而且隨時可以根據新的需求而演進。Nitro 系統使用的是定製的 ASIC,將之前軟件實現的虛擬化方法經過專屬定製的ASIC硬件來執行,這種架構的好處,是咱們能夠將全部服務器資源都分配給客戶的虛擬機或容器,各大IO模塊的享有和硬件同樣的高速運行速度。模塊化
隨着開源硬件OCP及天蠍項目等的運做和進展,我認爲相似Proxmox VE和XenServer等虛擬化管理程序也可以實現標準化解耦網絡、存儲、安全管理及監控等的到專屬模塊化硬件的時候。但這不是咱們今天的重點,開源的虛擬化管理程序在今天廣泛硬件的架構下,知足實用與好用的原則,就是現代基於虛擬化驅動的IT解決方案最有價值的方案。微服務
虛擬化技術最主要的虛擬主體就是咱們的硬件CPU、內存和IO。
首先,從支持的CPU架構上看,Proxmox VE和XenServer均只支持x86_64的CPU,不支持Power等架構的CPU。雖然從虛擬化內核Xen和KVM的角度,Xen以及KVM等均適配了Power等架構的CPU,甚至國產龍芯等MIPS架構的CPU,龍芯中科等均作了適配,可是這兩款虛擬化管理程序併爲花費心思對其進行集成和適配。
表2顯示了虛擬化管理程序和CPU體系結構之間的對應關係摘要。
表2:虛擬化管理程序與CPU架構
其次,在支持的客戶機操做系統上,經過閱讀官方提供的兼容性列表,咱們能夠發現Proxmox VE和XenServer針對客戶機操做的兼容性差別在於Unix系統的兼容性上。具體以下:
表3:虛擬化管理程序與客戶機操做系統
在這方面,Proxmox VE是惟一基於開源的1型虛擬機管理程序,可與全部客戶操做系統高效協做。與Proxmox VE不一樣,XenServer不支持FreeBSD,NetBSD或任何其餘BSD變體做爲客戶操做系統,可是用戶能夠嘗試將其安裝爲HVM來賓,自行安裝FreeBSD等操做系統的,但因爲I / O是模擬實現的,所以其性能與其餘半虛擬客戶機不匹配。FreeBSD等BSD系統有一個專門爲其而生的虛擬化管理程序bhyve,有興趣可去了解,目前正在尋求對X86-64架構的其餘操做系統的兼容性支持。
在支持的虛擬機數量上,因爲每一個版本的參數性能均不一樣,所以採用兩個管理程序的較新版本進行比較,如Proxmox VE 5.x和XenServer 7.x。虛擬機管理程序支持的虛擬機數量是評估其處理能力及內存特性對資源分配和服務器整合能力的重要指標。下表4總結了Proxmox VE和XenServer虛擬機管理程序支持的虛擬機數量。
表4:VM數量,CPU和RAM特性
在XenServer 7中的最大客戶機數量爲500,但對於基於Linux的客戶機,此數量能夠增加到650,可是這種測試的數量能夠經過可接受的性能基線值而發生變化,好比配置更低的虛擬機能夠運行更多的數量。Proxmox VE也具備相似的負載動態性。在虛擬機的vCPU支持上,XenServer支持每一個虛擬機最多添加32個vCPU,對於VCPU之間的資源均衡,XenServer使用公平共享平衡算法,以確保虛擬機之間分配CPU資源相應地在物理CPU資源上平衡負載運行。此外,XenServer還能夠將物理處理器動態分配給任何特定的虛擬機,動態分配容許虛擬機在可用時有效地利用可用的CPU資源。XenServer的一個好處是它可以在同一資源池中使用不一樣類型的CPU,即支持異構資源池。一般,XenServer分別使用針對Intel和AMD的FlexMigration和Extended Migration技術來運行異構環境。對於Proxmox VE來講,每一個虛擬機可支持的vCPU數爲160。並可爲單個客戶虛擬機分配最大192GB的內存空間。二者均支持動態內存控制及CPU、內存、網絡及硬盤的熱插拔。
在網絡功能上,對於虛擬網絡接口卡(NIC),XenServer能夠爲每一個虛擬機分配的最大NIC數爲7,可是,存在基於來賓操做系統的變化,有些操做系統支持給更多的虛擬網卡。而且在XenServer物理主機中,支持的最大物理網卡數爲16。對於Proxmox VE,因爲其基於Debian系統構建,所以支持的網卡數量遠遠超出這個限制。Proxmox VE和XenServer均使用Linux Braidge和Open vSwitch在VM之間提供公平的網絡I / O資源並進行QoS控制。在網絡功能上,XenServer要比Proxmox V的網絡功能強大一點,可是強大的部分均基於商業版本,從開源版本的功能比較上,兩款產品的網絡管理功能均一致。在Proxmox VE中,每一個節點最多可支持4,094個網橋,其通用命名格式爲vmbrX,其中X表示0到4,094之間的整數。Proxmox VE的優點之一是容許節點間實時遷移的條件少於XenServer。
對於虛擬磁盤I / O的狀況,XenServer能夠分配給VM的最大虛擬磁盤驅動器數量爲16,但這可能會因客戶操做系統的類型而異。在VM之間拆分的磁盤I / O資源是使用基於所定義的設置優先級的公平共享方法完成的。XenServer使用存儲管理器,它是對基於文件和塊的存儲類型的內置支持。對於Proxmox VE,支持的存儲包括知足本地存儲的目錄、用於本地或共享iSCSI目標的邏輯卷管理(LVM)、用於(OmniOS,FreeNAS,Ubuntu等)的網絡文件系統(NFS)、Gluster文件系統( GlusterFS)和Ceph。 出於備份目的,Proxmox使用FreeNAS。雖然NFS共享是最經常使用於VM備份方案,但也可使用本地和Ceph FS進行完整備份。
最後,從管理功能上比較兩個管理程序。虛擬機管理程序中的管理功能對於輕鬆建立和管理虛擬機很是重要。 一些管理功能包括資產管理、配置快照、高可用性、實時遷移、維護模式、性能指標、存儲遷移、虛擬機克隆、VM遷移,容量規劃/管理、虛擬防火牆、虛擬機備份/恢復、精簡配置、存儲多路徑、性能報告、自動發現、故障轉移和多個主機資源池等。下表5顯示了Proxmox VE和XenServer虛擬機監控程序支持的不一樣管理功能。
表5:虛擬化管理程序的管理功能
從上面的表5能夠看出,兩個管理程序都提供了相似的管理功能,這意味着兩個管理程序之間沒有顯着差別。可是,這些功能如何工做併產生預期結果存在重大差別。例如, XenServer和Proxmox VE都支持圖形用戶界面(GUI)和命令行界面(CLI)管理。可是XenServer是基於CS架構的GUI客戶端,經過安裝在Windows環境下的GUI客戶端,並經過使用256位SSL(AES)加密來保護和XenServer主機之間的全部通訊。而Proxmox VE使用基於HTML5的Web GUI客戶端來實現Proxmox VE的圖形接口操做訪問。二者都具備專有的CLI管理命令工具。另一個管理功能比較有所區別的是虛擬機的克隆。XenServer和Proxmox VE都支持完整克隆和鏈接克隆。區別在於二者的存儲文件格式類型不一,所支持的虛擬機的克隆能力有所異同。此外,在存儲空間的利用上,XenServer經過支持在本地磁盤上對現有虛擬機進行精簡置備,格式爲EXT3和NFS存儲庫,Proxmox VE因爲利用KVM內核,所以和支持的格式有關。對於虛擬防火牆,兩個虛擬機管理程序都具備管理功能,均經過內部包過濾和監控功能來加強安全性。從安全角度來看,XenServer由一個控制域(Dom0)組成,它是一個安全的特權虛擬機,運行XAPI(管理工具堆棧),可用於控制網絡、存儲、身份驗證和計算資源管理中的虛擬機生命週期操做。Proxmox VE使用基於角色的用戶和權限管理來監控虛擬機和容器、存儲池和主機節點。此外,Proxmox VE使用Linux PAM或LDAP應用用戶身份驗證。這兩個虛擬機管理程序還提供實時遷移、高可用性(HA)、虛擬機快照和性能報告。這些均是企業在運行過程當中可以對業務運行產生重大幫助的優秀功能。
另外從虛擬機的導入導出和遷移上,XenServer比Proxmox VE作得要好。基本上,XenServer支持在同構和異構環境中導入和導出虛擬機,並支持行業標準的開放虛擬化格式(OVF),所以它能夠接受從其餘虛擬機管理程序建立的全部虛擬機,包括VMware和Hyper-V等專有虛擬機管理程序。這主要是使用XenServer Conversion Manager實現的。Proxmox VE未開發專門的GUI導入導出工具,可是支持qcow2、raw和vmdk格式的虛擬機,其導入導出功能需經過CLI工具實現。
qcow2支持的存儲是NFS和目錄、Raw格式支持LVM,RBD,iSCSI和目錄。 vmdk支持NFS和目錄。因爲高I / O開銷和低處理速度,qcow2格式不適用於數據密集型虛擬機,如數據庫服務器。可是,當存在預算限制和有限的存儲空間時,qcow2文件頗有用。此映像類型支持KVM實時快照以保留VM狀態。原始映像類型可確保性能,由於VM具備直接傳遞訪問權限,所以速度更快。原始文件格式只能提供固定大小或密集配置的VM映像,所以它是全部Proxmox VM的首選文件格式。能夠在Proxmox中添加的虛擬驅動器是IDE(3),SATA(5),VirtIO(15),SCSI(13)。原始磁盤映像文件始終是預分配的,所以存在超出總可用存儲空間的過分配置風險。此映像類型的另外一大優點是它支持KVM實時快照。關於vmdk圖像格式,Proxmox使用它只是爲了便於VM遷移到其餘虛擬機管理程序。 vmdk文件格式的存在容許Proxmox文件在異構管理程序環境中游動。
Proxmox VE和XenServer在許多方面相似,但主要區別在於XenServer不支持Linux容器(操做系統虛擬化),而Proxmox VE支持。與XenServer相比,此功能可提高Proxmox VE的強度。雖然Proxmox VE使用獨特的虛擬化API,並利用KVM徹底虛擬化和基於LXC容器的操做系統虛擬化,可是其運行和管理歷經生產環境實踐,不使用Libvirt接口也能夠很好運行。Proxmox VE和XenServer都是流行的虛擬機管理程序,均須要高水平的操做系統及虛擬化技能才能在整個虛擬機生命週期內進行安全管理。根據採用組織的規模和要求,如何在虛擬機之間分配和共享資源是虛擬化管理程序的主要做用。所以,對於旨在以最高性能下降成本削減虛擬化解決方案的組織,Proxmox VE和XenServer是虛擬化服務器基礎架構的最有價值和可行解決方案。