目前市场上有许多不同的虚拟机管理程序,常见的如VMware、Hyper-V、Citrix Xen、KVM和Oracle VM应用都比较广泛,主要用来对服务器进行虚拟化。
其中,VMware(ESXi)在市场上排名第一,拥有较大的市场份额,其次是Hyper-V和Citrix XenServer,它们在hypervisor市场也有不错的份额。近些年来,KVM也开始获得良好的市场份额,特别是在Linux社区和企业公司中,这主要是因为它是开源且免许可。
在本文中,小编主要介绍当前比较两种最流行的虚拟机管理程序:KVM和VMware,看看二者之间有哪些区别差异。
虚拟机管理程序(Hypervisors)类型
众所周知,Hypervisor有2种类型:Type 1 和Type 2。
- Type 1 是裸机架构:直接在主机硬件上运行并控制硬件以及管理虚拟机示例: VMware、Hyper-V、KVM和Oracle VM
- Type 2 是托管架构:在操作系统 (OS) 之上运行。在这种情况下,客户操作系统运行在硬件之上的第三层示例: VMware Workstation/Fusion、Oracle Virtualbox或Windows Virtual PC 等
需要注意的是,Hyper-V和KVM作为服务器角色工作,但它仍然被视为裸机、本机管理程序,因为管理程序可以直接访问硬件以及管理程序托管的任何VM。
本文主要讨论的是Type 1 Hypervisor:vSphere(VMware)和KVM。
什么是KVM
基于内核的虚拟机(KVM)是一种开源Type 1 Hypervisor,可以安装在大多数Linux发行版和某些Windows中。尽管KVM运行在Linux操作系统之上,但它仍被视为基于Linux的Type-1 Hypervisor。它将任何Linux转换为Type 1 Hypervisor,因为它提供对硬件资源、Intel VT-x(或VT)和AMD-V硬件的直接访问。
KVM在主机操作系统中通过一组内核模块(kvm.ko、kvm-intel.ko和kvm-amd.ko)实现,提供核心虚拟化基础架构。KVM基本上是一个Linux服务器,但它通过其虚拟工具和功能提供了额外的特定功能。
此外,KVM不需要许可证,而且是免费的。这就是许多企业公司使用它的原因。但支持是由Linux操作系统供应商提供的,而不是KVM。
什么是VMware(vSphere)
ESXi代表Elastic Sky X Integrated,也称为vSphere,是VMware的Type 1 Hypervisor,独立于任何操作系统运行。由于它是Type 1 Hypervisor,因此它基于其内核并独立于任何操作系统运行。
vSphere和ESXi之间的区别
有时,ESXi和vSphere 之间会出现混淆。ESXi包含在vSphere中,ESXi Host是vSphere的核心。
vSphere是VMware hypervisor,但还包括其它产品和功能,例如vSphere Client、vMotion、vStorage、HA以及最近由vCenter提供的vSphere with Tanzu,这些都是vSphere的一部分。
当提到VMware Hypervisor产品及其功能时,基本都会提到vSphere;当提到Host时,我们会提到ESXi。在本文中,小编在提到VMware Hypervisor时使用vSphere。
VMware正在通过新版本vSphere+改变我们使用vSphere的方式。
ESXi与KVM差异
接下来,小编将根据以下参数讨论ESXi和KVM之间的差异:
- 系统要求
- 部署环境
- 访问主机
- 支持来宾操作系统
- 负载均衡和集群
- 可扩展性和限制
- 成本、许可和支持
- 更新和升级
最低系统要求
KVM:
注意:在本文中,我使用CentOS 8作为KVM安装的示例。但所有Linux发行版的安装要求和任务都是相同的。对于不同的Linux操作系统,命令可能会有所不同。最低系统要求是:
- 6GB可用磁盘空间
- 2GB内存
- SCSI 磁盘或虚拟机的本地空间
- 至少一个千兆位或更快的以太网控制器
但对于你计划在KVM中安装的每个VM,它至少需要额外的2GB内存。
注意:如果在32位内核系统中安装KVM,KVM的VM内存限制为2GB。如果计划在虚拟机上使用超过2GB的内存,KVM系统必须是64位内核系统。此外,64位系统可以同时托管32位和64位客户机。32位系统只能托管32位来宾。
可以通过运行uname –m在Linux中检查这一点。如果得到x86_64就意味着它是64位内核系统。如果CPU不支持硬件虚拟化或者BIOS中未启用此功能,则KVM内核模块不会加载
另外,对于每个Hypervisor,CPU都需要支持硬件虚拟化或者需要在BIOS中启用。
- 如果是Intel,那就是Intel VT-x(以前称为Intel VT)
- 对于AMD来说是AMD-V
要检查系统是否具有运行KVM的CPU要求,请运行以下命令。
# lscpu | grep Virtualization
输出如下:
Virtualization: VT-x
Virtualization type: full
正如在上面看到的,VT已启用并准备成为Hypervisor。如果此CPU没有适当的要求,将无法获得虚拟化:VT-x选项。
vSphere:
注意:由于版本6.5和6.7即将终止,本文中的要求仅适用于vSphere 7。
vSphere不需要支持硬件虚拟化的CPU。但如果计划运行64位虚拟机,则需要在x64 CPU上启用并支持Intel VT-x或AMD RVI。另外,它还要求在BIOS中为CPU启用NX/XD位。最低系统要求是:
- 主机至少有两个CPU核心
- 32GB持久存储,例如HDD、SSD或NVMe
注意:可以在SD和非USB闪存介质设备中安装vSphere,但仅限于ESXi引导库分区。像ESX-OSData这样的分区需要安装在持久存储中。VMware计划未来停止支持非持久存储中的vSphere。
- 4GB RAM(但如果计划创建任何虚拟机,则至少需要8GB内存)
- SCSI磁盘或本地非网络RAID LUN,具有用于虚拟机的未分区空间
- 至少一个千兆位或更快的以太网控制器
部署管理程序
KVM:
如上所述,KVM需要部署在Host OS中。在这种情况下,无需下载安装ISO或应用程序。这是通过安装KVM模块手动完成的。
注意:在任何Linux中安装KVM之前,应该在系统上运行更新。就小编而言,CentOS 8是dnf update。
设置KVM管理程序,在Linux CentOS8中部署的命令是:
# dnf module install virt or yum module install virt
注意: dnf命令是新的yum生成命令。
然后安装工具来配置虚拟机,命令如下:
# dnf install virt-install virt-viewer libguestfs-tools
接下来使用以下命令验证KVM安装:
# lsmod | grep kvm
输出如下:
kvm_intel 344064 0
kvm 905216 1 kvm_intel
irqbypass 16384 1 kvm
最后启动并启用KVM服务,就可以开始了,命令如下:
# systemctl enable libvirtd.service
# systemctl start libvirtd.service
# systemctl status libvirtd.service
注意:正如我上面所说,这些是RedHat/Centos的命令。其它Linux发行版会有不同的命令。但要安装的模块是相同的。
vSphere:
要安装vSphere,需要从VMware官网下载 ISO。它可以是VMware默认ISO或供应商定制的ISO(构建并定制为在供应商硬件中运行)。当然,你可以使用服务器iLO/iDRAC安装ISO,使用虚拟介质启动ISO,或者使用ISO创建启动USB闪存驱动器或CD(这个不太常用)
实际上ESXi的初始安装非常简单。使用ISO引导,点击几下,ESXi就安装完毕:
KVM和vSphere都需要一些安装后配置。例如,应该创建用于管理和虚拟机、存储等的网络。这样即使可以为所有人使用相同的网络,但也应单独配置网络。
访问管理程序
KVM:
要访问KVM,可以使用ssh连接服务器或使用KVM虚拟机管理器(VMM)或virt-manager。但要使用KVM VMM,需要安装它。要安装虚拟机管理器,请运行以下命令:
# dnf install virt manager
你可以从控制台启动VMM,或者如果有Linux GUI,则通过单击图标启动。要从控制台启动 VMM,请运行以下命令:
# sudo virt-manager
启动VMM将打开VMM GUI,你可以在其中更改KVM设置(网络、存储等)。此外,你还可以使用VMM本地安装来远程连接KVM服务器。
另外,还可以在VMM中监控VM。
可以访问virt-manager页面以获取有关此工具的更多信息。
vSphere:
ESXi具有嵌入式vSphere Client,可让你访问ESXi Hypervisor。如上所述,这是vSphere的一部分的功能/工具。当安装ESXi时,它会嵌入到vSphere中。你不需要安装或配置任何东西。只需打开浏览器并输入:https://IP或FQDN即可:
你可以从此处执行所需的所有任务和配置,但需要vCenter的任务和配置除外(如集群、HA、vMotion、vStorage等)。与此同时,你还可以在ESXi主机中安装vCenter作为设备来管理所有vSphere。
支持的来宾操作系统
KVM和vSphere:
两个虚拟机管理程序在你的虚拟机上支持几乎相同的来宾操作系统。某些操作系统版本可能存在一些细微差别(VMware删除了一些旧的Windows)。
此外,vSphere还支持Mac操作系统。它需要一些特定的配置,但你可以在vSphere VM中运行Mac操作系统。vSphere还支持嵌套虚拟机管理程序。
负载均衡和集群
关于负载平衡和集群,KVM有一些限制,主要是在使用Virtual Manager时对数据中心的大小和每个数据中心的主机数进行限制。此外,负载平衡还对主机和数据中心之间的CPU有一些限制。
对于vSphere和vCenter,在vCenter如何处理主机和存储之间的负载平衡方面存在很大限制。vCenter可以处理的主机数量是VMM可以处理的主机数量的5倍以上。
实际上,这两种管理工具可以处理的虚拟机数量也有很大不同。请查看下一节表格比较。
vSphere与KVM可扩展性和限制比较
KVM的可扩展性和限制取决于Linux发行版。建议查看其它Linux发行版文档以检查不同的限制。有些比其它发行版可能有更多的限制。在这次比较中,小编使用了Red Hat Enterprise Linux 9及其最新的限制(部分对比)。
注意:请记住,Red Hat Enterprise Linux不是免许可证的。
成本、许可和支持
KVM和VMware之间的关键区别在于,前者是开源软件,后者是提供一套专有解决方案的公司。由此产生的主要差异是成本、支持级别和可扩展性。
正如你可能猜到的那样,VMware是一种更昂贵的解决方案。KVM是Linux的一部分,因此它带有免费许可证。从Oracle或Red Hat等软件供应商处购买基于KVM的软件包时可能需要付费。对于VMware,在大多数情况下,需要获取许可证。
VMware作为商业软件,始终为其产品提供支持。KVM作为开源软件,注重社区支持,并且可能需要你从软件供应商处购买支持。
然而,对于可扩展性是一个有争议的问题。一些专家声称,VMware解决方案更具可扩展性,因为可以购买与主虚拟机管理程序完全兼容的额外软件包或产品。 其他人则认为,KVM作为Linux内核的一部分,可以随着来宾计算机数量的增加而扩展以匹配工作负载。它允许你虚拟化最苛刻的应用程序工作负载。此外,KVM是开源的,因此任何人都可以修改源代码并使软件适应自己的需求。
当然,KVM是为Linux构建的,而VMware可以安装在Linux和Windows上。
更新和升级
KVM:
KVM的更新或升级是基于Linux的更新。当你更新主机操作系统时,它也会更新KVM 模块(如果有任何更新)。
要完整更新(Linux操作系统和KVM),请输入命令:
# dnf update
仅更新KVM虚拟管理器:
# dnf update virt-manager
仅更新KVM模块:
# dnf module update virt
vSphere
对于VMware更新,有多种选择。你可以使用shell控制台使用以下命令来更新/升级vSphere:
- 离线升级需要将ESXi安装映像下载到本地数据存储
- 在线升级 – 需要通过Internet访问VMware存储库
对于vSphere升级:
# esxcli software profile update –d “local repository”
# esxcli software profile update –p “VMware online repository”
对于vSphere更新和补丁:
# esxcli software vib update –d “local Datastore repository”
# esxcli software vib update –v “VMware online repository”
除了使用命令行更新/升级vSphere之外,还可以下载最新的vSphere,使用ISO引导ESXi Host,然后选择升级选项。
但是,当我们使用vCenter时,在ESXi主机中应用任何修补程序或更新的最快且最安全的方法是使用vSphere Lifecycle Manager(以前称为VMware Update Manager)。借助这个集中式更新管理器,可以获取VMware已推出的所有更新,并且它已连接到VMware在线存储库(以及硬件供应商,只要在vSphere Lifecycle Manager中配置了供应商存储库)。
借助Lifecycle Manager,可以更新ESXi Host、应用安全补丁以及将任何ESXi主机升级到新版本。还可以在vSphere 7中更新服务器的固件,但目前固件附加组件仅支持Dell EMC和HPE。
KVM与VMware哪个好?
总是有人讨论对于公司来说最好的解决方案是VMware还是KVM?小编认为这取决于你的环境和预算。与同类产品一样,这两种产品之间存在一些优点和缺点。
你计划通过虚拟化环境实现什么目标?例如:
是否需要vSphere堆栈中包含的所有功能?是否计划在管理环境中实现高可用性、负载平衡、容错等?是否计划选择在环境(vCenter)之间无任何干扰(vMotion)迁移在线虚拟机?数据存储 (vStorage) 之间的在线迁移?自动管理数据存储和ESXi主机 (DRS) 之间的工作负载?
拥有适用于所有虚拟机管理程序集群的集中式环境并应用集中式存储库中的更新和安全?并能够添加vSAN之类的功能来将本地磁盘用作SAN并发挥所有优势?借助vSphere,可以使用虚拟交换机、虚拟SAN(vSAN)、虚拟LAN或防火墙构建整个网络虚拟基础架构。
那么如果预算充足,我的答案是vSphere是你的选择。
但如果许可证成本至关重要并且不需要vSphere堆栈中的大多数功能,那么KVM是更好的选择。
就两种环境之间的性能而言,这两者没有太大差异。KVM在某些数据库(如Oracle)中具有一定的性能优势。但vSphere可以使用更好的配置和额外的选项来绕过这个问题,以便数据库可以正常工作。
另外,在为我们的环境选择虚拟机管理程序时,还需要考虑支持。如上所述,由于没有KVM支持,这些大公司只能依靠其内部IT支持团队和大型Linux支持合同。较小的公司不能指望他们,因为他们没有大型(或不存在)具有适当经验的IT支持团队。
使用vSphere在vCenter等主要环境中进行配置、添加新主机、创建集群、创建虚拟机、模板甚至Kubernetes都不太复杂,也更省时。使用KVM,所有这些选项和任务(如果有)执行起来会更加复杂。并且使用KVM虚拟机时,某些应用程序无法正常运行。许多应用程序在vSphere虚拟机中运行时运行得更好。主要是在使用Monster VM(在vSphere 7中引入)时,例如与SAP HANA 一起使用时。
两种产品之间的另一个区别是你可以在虚拟机管理程序中使用哪些硬件。vSphere的服务器硬件必须位于硬件兼容性列表(HCL)中才能支持甚至工作。KVM可与几乎所有硬件和供应商配合使用。只要能与Linux配合使用,就可以与KVM配合使用。
当然,许可证成本是企业公司在选择Hypervisor时最关心的问题之一,而成本使KVM在选择Hypervisor时具有显着的优势。许多大中型企业可以考虑VMware的可扩展性和支持。
所以可以看到,从用户的角度来看,VPS是基于KVM还是基于VMware并没有太大区别。管理员需要配置两个虚拟机管理程序,使其能够完美运行。KVM和VMware都是一流的解决方案,可保证性能、安全性和可扩展性。
然而事实是,由于价格和简单性的差异,KVM最常被选择来运行VPS服务器。云主机托管提供商倾向于选择VMware。