3.3 常用计算虚拟化软件

3.3.1 VMware

VMware是私有云最大的赢家。VMware成立于1998年,2004年被存储巨头EMC收购,2007年8月于纽交所挂牌上市,股价首日飙升79%,涨幅超过当年Google的首日表现,当天市值达到190亿美元。2016年,戴尔斥巨资(670亿美元)收购EMC,并通过这次收购获得了其子公司VMware 82%的股权,VMware的毛利率长期保持在85%左右,可见它在私有云的霸主地位。

VMware的产品非常丰富,服务器虚拟化方面的产品主要是它的VMware vSphere系统。其中,计算虚拟化主要是它的ESXi操作系统,vCenter提供了ESXi服务器集中化管理,如图3-8所示。

图3-8 VMware vSphere系统示意图

运维人员通常通过vSphere Client和vSphere Web两种方式进行管理,其中,vSphere Web提供的功能更加强大。它提供了Web API和SDK。vSphere还有一些高级功能,如:虚拟机的热迁移功能VMotion。通过VMotion可以实现不停机迁移虚拟机。它需要借助共享存储保存整个系统,然后结合内存迁移技术将虚拟机从一台物理机迁移到另外一台物理机。图3-9是虚拟机迁移示意图。

图3-9 虚拟机迁移示意图

DRS和HA也是vSphere常用的高级功能,DRS可以设置虚拟机的分配策略,让部分虚拟机调度某些机器,或者不调度某些机器,可以设置虚拟机之间的亲和策略和反亲和策略等。HA则是保障机器的高可用。当出现物理机宕机等故障时,能够将流量切换到备用机器上,防止服务中断。

VMware提供了一套整体的私有云解决方案,即软件定义的数据中心(SDDS)平台,它将计算、存储和网络虚拟化整合到一个原生的集成体系中。除了上面介绍的vSphere,VMware SDS(软件定义存储)提供了SAN、NAS,或者是基于x86业界标准硬件的直连存储。在SDN(软件定义网络)方面,VMware在2012年收购Nicia后推出了NSX,虚拟机网络通过NSX控制的虚拟交换机完成数据包的转发。NSX还提供了虚拟负载均衡器、虚拟防火墙、虚拟路由器等一系列软件定义的网络设备。

由于VMware在私有云方面的绝对领导地位,被用户广泛接受。在很多混合云场景中,用户希望在公有云环境中还能继续使用Vmware。为此,很多公有云公司(如阿里和AWS)都和Vmware有深度合作,可以在公有云的物理硬件之上运行VMware套件,从而用户可以无缝迁移到公有云,也可以和原有VMware私有云组建混合云解决方案。

3.3.2 Xen

Xen是最早开源的虚拟化软件,由剑桥大学开发,Xen后来被思杰收购,开发出Xen Server,并在2013年宣布免费。

Xen包含三个组件,分别是Hypervisor、Domain0和Domain U,其中Hypervisor负责虚拟化硬件资源,Domain U是客户机操作系统,而Domain0则是负责管理Domain U的。

Xen支持半虚拟化和全虚拟化。在半虚拟化中,客户机操作系统需要感知自己是运行在虚拟化环境中,所以需要定制客户机操作系统,穿透Hypervisor层。而在全虚拟化中,客户机操作系统完全不感知自己处于虚拟化环境中。所以Xen半虚拟化相对于全虚拟化在性能方面要好很多,但由于需要定制操作系统,增加了推广的难度。

很多公有云厂商如AWS和阿里云起初都是使用Xen虚拟化方案,但随着硬件性能的提升,以及硬件自身对虚拟化的支持(如VT-X、EPT、VT-D等),Xen的半虚拟化的方案优势并不明显,并且爆发多次严重的系统漏洞后,因此,都逐渐从Xen切换到日益成熟的KVM上,给Xen的未来前景蒙上了阴影。Xen架构图如图3-10所示。

图3-10 Xen架构图

3.3.3 Hyper-V

Hyper-V是微软的虚拟化产品,它采用微内核架构,从而提高了系统安全性。Hyper-V从一开始设计就是基于硬件辅助虚拟化的,所以要求CPU必须支持AMD-V,或者Intel VT。

国内用户接触的比较少,国内只有部分银行使用,它的最大优势是原生基于Windows server的虚拟化,对Windows操作系统支持得也好。对于使用Windows操作系统的用户来说,是非常便利的。在国外,微软公有云Azure的占有率逐年上升,仅次于AWS。

3.3.4 KVM

KVM(Kernel-based Virtual Machine)直译为基于内核的虚拟机。它是由以色列Qumranet公司开发的,并在2017年加入Linux 2.6内核。这里有个小插曲,从KVM的研发不到一年的时间就被加入内核,除了KVM代码本身是由Avi Kivity(不仅是KVM之父,还主导了云计算设计的操作系统OSv的设计和开发)操刀开发的,还有一个重要的原因是当时XEN虚拟化设计直接绕过内核,这让Linux的维护者恐慌不已。在2008年,Redhat就收购了Qumranet,并在RHEL 6中用KVM替换Xen,成为默认的虚拟化引擎。

KVM整体架构主要分为两部分,一个是内核KVM部分,另一个是用户空间的QEMU。其中,QEMU实际上就是一个模拟器,它可以模拟各种物理硬件,包括CPU、网卡、显卡等。网上也有通过QEMU在Android手机上运行Windows操作系统,但它是一种纯软件方式的实现,性能很低,需要借助KVM内核模块提速。KVM整体结构如图3-11所示。

图3-11 KVM整体结构