第1章 虚拟化概述
在信息技术(Information Technology,IT)领域中,虚拟化是一个运用十分广泛的概念,从计算机虚拟化到存储虚拟化,再到网络虚拟化,虚拟化的思想影响着IT技术的方方面面。在开始了解网络虚拟化技术之前,首先需要对虚拟化的概念有个基本的认识,本章将为读者简要介绍虚拟化技术的内涵,以及虚拟化技术的应用。
1.1 虚拟化的内涵
1.1.1 基本内涵
1959年 6 月 15 日,虚拟化的概念由牛津大学的克里斯托弗 斯特雷奇(Christopher Strachey)教授在国际信息处理大会(International Conference on Information Processing)上发表的《大型高速计算机中的时间共享》(Time sharing in large fast computers)论文中首次提出,该论文重点讨论了如何将时分(time sharing)的概念应用在大型高速计算机中,旨在实现对大型计算机的多用户时分共享,提高计算资源的使用效率,这是关于虚拟化*早的论述。服务器虚拟化技术由此迅速发展起来,虚拟化思想在计算领域中的成功促使其陆续扩展到存储、网络领域。虚拟化技术在IT各个基础领域逐渐成熟,促使以虚拟化为核心支撑技术的新型商业模式云计算于21世纪初诞生,引领了互联网产业的新浪潮。虚拟化技术同时也是未来网络技术的核心基因之一,第五代(简称5G)移动互联网的网络切片技术是虚拟化思想的一个典型运用。
虚拟化是一个抽象的概念,运用到不同领域的虚拟化技术的具体表现形式各不相同,但其内涵是一致的。虚拟化本质上是一种资源管理的思想,首先需要明确虚拟化的“虚拟”对象是实际的物理资源,这里的物理资源包含IT领域常见的如CPU、硬盘、频谱带宽等资源,可分为计算、存储和网络三类。虚拟化技术根据资源类型的不同可对应分为计算机虚拟化、存储虚拟化与网络虚拟化。“虚拟”的实质是通过一定的方法对物理资源进行灵活的统一管理,突破在资源使用上如设备结构或地理位置带来的客观限制,将实际在封装上或地理位置上分散的资源抽象整合成一个可供灵活调度的资源池,为用户提供一个虚拟的资源视图,这里的“虚拟”是指用户分配到的逻辑资源与物理资源在实体上不一定是一对一的对应关系,可能是多份物理资源聚合成一份逻辑资源(“多虚一”),也可能是一份物理资源切分出多份逻辑资源(“一虚多”)[1]。通过虚拟化技术,用户无须关心分配到的逻辑资源的具体实现细节,从用户的视角来看,逻辑资源的使用效能与物理资源等效。虚拟化思想使资源的管理灵活多变,实现多用户高效地复用真实物理设备,极大地提高了底层物理资源的利用率。针对IT领域中用户对资源按需分配的需求,虚拟化技术是关键的支撑技术。
我们进一步给出对虚拟化技术基本内涵的总结性描述:虚拟化技术本质上是一种资源管理技术,其表现形式是通过对物理资源进行抽象与整合,形成可在多用户之间进行细粒度分配的资源池(资源的池化),以达到多用户可根据需求获取逻辑资源且感受不到其他用户存在的效果,*终实现物理资源的高效利用与管理。其中,资源共享与复用和用户之间的隔离是虚拟化技术中*为核心的两个特征。
(1)资源共享与复用。多用户之间的资源共享与复用是虚拟化技术的核心特征,旨在降低物理资源的使用成本,提高物理资源的利用率。不同类型的物理资源对应着不同的复用共享技术,如频谱资源的时分复用和频分复用,各类虚拟化技术采用复用机制,让多个用户能够共享物理资源。
(2)用户之间的隔离。保障多用户之间的隔离是虚拟化技术的内在要求,不同用户感受不到彼此的存在,每个用户所分配的资源从逻辑上可以等效为一个独立的实体,用户无须关心内部的实现细节,隔离性同时要求用户内部发生的事件不会影响到其他用户的运行性能。
1.1.2 基本实现原理
虚拟化技术通过对物理资源的抽象与整合为用户提供等效的虚拟资源,根据对物理资源的抽象方式,可归纳出分割式、聚合式、迁移式、覆盖式四种基本的实现原理[2],应用于不同领域的虚拟化技术设计通常根据实际情况采用其中一种原理或多种原理的组合。
1)分割式
分割式原理是指将物理资源拆分成多个逻辑资源,也被称为“一虚多”,通常应用于虚拟化单个容量较大的物理资源,如大型服务器。这里的分割包含多种维度,可以是物理维度上的拆分,如虚拟局域网技术通过拆分端口实现多个隔离的虚拟子网,也可以是时间维度上的拆分,如CPU、频谱的时分复用技术。分割式的虚拟化原理能有效地提高资源利用率。
2)聚合式
聚合式原理是指将多个独立的物理资源整合成一个逻辑资源,也被称为“多虚一”,通常应用于对资源的需求量大于单个设备容量的场景,如为满足某些大型的计算需求,会将多台服务器聚合成一台逻辑的服务器进行作业。
3)迁移式
迁移式原理是指通过网络将一台逻辑设备中的闲置资源动态地迁移到另一台逻辑设备中,如虚拟机迁移技术,打破了资源使用在地理位置上的限制,实现更加灵活的资源整合。
4)覆盖式
覆盖式(Overlay)原理主要应用于网络虚拟化中,利用了网络架构在协议设计上的分层特点,通过对数据包进行封装,实现在现有物理网络之上传递不同协议的数据包,构建一张基于底层网络的逻辑网络,打破了数据包传输在协议上的限制。
以上四种基本实现原理都是为了实现资源的灵活使用,但侧重点各不相同,总的来说,分割式和聚合式原理主要打破资源使用由封装所带来的容量限制,迁移式是为了打破资源使用在地理位置上的限制,覆盖式则是打破了网络使用在协议配置上的限制。
1.1.3 虚拟化的主要优点
在过去的五六十年中,虚拟化技术由于其突出的优点,获得学术界和产业界的大量关注,获得不断的发展,当前已经在IT领域获得广泛应用,其主要优势可归纳为以下四点。
(1)提高资源利用的效率:虚拟化技术通过对物理资源的池化使得资源分配粒度更细,能极大地提高资源利用率,一台物理设备可以虚拟出多个等效的逻辑设备,并行地分配给多个任务或用户,企业也可以通过虚拟化技术将闲置的资源对外出租。
(2)降低资源使用的成本:虚拟化技术打破了物理资源在封装单元上的边界,多用户共享物理资源实现了成本的分摊,有效地降低了资源的部署成本。
(3)保障资源接入的安全:虚拟化技术的基本要求是保障虚拟服务的隔离性,用户使用虚拟服务不会受到其他用户的影响,有较好的安全性。
(4)实现资源管理的灵活:虚拟化技术可以根据不断变化的需求,在任务或用户之间灵活地调度资源,可以实现用户对资源的“按需分配”。
1.2 虚拟化的应用
如1.1节所述,虚拟化技术起源于计算机虚拟化,并逐渐发展到存储虚拟化与网络虚拟化,并在21世纪初,以计算/存储/网络虚拟化技术为核心支撑技术的云计算引领了互联网产业的新浪潮,本节将分别从计算机虚拟化、存储虚拟化、网络虚拟化以及虚拟化与云计算四个方面介绍虚拟化的发展与应用。
1.2.1 计算机虚拟化
计算机虚拟化的发展阶段按时间顺序可大致分为大中型计算机虚拟化,基于x86的计算机虚拟化以及基于容器的虚拟化,下面将从这三个阶段介绍计算机虚拟化的发展过程。
(1)大中型计算机虚拟化:IBM公司于20世纪60年代中期开启了M44/44X项目,开始在大型计算机中研究虚拟化的实现,并在60年代末推出了第一个完全实现虚拟化的计算机系统CP-40,重点实现了计算资源的时分共享,同时实现了不同组的用户时分共享同一台大型机的计算资源,显著降低了计算资源的使用成本,使得无法实际拥有大中型计算机的组织与个人也能使用大中型计算机。
(2)基于x86的计算机虚拟化:在20世纪60~70年代末,虚拟化技术仅局限于大中型计算机。英特尔在1978年推出了第一款基于x86架构的微处理器8086,开启了属于x86架构的时代,微机技术逐渐成熟,产业界开始尝试在微机上实现虚拟化,将分别介绍VMware、XEN、KVM三个知名的虚拟化软件。
①VMware:著名的虚拟化解决方案厂商VMware于1998年成立,并发布了第一个基于x86架构的虚拟化产品,成功通过运行在Windows NT上的VMware软件启动了Windows 95。VMware紧接着在随后的一年正式发布了第一代产品Workstation 1.0,支持用户在一台个人计算机上以虚拟机的形式运行多个操作系统,虚拟化技术开始从大中型机进入每一个人的生活。VMware的Workstation一经推出便获得广大用户的喜爱,取得了巨大的成功,VMware陆续推出了基于hypervisor的EXS系列,以及应用于云计算的vSphere等成功产品,是虚拟化产业界*具影响力的公司之一。VMware的成功激励了更多的学者与厂商进入虚拟化领域。
②XEN:2003年,剑桥大学开发了一个名为XEN的开源虚拟化项目,并成立了XenSource公司。XEN能够基于Linux系统在一套物理硬件上安全地执行多个虚拟机,其性能稳定、占用资源少、开源等优秀特性获得IBM、AMD、HP、Novell等广大软硬件厂商的青睐,被广泛用于搭建高性能的虚拟化平台,XenSource公司于2007年被Citrix收购。
③KVM:另一大常用的开源虚拟化技术KVM(Kernel-based Virtual Machine)于2006年被一家以色列的公司Qumranet推出。相对于XEN技术,KVM是一个基于Linux内核的虚拟化技术,其与Linux内核的兼容性能获得更高的灵活性和可管理性,红帽(Red Hat)公司看中KVM这一显著优点,于2008年收购了Qumranet,并在其后续的Linux产品中放弃了XEN技术,大力推广KVM技术。到目前为止,XEN和KVM是Linux系统下*常用的两种虚拟化技术。IT界巨头微软公司(Microsoft)于2004年开始进军虚拟化产业,发布了Virtual Server 2005计划,这标志着虚拟化开始向主流市场转变。
计算机虚拟化的主要目标是通过软件的形式来实现虚拟化,相当于硬件资源与上层应用的中间代理,负责管理、调度底层资源,为上层虚拟机提供分配隔离的逻辑资源,这样的软件被称为虚拟化管理程序(Hypervisor)或虚拟机监视器(Virtual Machine Monitor,VMM)。根据虚拟化软件所在位置的不同可将计算机虚拟化分为以下三种基本实现形式。
(1)基于裸机的虚拟化(Bare Metal)。基于裸机的虚拟化是指直接在宿主机的硬件上安装虚拟化管理程序,也称硬件虚拟化或完全虚拟化,Hypervisor可以直接调度与管理底层的硬件资源,运行效率高。典型的虚拟化产品有VMware公司的“VMware ESXi”以及微软的“Hyper-V”。
(2)基于主机的虚拟化(Hosted)。基于主机的虚拟化是指在操作系统上按照虚拟化管理程序,需要通过主机操作系统来调度硬件资源,依赖于操作系统对设备的支持,以一定的运行效率为代价,换取了相对于Bare-metal形式的高灵活度。典型的虚拟化产品有VMware公司的“VMware Workstation”,以及微软的“Virtual PC”。
(3)基于容器的虚拟化(Container)。基于容器的虚拟化是一种轻量的应用级虚拟化技术,通过虚拟操作系统本身来实现虚拟化,也称操作系统级别(OS-Level)的虚拟化。操作系统提供一组用户空间彼此隔离,应用被限制在每个用户空间里,好像一个独立的主机。其典型的虚拟化应用有OpenVZ、FreeVPS等。
1.2.2 存储虚拟化
计算机虚拟化的成功促使人们开始在其他领域实践虚拟化,IBM公司于1978年提出独立磁盘冗余阵列(Redu
展开