云数据中心网络架构与技术(第2版)
上QQ阅读APP看书,第一时间看更新

2.2 云计算催生的虚拟化技术

虚拟化(Virtualization)是一个广义的术语。根据牛津英语词典的解释,在计算领域范畴内,虚拟是指“物理上并不存在,而是通过软件实现并呈现出来的做法”。可以理解为,一个虚拟元素是某个元素的一种特定的抽象。通过虚拟化,人们可以对包括基础设施、系统和软件等计算机资源的表示、访问和管理进行简化,并为这些资源提供标准化接口来接收输入和提供输出。虚拟化技术可减少业务软件对现实环境的依赖,使企业更容易简化操作流程、提高资源利用率、降低成本,以及获得更稳定和更高的可用性。

在过去的数十年中,计算、网络、存储三大领域的虚拟化技术蓬勃发展而又互相依存。其中,计算虚拟化技术的发展无疑是核心中的核心,而网络及存储虚拟化技术的发展则都是为了适应计算虚拟化发展带来的变化与挑战。计算虚拟化可理解为通过使用VMM(Virtual Machine Manager,虚拟机管理器),在一台物理机上虚拟出来并运行一个或多个虚拟系统,从而提高计算机硬件资源的利用率,提升IT支撑效率。

VMM是物理服务器和用户操作系统之间的软件层,通过抽象及转换实现多个用户操作系统及应用共享一套基础物理硬件。因此,VMM可以看作虚拟环境中的“元”操作系统,它可以根据虚拟机的配置分配适量的逻辑资源(内存、CPU、网络、磁盘等),加载虚拟机的客户操作系统,并协调访问虚拟机和服务器上的所有物理设备,如图2-1所示。

图2-1 虚拟化

VMM主要有以下两种形式。

·Hypervisor VM(Virtual Manufacturing,VMware主机,泛指虚拟机):直接运行在物理硬件上,聚焦虚拟I/O性能优化,主要用于服务器类的应用。

·Hosted VM:运行在物理机的操作系统上,上层功能相对更为丰富,比如支持三维加速等特性,其安装和使用也非常方便,常用于桌面应用。

计算虚拟化技术不止一种,且使用不同的方法、不同层次的抽象,常常可以实现同样的结果。常用的虚拟化技术有以下几类。

1.全虚拟化

全虚拟化也称为原始虚拟化,如图2-2所示,该模型使用一个虚拟机作为Hypervisor,统一协调客户操作系统(Guest OS)与原始硬件。Hypervisor会捕捉和处理那些对虚拟化敏感的特权指令,使客户操作系统无须修改就能运行。由于所有特权指令都要经过Hypervisor统一处理,所以虚拟机的性能会低于物理机,也可能会因实现的方式不同而存在差异,但大致能满足用户的需求。随着硬件辅助虚拟化技术的引入,全虚拟化技术的性能瓶颈逐渐得以突破。代表产品有:IBM CP/C MS、Oracle VirtualBox、KVM、VMware Workstation和ESX。

图2-2 全虚拟化

2.半虚拟化

半虚拟化也称为超虚拟化,如图2-3所示,它与全虚拟化有些相似,也利用Hypervisor来实现对底层硬件的共享访问。二者的区别在于半虚拟化技术将与虚拟化有关的代码集成到客户操作系统当中,使得客户操作系统能够很好地配合Hypervisor实现虚拟化。通过这种方法,Hypervisor将不再需要重新编译或捕获特权指令,其性能非常接近物理机。最经典的产品就是Xen,又因为微软的Hyper-V所采用的技术和Xen类似,所以也可将Hyper-V归为半虚拟化产品。半虚拟化的缺点在于需要对客户操作系统进行修改,所以其支持的客户操作系统受限,其用户体验相对较差。

图2-3 半虚拟化

3.硬件仿真

毫无疑问,最复杂的虚拟化技术就是硬件仿真。如图2-4所示,这种方法是在物理机的操作系统上创建一个模拟硬件的程序(硬件VM)来仿真所需要的硬件,并在此程序上运行虚拟机。未借助硬件辅助虚拟化技术的情况下,每条指令都必须在底层硬件上进行仿真,这会导致运行速度非常慢,有时不及物理情况下速度的1/100。但硬件仿真可以实现在一个ARM处理器主机上运行为PowerPC设计的操作系统,且不需要进行任何修改。硬件仿真的代表产品有Bochs和Qemu。

图2-4 硬件仿真

4.操作系统级虚拟化

操作系统级虚拟化所使用的技术与上述3种虚拟化技术有所不同。如图2-5所示,这种技术通过对服务器操作系统进行简单的隔离来实现虚拟化。它可实现更小的系统开销、抢占式的计算资源调度,以及更快速的弹性扩缩能力。但在资源的隔离及安全性上还存在一些不足。目前越来越流行的容器技术就属于这种虚拟化技术。

图2-5 操作系统级虚拟化

5.硬件辅助虚拟化

Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化处理来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派。最出名的例子莫过于VMware Workstation,它虽然属于全虚拟化产品,但是在其6.0版本中引入了硬件辅助虚拟化技术,比如Intel的VT-x和AMD的AMD-V。现在市面上主流的全虚拟化和半虚拟化产品都支持硬件辅助虚拟化,包括VirtualBox、KVM、VMware ESX和Xen。

上述几种计算虚拟化技术特点鲜明,且各有优缺点,随着上层应用诉求的变化,在硬件辅助虚拟化技术的催化下,各领风骚若干年。从2001年VMware发布ESX,扰动了沉寂多年的虚拟化市场,到2003年Xen1.0开源版本问世,再到2007年KVM合入Linux-2.6.20主线版本,2008年底微软与Citrix合作推出Hyper-V,以及Kubernetes等容器技术的加速成熟……时至今日,虚拟化技术才刚刚处于青春期阶段,还在大踏步地发展。在商业模式上,开源与闭源之争也一刻不曾停歇。

各虚拟化技术的优劣比较如表2-1所示。

除了计算虚拟化,数据中心网络的虚拟化技术也随着计算及存储的变化而快速演进。从多虚一(横向/纵向虚拟化)技术及一虚多(Virtual Switch)技术,到通过Overlay技术实现虚拟大二层网络,以便构建大规模计算资源池及响应VM迁移的诉求,再到通过SDN技术,计算与网络资源联动,实现网络自身功能的抽象、自动化及可度量化,以及意图驱动的网络,数据中心网络正向自动驾驶网络的方向不断发展。相关内容将在本书后续章节详细介绍。

表2-1 各虚拟化技术的优劣比较