基于近期调研使用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:虚拟化管理程序与虚拟化方法

开源虚拟化ProxmoxVE和XenServer的分析比较_第1张图片

对于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架构

开源虚拟化ProxmoxVE和XenServer的分析比较_第2张图片

其次,在支持的客户机操作系统上,通过阅读官方提供的兼容性列表,我们可以发现Proxmox VEXenServer针对客户机操作的兼容性差异在于Unix系统的兼容性上。具体如下:

3:虚拟化管理程序与客户机操作系统

开源虚拟化ProxmoxVE和XenServer的分析比较_第3张图片

在这方面,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特性

开源虚拟化ProxmoxVE和XenServer的分析比较_第4张图片

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:虚拟化管理程序的管理功能

 

开源虚拟化ProxmoxVE和XenServer的分析比较_第5张图片

从上面的表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是虚拟化服务器基础架构的最有价值和可行解决方案。