開源虛擬化ProxmoxVE和XenServer的分析比較

基於近期調研使用Proxmox VE的經驗以及之前使用XenServer的經驗,在本文中,我將討論Proxmox VEXenServer並將這兩個最受歡迎的開源虛擬機管理程序進行分析比較,此分析比較側重於虛擬機資源分配上的虛擬機管理程序優勢,支持的虛擬化方法,服務器體系結構,虛擬機數量,主機和客戶機的操作系統兼容性以及管理功能。這兩款開源的虛擬機管理程序因提供了近似VMware產品的企業級用戶操作體驗而在全世界範圍內廣受歡迎。基於開源的虛擬機管理程序的推進使用改變了企業管理者管理其計算資源的方式,降低了IT運營成本,提高了性能和靈活性。雖然國內也具有ZStack等許多優秀的開源產品可供使用且用戶體驗並不低於上述兩款產品,但就企業級功能開放度而言,目前還無法與之相比較,因此不計入本文的比較範圍。

虛擬機管理程序是虛擬化技術採用和投資的主要載體和核心。目前市面上的開源虛擬化內核廣泛,如XenKVMLXCDocker等。這些虛擬化內核均依託於的單個服務器硬件及系統而存在,在大規模運行的情況下,需要虛擬機管理程序對其進行管理、編排和硬件集羣資源池化等操作。因此,管理程序的容量、兼容性、用戶體驗及性能等對於解決運營者在運用虛擬化技術的管理挑戰中至關重要。在這方面,開源的管理程序OpenStack一直做得很不友好,因此,專門針對這些痛點研發的開源虛擬化管理程序大受歡迎;另外,儘管虛擬化技術的增長帶來了顯著的價格下降,但通過使用開源虛擬化管理程序可以進一步降低IT投資和運營成本。因此,大浪淘沙過後,簡單實用、貼近用戶Proxmox VEXenServer成爲最受歡迎的開源虛擬化管理程序。

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 VEXenServer各自支持的虛擬化方法有所區別,具體來說:Proxmox VE支持完全虛擬化、硬件輔助虛擬化(基於KVM)和操作系統虛擬化,但XenServer支持完全虛擬化、半虛擬化和硬件輔助虛擬化,如下表1所示。

1:虛擬化管理程序與虛擬化方法

image.png

對於XenServer的情況,雖然硬件虛擬化虛擬機在運行硬件輔助虛擬化時需要基於IntelVT-xAMD-Vx86 CPU,但半虛擬化不需要處理器虛擬化的功能支持,而是修改客戶操作系統內核,這一點Proxmox VEKVM)的實現有所區別。與XenServer不同,Proxmox VE支持操作系統級虛擬化,這對於1型虛擬化管理程序並不常見。現今市面上的大多數基於類型1的虛擬化管理程序支持半虛擬化和硬件輔助虛擬化,而完全虛擬化由於在運行期間涉及二進制翻譯,因此完全虛擬化的性能並不理想,主要是因爲二進制轉換非常耗時,並且可能導致極高的性能開銷。現今的主要解決方案是採用替代的高速緩存來改進二進制翻譯,以提升二進制翻譯的速度,但這可能會增加更多的內存使用成本。半虛擬化克服了完全虛擬化的性能問題,在x86架構上的半虛擬化可以提供主機80%到97%的性能。這是因爲在半虛擬化技術實現機制下,操作系統能夠識別虛擬化管理程序發送的超級調用命令。因此,XenServer支持半虛擬化的好處是,基於Linux版本的操作系統運行於XenServer能夠得到很大的運行性能,但是由於半虛擬化需要修改操作系統內核,因此半虛擬化的方法不支持微軟的Windows操作系統。

很欣慰的是Proxmox VEXenServer均支持基於硬件輔助虛擬化方法,通過硬件輔助虛擬化方法,Proxmox VEXenServer均能夠提供適宜的運行性能。硬件輔助虛擬化能夠將軟件實現的虛擬化部分卸載到硬件上通過硬件設計的電路來執行,執行效率遠遠高於基於CPU處理器/內存虛擬化組合的計算能力。最典型的例子是AWSNitro,在 Nitro 系統架構中,網絡、存儲、安全管理及監控都從傳統虛擬機中解耦,被遷移到專屬硬件中。這些功能都將模塊化、微服務化,使其能夠快速遷移並且隨時能夠根據新的需求而演進。Nitro 系統使用的是定製的 ASIC,將以前軟件實現的虛擬化方法通過專屬定製的ASIC硬件來執行,這種架構的好處,是我們可以將所有服務器資源都分配給客戶的虛擬機或容器,各大IO模塊的享有和硬件一樣的高速運行速度。

隨着開源硬件OCP及天蠍項目等的運作和進展,我認爲類似Proxmox VEXenServer等虛擬化管理程序也能夠實現標準化解耦網絡、存儲、安全管理及監控等的到專屬模塊化硬件的時候。但這不是我們今天的重點,開源的虛擬化管理程序在今天普遍硬件的架構下,滿足實用與好用的原則,就是現代基於虛擬化驅動的IT解決方案最有價值的方案。

虛擬化技術最主要的虛擬主體就是我們的硬件CPU、內存和IO

首先,從支持的CPU架構上看,Proxmox VEXenServer均只支持x86_64CPU,不支持Power等架構的CPU。雖然從虛擬化內核XenKVM的角度,Xen以及KVM等均適配了Power等架構的CPU,甚至國產龍芯等MIPS架構的CPU,龍芯中科等均做了適配,但是這兩款虛擬化管理程序併爲花費心思對其進行集成和適配。

2顯示了虛擬化管理程序和CPU體系結構之間的對應關係摘要。

2:虛擬化管理程序與CPU架構

image.png

其次,在支持的客戶機操作系統上,通過閱讀官方提供的兼容性列表,我們可以發現Proxmox VEXenServer針對客戶機操作的兼容性差異在於Unix系統的兼容性上。具體如下:

3:虛擬化管理程序與客戶機操作系統

image.png

在這方面,Proxmox VE是唯一基於開源的1型虛擬機管理程序,可與所有客戶操作系統高效協作。與Proxmox VE不同,XenServer不支持FreeBSDNetBSD或任何其他BSD變體作爲客戶操作系統,但是用戶可以嘗試將其安裝爲HVM來賓,自行安裝FreeBSD等操作系統的,但由於I / O是模擬實現的,因此其性能與其他半虛擬客戶機不匹配。FreeBSDBSD系統有一個專門爲其而生的虛擬化管理程序bhyve,有興趣可去了解,目前正在尋求對X86-64架構的其他操作系統的兼容性支持。

在支持的虛擬機數量上,由於每個版本的參數性能均不同,因此採用兩個管理程序的較新版本進行比較,如Proxmox VE 5.xXenServer 7.x。虛擬機管理程序支持的虛擬機數量是評估其處理能力及內存特性對資源分配和服務器整合能力的重要指標。下表4總結了Proxmox VEXenServer虛擬機管理程序支持的虛擬機數量。

4VM數量,CPURAM特性

image.png

XenServer 7中的最大客戶機數量爲500,但對於基於Linux的客戶機,此數量可以增長到650,但是這種測試的數量可以通過可接受的性能基線值而發生變化,比如配置更低的虛擬機可以運行更多的數量。Proxmox VE也具有類似的負載動態性。在虛擬機的vCPU支持上,XenServer支持每個虛擬機最多添加32vCPU,對於VCPU之間的資源均衡,XenServer使用公平共享平衡算法,以確保虛擬機之間分配CPU資源相應地在物理CPU資源上平衡負載運行。此外,XenServer還可以將物理處理器動態分配給任何特定的虛擬機,動態分配允許虛擬機在可用時有效地利用可用的CPU資源。XenServer的一個好處是它能夠在同一資源池中使用不同類型的CPU,即支持異構資源池。通常,XenServer分別使用針對IntelAMDFlexMigrationExtended Migration技術來運行異構環境。對於Proxmox VE來說,每個虛擬機可支持的vCPU數爲160。並可爲單個客戶虛擬機分配最大192GB的內存空間。兩者均支持動態內存控制及CPU、內存、網絡及硬盤的熱插拔。

在網絡功能上,對於虛擬網絡接口卡(NIC),XenServer可以爲每個虛擬機分配的最大NIC數爲7,但是,存在基於來賓操作系統的變化,有些操作系統支持給更多的虛擬網卡。並且在XenServer物理主機中,支持的最大物理網卡數爲16。對於Proxmox VE,由於其基於Debian系統構建,因此支持的網卡數量遠遠超出這個限制。Proxmox VEXenServer均使用Linux BraidgeOpen vSwitchVM之間提供公平的網絡I / O資源並進行QoS控制。在網絡功能上,XenServer要比Proxmox V的網絡功能強大一點,但是強大的部分均基於商業版本,從開源版本的功能比較上,兩款產品的網絡管理功能均一致。在Proxmox VE中,每個節點最多可支持4,094個網橋,其通用命名格式爲vmbrX,其中X表示04,094之間的整數。Proxmox VE的優勢之一是允許節點間實時遷移的條件少於XenServer

對於虛擬磁盤I / O的情況,XenServer可以分配給VM的最大虛擬磁盤驅動器數量爲16,但這可能會因客戶操作系統的類型而異。在VM之間拆分的磁盤I / O資源是使用基於所定義的設置優先級的公平共享方法完成的。XenServer使用存儲管理器,它是對基於文件和塊的存儲類型的內置支持。對於Proxmox VE,支持的存儲包括滿足本地存儲的目錄、用於本地或共享iSCSI目標的邏輯卷管理(LVM)、用於(OmniOSFreeNASUbuntu等)的網絡文件系統(NFS)、Gluster文件系統( GlusterFS)和Ceph 出於備份目的,Proxmox使用FreeNAS。雖然NFS共享是最常用於VM備份方案,但也可以使用本地和Ceph FS進行完整備份。

最後,從管理功能上比較兩個管理程序。虛擬機管理程序中的管理功能對於輕鬆創建和管理虛擬機非常重要。 一些管理功能包括資產管理、配置快照、高可用性、實時遷移、維護模式、性能指標、存儲遷移、虛擬機克隆、VM遷移,容量規劃/管理、虛擬防火牆、虛擬機備份/恢復、精簡配置、存儲多路徑、性能報告、自動發現、故障轉移和多個主機資源池等。下表5顯示了Proxmox VEXenServer虛擬機監控程序支持的不同管理功能。

 

5:虛擬化管理程序的管理功能

 

image.png

從上面的表5可以看出,兩個管理程序都提供了類似的管理功能,這意味着兩個管理程序之間沒有顯着差異。但是,這些功能如何工作併產生預期結果存在重大差異。例如, XenServerProxmox VE都支持圖形用戶界面(GUI)和命令行界面(CLI)管理。但是XenServer是基於CS架構的GUI客戶端,通過安裝在Windows環境下的GUI客戶端,並通過使用256SSLAES)加密來保護和XenServer主機之間的所有通信。而Proxmox VE使用基於HTML5Web GUI客戶端來實現Proxmox VE的圖形接口操作訪問。兩者都具有專有的CLI管理命令工具。另外一個管理功能比較有所區別的是虛擬機的克隆。XenServerProxmox VE都支持完整克隆和連接克隆。區別在於兩者的存儲文件格式類型不一,所支持的虛擬機的克隆能力有所異同。此外,在存儲空間的利用上,XenServer通過支持在本地磁盤上對現有虛擬機進行精簡置備,格式爲EXT3NFS存儲庫,Proxmox VE由於利用KVM內核,因此和支持的格式有關。對於虛擬防火牆,兩個虛擬機管理程序都具有管理功能,均通過內部包過濾和監控功能來增強安全性。從安全角度來看,XenServer由一個控制域(Dom0)組成,它是一個安全的特權虛擬機,運行XAPI(管理工具堆棧),可用於控制網絡、存儲、身份驗證和計算資源管理中的虛擬機生命週期操作。Proxmox VE使用基於角色的用戶和權限管理來監控虛擬機和容器、存儲池和主機節點。此外,Proxmox VE使用Linux PAMLDAP應用用戶身份驗證。這兩個虛擬機管理程序還提供實時遷移、高可用性(HA)、虛擬機快照和性能報告。這些均是企業在運行過程中能夠對業務運行產生重大幫助的優秀功能。

另外從虛擬機的導入導出和遷移上,XenServerProxmox VE做得要好。基本上,XenServer支持在同構和異構環境中導入和導出虛擬機,並支持行業標準的開放虛擬化格式(OVF),因此它可以接受從其他虛擬機管理程序創建的所有虛擬機,包括VMwareHyper-V等專有虛擬機管理程序。這主要是使用XenServer Conversion Manager實現的。Proxmox VE未開發專門的GUI導入導出工具,但是支持qcow2rawvmdk格式的虛擬機,其導入導出功能需通過CLI工具實現。

 qcow2支持的存儲是NFS和目錄、Raw格式支持LVMRBDiSCSI和目錄。 vmdk支持NFS和目錄。由於高I / O開銷和低處理速度,qcow2格式不適用於數據密集型虛擬機,如數據庫服務器。但是,當存在預算限制和有限的存儲空間時,qcow2文件很有用。此映像類型支持KVM實時快照以保留VM狀態。原始映像類型可確保性能,因爲VM具有直接傳遞訪問權限,因此速度更快。原始文件格式只能提供固定大小或密集配置的VM映像,因此它是所有Proxmox VM的首選文件格式。可以在Proxmox中添加的虛擬驅動器是IDE3),SATA5),VirtIO15),SCSI13)。原始磁盤映像文件始終是預分配的,因此存在超出總可用存儲空間的過度配置風險。此映像類型的另一大優勢是它支持KVM實時快照。關於vmdk圖像格式,Proxmox使用它只是爲了便於VM遷移到其他虛擬機管理程序。 vmdk文件格式的存在允許Proxmox文件在異構管理程序環境中游動。

Proxmox VEXenServer在許多方面類似,但主要區別在於XenServer不支持Linux容器(操作系統虛擬化),而Proxmox VE支持。與XenServer相比,此功能可提升Proxmox VE的強度。雖然Proxmox VE使用獨特的虛擬化API,並利用KVM完全虛擬化和基於LXC容器的操作系統虛擬化,但是其運行和管理歷經生產環境實踐,不使用Libvirt接口也可以很好運行。Proxmox VEXenServer都是流行的虛擬機管理程序,均需要高水平的操作系統及虛擬化技能才能在整個虛擬機生命週期內進行安全管理。根據採用組織的規模和要求,如何在虛擬機之間分配和共享資源是虛擬化管理程序的主要作用。因此,對於旨在以最高性能降低成本削減虛擬化解決方案的組織,Proxmox VEXenServer是虛擬化服務器基礎架構的最有價值和可行解決方案。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章