admin管理员组

文章数量:1655083

虚拟化的软件有哪些?区别是什么?

服务器虚拟化技术简介

虚拟化与云计算中提到云计算最重要的就是服务器虚拟化和调度(Scheduler),本文将简单介绍服务器虚拟化原理。

服务器虚拟化是指将一台计算机(称为物理机、物理服务器)通过hypervisor虚拟为多台逻辑计算机的技术,这些逻辑计算机又被称为虚拟机(VM,Virtual Machine),每台虚拟机都拥有独立的“硬件”。虽然你可以在虚拟机的操作系统中看到这些“硬件”,不过它们并不是真实存在的,而是通过hypervisor将物理机的硬件虚拟而来。虚拟机运行时,虚拟机硬件的工作实际是由物理机的硬件完成的。

hypervisor又被称为虚拟机监视器(VMM,Virtual Machine Monitor),是实现物理机虚拟为虚拟机的操作系统或者软件,它为虚拟机提供虚拟的硬件资源,负责管理和分配这些资源,并确保上层虚拟机之间的相互隔离。hypervisor有两种类型:一种是操作系统,直接安装在物理机上;另一种是应用程序,需要先在物理机上安装操作系统,再在操作系统中安装hypervisor。

虚拟化原理简介

用户/内核空间


Windows和Linux都将内存分为内核空间和用户空间,操作系统内核代码运行在内核空间,应用程序代码运行在用户空间。

特权级


特权级是一种用来保护数据和阻止恶意行为的机制,x86计算机的CPU提供4个特权级:
ring0~3,ring0权限最高,ring3权限最低。

  • ring0提供给操作系统内核(内核空间代码)使用,可以使用所有CPU指令,可以直接操作硬件(如CPU、内存)。
  • ring3提供给应用程序(用户空间代码)使用的,只可以调用基本的CPU指令。
  • ring1、ring2被设计为运行驱动程序,但Windows、Linux将驱动程序运行在ring0,未使用这两个特权级。
    Tips:CPU清除内存数据、设置时钟等指令是非常危险的,如果用错了会导致系统崩溃。通过特权级这一机制,区分内核代码和应用程序代码权限,保证操作系统正常运行。

服务器虚拟化的分类

服务器虚拟化的有多种划分方式,可以根据虚拟化架构划分为裸金属/寄居,根据虚拟化层次硬件辅助虚拟化/软件辅助虚拟化,根据虚拟化平台划分为全虚拟化/半虚拟化。

裸金属/寄居

未虚拟化的x86服务器架构,自下而上是物理硬件(Hardware)、操作系统(OS),应用程序(APP)。这和我们个人计算机一样,就是在计算机上装操作系统,再在操作系统里面安装应用程序。

  •                                  未虚拟化的x86服务器
    

裸金属

裸金属(bare-metal)架构也叫bare-metal hypervisor、Ⅰ型,最有代表性就是VMware ESX(i)。

  •                                   VMware ESXi
    

ESXi是VMware的企业级服务器虚拟化技术,本身是一个操作系统,直接安装的物理服务器上。使用ESXi需要先在物理服务器上安装ESXi,然后在ESXi中创建各种虚拟硬件(相应虚拟硬件的集合,不包括操作系统,也可以称为虚拟机),再在虚拟机上安装操作系统,最后才能在这些操作系统中安装应用程序。

Tips:早期VMware的企业级服务器虚拟化版本称为ESX,后来升级版本称为ESXi。

寄居

寄居(hosted)架构也叫hosted hypervisors、Ⅱ型,代表产品VMware workstation和VirtualBox。

  •                   Windows中使用VMware workstation实现服务器虚拟化
    

判断虚拟化类型是裸金属还是寄居架构,取决于虚拟化层,也就是hypervisor所处的位置。寄居架构将虚拟化层(hypervisor)以一个应用程序的方式安装运行于操作系统之上,支持最为广泛的各种硬件配置(只要HOST OS支持该硬件即可)。裸金属架构将虚拟化层(hypervisor)直接安装到干净的x86服务器上,裸金属架构相对于寄居架构效率更高(少了Host OS这一层),且具有更好的可扩展性、健壮性和性能。

企业级服务器虚拟化都是裸金属架构(效率更高),像主流的企业级服务器虚拟化ESXi、KVM、Xen、Hyper-v都是裸金属架构。

有点特殊的裸金属的Hyper-v和Xen

把他们放在一起是因为他们都有一个非常相似的概念,Hyper-v叫做父分区、Xen叫做Domain 0 。Hyper-v是Windows Server的一个功能,Xen则是在原Linux上安装新的Linux内核。没有开启Hyper-v的Windows Server和没有部署Xen的Linux,就是普通的x86服务器结构。

部署虚拟化之后,两者非常相似。同样是物理硬件位于最底层,hypervisor则分别是Xen和Hyper-v。对于Xen来说原来的Linux将以新的Linux内核运行在Domain 0,对于Hyper-v来说,Windows Server运行在父分区,他们都相当各自的于第一台虚拟机。

hypervisor为虚拟机提供虚拟的硬件资源,负责管理和分配这些资源,但是并不一定能够直接控制物理硬件。例如Xen和hyper-v,一般结构图将hypervisor位于最底层,但是最终直接控制物理硬件的驱动程序还是安装在Domain 0、父分区中的操作系统上。

Tips:KVM虽然和Xen一样是安装在Linux中,但是KVM没有Domain 0的概念,在Linux部署KVM后,其hypervisor相当于Linux的一部分,可以说hypervisor和Linux是在同一层,而Xen则是hypervisor位于最底层,原来的Linux相当于一台虚拟机,原来的Linux(Domain0)和其它虚拟化(Domain U)位于同一层。

硬件辅助虚拟化/软件辅助虚拟化

通常根据CPU虚拟化的方式将服务器虚拟化技术划分为硬件辅助虚拟化和软件辅助虚拟化,软件辅助虚拟化是通过hypervisor实现CPU虚拟化,硬件辅助虚拟化则是借助硬件(需要CPU、芯片组、BIOS、hypervisor都支持)实现CPU虚拟化。常见的硬件辅助虚拟化技术:intel vt-x、AMD-v,它们和各自生产的CPU绑定,intel CPU只能用intel vt-x,AMD CPU只能用AMD-v。

因为硬件辅助虚拟化效率更高,现在主流的企业级服务器虚拟化都是采用硬件辅助虚拟化技术(intel vt-x或AMD-v),KVM和Hyper-v仅支持硬件辅助虚拟化(不支持软件辅助虚拟化),ESXi、Xen和VMware workstation是两者都支持。

Tips:现在不单是CPU有硬件辅助虚拟化,网卡和芯片组也有硬件辅助虚拟化。比如以Intel VT虚拟化技术就包括分别针对处理器、芯片组、网络的IntelVT-x、IntelVT-d和IntelVT-c技术,以及显卡虚拟化GVT,不过服务器虚拟化划分标准还是根据CPU虚拟化的方式决定的。

全虚拟化/半(准)虚拟化

Tips:在主流的4种服务器虚拟化技术中,Xen全半虚拟化都支持。半虚拟化使用定制的Gust OS,这给维护带来极大不便,但是性能比较好。

主流的虚拟化软件

一、Xen

官方

Xen 由剑桥大学开发,它是基于硬件的完全分割,物理上有多少的资源就只能分配多少资源,因此很难超售。可分为Xen-PV(半虚拟化),和Xen-HVM(全虚拟化)。

Xen是不能超售内存和硬盘的,当母服务器只有16G内存以及100G硬盘时,当开Xen架构(任意一个虚拟化)的1G内存、25G硬盘的子机时,会直接占用服务器1G内存,以及25G硬盘,所以Xen的性能,相比OpenVZ在超售的情况下要好。

Xen-PV:半虚拟化,所以它仅仅适用于linux系列VPS,但它的性能损失比较少,大概相对于母机的4%-8%左右。
Xen-HVM:全虚拟化,可以安装windows或自由挂载ISO文件安装任意系统,由于是全虚拟化,所以性能损失较大,大概相对于母机性能损失8%-20%左右。

Xen适用人群:预算较为充足,且希望VPS有较高性能的客户
Xen注意事项:注意Xen-PV和Xen-HVM的区别。
Xen可用系统:Xen-PV:纯Linux,Xen-HVM:支持Windows、Linux等。
Xen代表商家:Linode

二、OpenVZ

官方

OpenVZ(简 称OVZ)采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,是基于Linux平台的操作系统级服务器虚拟化架构。这个架构直接调用母服 务器(母机)中的内核,模拟生成出子服务器(VPS,小机),所以,它经过虚拟化后相对于母服务器,性能损失大概只有的1-3%。

当然 OpenVZ可以超售,意思味着一台服务器总共16G内存,他可以开出配置为1G内存×17台以上的子服务器。因为他的虚拟架构关系属于:客户用多少,就 扣除母服务器多少,所以OpenVZ架构的VPS较为便宜。但由于存在超售因素,如果服务商毫无休止的超售会导致服务器的性能急剧下降。

OpenVZ另一个特点是,它是直接调用母服务器的内核,所以会导致部分软件无法使用,以及部分内核文件是无法修改。

OpenVZ适用人群:新手、低预算客户
OpenVZ注意事项:资源不是自己独有的,安装VPN服务需要注意检测虚拟网卡支持。
OpenVZ可用系统:Linux(不支持Windows)
OpenVZ代表商家:Buyvm

三、KVM
官方

KVM是Linux下的全功能虚拟化架构,基于KVM架构的VPS,默认是没有系统的,可自己上传ISO或调用服务商自带的ISO手动安装系统。这个非常适合热爱DIY自己VPS的客户。

由于KVM架构全功能虚拟化架构,甚至拥有独立的BIOS控制,所以对母服务器性能影响较大,所以基于KVM的VPS较贵,但KVM VPS相对其它架构的VPS较为自由。

KVM适用人群:折腾帝
KVM注意事项:虚拟化性能比Xen略低
KVM可用系统:Windows、Linux系列
KVM代表商家:Hostgation

四、Hyper-V

官方

Hyper-V是微软的一款虚拟化产品,大部分国内的VPS服务商使用这个架构,主要是因为其转为Windows定制,管理起来较为方便。目前的Hyper-V也支持Linux,只不过性能损失比较严重。

Hyper-V完美支持Windows系统,包括32位和64位。如果大家选购Hyper-V架构的VPS,强烈建议使用Windows。

Hyper-V目前不能超售内存,但可超售硬盘,硬盘是根据客户使用情况扣除。一般来说,服务器的硬盘不会100%用完,这点不用担心。

Hyper-V适用人群:Windows系统爱好者
Hyper-V注意事项:Linux操作系统性能较低
Hyper-V可用系统:Windows、Linux

五、VMWare

官方

VMWare 是全球桌面到数据中心虚拟化解决方案的领导厂商开发的一款全功能完全虚拟化的软件。但由于VMWare用于开设类似VPS(含独立面板)的系列产品授权费 用非常昂贵,所以大部分使用VMWare服务商会使用 VMware工作站(VMware Workstation)提供VPS。

使用VMware工作站(VMware Workstation)开设的VPS是无控制面板的,操作系统需要服务商手动安装,但现在网上寻找VMware Workstation的神KEY非常容易,对于VPS服务商来说节省不少成本。一般用于新创业的VPS服务商。

使用VMWare Workstation实质上的VPS可以超售,因为其和OpenVZ架构一样,子机用多少内存,就扣除系统多少内存,但如果物理内存不足时可能导致母服务器使用Windows虚拟内存。

VMWare适用人群:认真建站或挂机的客户
VMWare注意事项:无控制面板
VMWare可用系统:Windows、Linux系列

以上衡量超售指的是内存、磁盘,其它硬件条件,如网络带宽、CPU等不在考虑范围内。

区别

1.从费用上比较

收费和免费:

  • xen 和 kvm 都是开源免费的虚拟化软件。
  • vmware 是付费的虚拟化软件。
  • hyper-v 比较特别,是微软windows 2008 R2附带的虚拟化组件,如果你买了足够的授权,hyper-v(包括hyper-v 2008 core)都可以免费使用。

因此:

  • 如果是vmware或hyper-v虚拟windows系统,不管是虚拟化软件本身,还是其中的子系统,都要支付许可费用。
  • 如果是vmware或hyper-v虚拟linux,虚拟化软件本身要支付许可费用,子系统可以用linux来节省成本。
  • 如果是xen或kvm虚拟windows,其中的子系统要支付许可费用。
  • 如果是xen或kvm虚拟linux,那么虚拟化软件本身和其中的子系统无需产生任何费用。

结论:

  • 虚拟 windows,在有授权的情况下,建议使用 hyper-v;在没有授权的情况下,虚拟windows,建议使用 KVM
  • 虚拟 linux,建议使用 xen,如考虑到需要降低管理维护和学习成本,建议使用kvm。

2. 从性能上比较

虚拟windows,如果都能得到厂商的支持,那么,性能优化可以不用担心。这几款软件全都能达到主系统至少80%以上的性能(磁 盘,CPU,网络,内存),这时建议使用 hyper-v 来虚拟windows,微软自身的产品,虚拟windows是绝对有优势的。

参照:源数据表

总结表格如下

Best ValueBare MetalKVMXen
C-Raylower35.3535.6636.13
POV-Raylower230.02232.44235.89
Smallptlower160162167.5
John the Ripper (Blowfish)higher30262991.52856
John the Ripper (DES)higher7374833.57271833.56911167
John the Ripper (MD5)higher4954848899.546653.5
OpenSSLhigher397.68393.95388.25
7-Ziphigher12467.512129.511879
Timed MAFFT Alignmentlower7.787.7958.42
CLOMPhigher3.33.2853.125
PostMarkhigher366738243205

本测试使用裸机作为虚拟服务测试的基准设备。在不跑虚拟机的情况下,两台裸机的性能偏差不会大于0.51%

在几乎所有测试中,KVM 的性能相比宿主机而言下降了1.5%以内,只有两项测试例外。第一个是 7-zip 压缩,比宿主机慢了 2.79%。第二个就奇怪了,我们搭了一个邮件服务器,用 PostMark 测试其性能,结果表明 KVM 竟比宿主机快了4.11%。然后我在两台服务器中重新跑了几遍 PostMark 测试,结果性能差异基本不变,浮动都在最初测试结果的1%以内。由于我对 virtio 的内部机制没有很深的理解,我只能在以后再对这个怪现象进行进一步了解。

Xen 的性能相对宿主机而言差异就比较大了。有3项测试性能下降在2.5%以内,剩下的性能下降率都是 KVM 的2~4倍。PostMark 测试的性能比 KVM 慢了14.41%,这结果令我大吃一惊。重新跑了下测试,性能差还是几乎不变,浮动都在最初结果的2%以内。KVM 表现最好的 CPU 测试:MAFFT 对齐测试,是 Xen 表现倒数第二差的。

结论

基于上面的测试环境,KVM 的性能损耗几乎都在2%以内,Xen 则在十多项测试中有3项损耗在2.5%以内,而其他几项损耗都在5~7%之间。虽然 KVM 在 PostMark 测试中性能表现优异,但这是众多测试中仅有的一项 I/O 测试,如果想证明 KVM 确实在 I/O 处理方面很强悍,就需要更多测试。

3. 产方支持

如果以上产品我们不打算买厂商支持,其中vmware和hyper-v,是不建议使用的,主要是授权问题。

这时就剩下kvm和xen了,如果虚拟windows,建议使用 kvm,我们可以从 redhat那里免费拿到针对 windows 优化过的磁盘和网络的驱动 程序,可以达到较高的性能(几乎与hyper-v性能持平)。

本文标签: 区别有哪些软件