虚拟化与网络存储技术
上QQ阅读APP看书,第一时间看更新

1.1 虚拟化技术分类

虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个旨在简化管理、优化资源的解决方案。

如图1-1所示,我们可以将一般的计算模型抽象成一定的物理资源和运行于其之上的计算元件,它们之间通过定义的物理资源接口进行交互。随着计算机硬件技术的发展,物理资源的容量越来越大,价格越来越低。在现有的计算资源基础之上,物理资源已经产生了很大的闲置与浪费。为了充分利用新的物理资源,提高效率,一个比较直接的办法就是更新计算元件以利用更加丰富的物理资源。但是,人们往往出于对稳定性和兼容性的追求,并不情愿频繁地对已经存在的计算元件做大幅度变更。虚拟化技术则另辟蹊径,通过引入一个新的虚拟化层,对下管理真实的物理资源,对上提供虚拟的系统资源,从而实现了在扩大硬件容量的同时,简化软件的重新配置过程。

图1-1 虚拟化逻辑元

为了表述虚拟化的一般概念,图1-1使用了资源一词。在实际的应用中,资源可以表现为各种各样的形式。如果把操作系统及其提供的系统调用作为资源,那么虚拟化就表现为操作系统虚拟化。Linux容器虚拟化技术就是在同样的一个Linux操作系统之上,虚拟出多个同样的操作系统。如果将整个X86平台包括处理器、内存和外设作为资源,那么对应的虚拟化技术就是平台虚拟化,在同一个X86平台上面,可以虚拟出多个X86平台,每个虚拟平台都可以运行自己独立完整的操作系统。

虚拟化从本质上讲是指从逻辑角度而不是物理角度来对资源进行配置,它是一种从单一的逻辑角度来看待不同的物理资源的方法。作为一种从逻辑角度出发的资源配置技术,虚拟化是物理实际的逻辑抽象。

对于用户,虚拟化技术实现了软件跟硬件分离,用户不需要考虑后台的具体硬件实现,只需要在虚拟层环境上运行自己的系统和软件。而这些系统和软件在运行时,也似乎跟后台的物理平台无关。下面我们简单介绍一下几种常见的虚拟化技术。

1.1.1 CPU虚拟化

虚拟化在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。简单来说,CPU的虚拟化技术就是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下通过虚拟机监视器(Virtual Machine Monitor, VMM)来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。(注意,大多数处理器和内存访问独立于VMM,只在发生特定事件时才会涉及VMM,如页面错误。)在纯软件虚拟化解决方案中,VMM在软件套件中的位置是传统意义上操作系统所处的位置(如处理器、内存、存储、显卡和网卡等的接口)模拟硬件环境。这种转换必然会增加系统的复杂性。

CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM相比软件的虚拟实现方式能很大程度上提高性能。虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无须进行二进制转换,减少了相关的性能开销,极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。另外,目前在纯软件VMM中缺少对64位客户操作系统的支持,而随着64位处理器的不断普及,这一严重缺点也日益突出。而CPU的虚拟化技术除支持广泛的传统操作系统之外,还支持64位客户操作系统。

虚拟化技术是一套解决方案。完整的情况需要CPU、主板芯片组、BIOS和软件的支持,如VMM软件或者某些操作系统本身。即使只有CPU支持虚拟化技术,在配合VMM的软件情况下,也会比完全不支持虚拟化技术的系统有更好的性能。

CPU虚拟化的典型就是Intel的VT-x虚拟化,VT-x是Intel的CPU硬件虚拟化技术,但是在操作系统内部查看CPU的Flag时,是否支持硬件虚拟化的判断标准是是否有VMX, VMX是什么,下面简单介绍Intel的CPU虚拟化几个基本概念。

1.VMM

虚拟机监视器在宿主机上表现为一个提供虚拟机CPU、内存以及一系列硬件虚拟的实体。这个实体在KVM体系中就是一个进程,如Qemu-KVM。VMM负责管理虚拟机的资源,并拥有所有虚拟机资源的控制权,包括切换虚拟机的CPU上下文等。

2.Guest

Guest可能是一个操作系统(OS),也可能就是一个二进制程序。对于VMM来说,它就是一堆指令集,只需要知道入口(RIP寄存器值)就可以加载。

Guest运行需要虚拟CPU,当Guest代码运行的时候,处于VMX Non-Root模式。此模式下,该用什么指令还是用什么指令,该用什么寄存器还用什么寄存器,该用Cache还是用Cache,但是在执行到特殊指令的时候,CPU控制权即被交给VMM,由VMM来处理特殊指令,完成硬件操作。

3.CPU运行级别

CPU支持Ring0~Ring3四个等级,但是Linux只使用了其中的两个——Ring0和Ring3。当CPU寄存器标示当前CPU处于Ring0级别的时候,表示此时CPU正在运行的是内核的代码。而当CPU处于Ring3级别的时候,表示此时CPU正在运行的是用户级别的代码。当发生系统调用或者进程切换的时候,CPU会从Ring3级别转到Ring0级别。Ring3级别是不允许执行硬件操作的,所有硬件操作都需要内核提供的系统调用来完成。

4.VMX

为了从CPU层面支持VT技术,Intel在Ring0~Ring3的基础上,扩展了传统的X86处理器架构,引入了VMX模式,VMX分为Root和Non-Root。VMM运行在VMX Root模式;Guest运行在VMX Non-Root模式。

Intel VT-x的架构图如图1-2所示。

图1-2 Intel VT-x架构图

1.1.2 服务器虚拟化

服务器虚拟化能够通过区分资源的优先次序,并随时随地将服务器资源分配给最需要它们的工作负载来简化管理和提高效率,从而减少为单个工作负载峰值而储备的资源。

通过服务器虚拟化技术,用户可以动态启用虚拟服务器(又叫虚拟机),每个服务器实际上可以让操作系统(以及在上面运行的任何应用程序)误以为虚拟机就是实际硬件。运行多个虚拟机还可以充分发挥物理服务器的计算潜能,迅速应对数据中心不断变化的需求。

目前,常用的服务器主要分为UNIX服务器和X86服务器。对UNIX服务器而言,IBM、HP、Sun各有自己的技术标准,没有统一的虚拟化技术。因此,目前UNIX服务器的虚拟化还受具体产品平台的制约,不过其通常会用到硬件分区技术。而X86服务器的虚拟化标准相对开放。下面介绍X86服务器的虚拟化技术。

1.全虚拟化

使用Hypervisor在VM和底层硬件之间建立一个抽象层,Hypervisor捕获CPU指令,为指令访问硬件控制器和外设充当中介,也为虚拟机的配置提供了最大程度的灵活性。这种虚拟化技术几乎能让任何一款操作系统不加改动就安装在VM上,而操作系统却不知道自己运行在虚拟化环境下,这也是全虚拟化(Full Virtualization)无可比拟的优势。全虚拟化的主要缺点是Hypervisor会带来处理开销。其架构如图1-3所示。

图1-3 全虚拟化技术

2.准虚拟化

全虚拟化是处理器密集型技术,因为它要求Hypervisor管理各个虚拟服务器,并让它们彼此独立,这样会带来没必要的服务器性能浪费。解决这种问题的一种方法就是,改动客户操作系统,使它以为自己运行在虚拟环境下,从而能够与虚拟机、监控机协同工作。这种方法就叫准虚拟化(Para-Virtualization),也叫半虚拟化。本质上,准虚拟化弱化了对虚拟机特殊指令的被动截获要求,将其转化成客户机操作系统的主动通知。但是,准虚拟化需要修改客户机操作系统的源代码来实现主动通知。

Xen是开源准虚拟化技术的一个例子。操作系统作为虚拟服务器在Xen Hypervisor上运行之前,必须在内核层面进行某些改变。因此,Xen适用于BSD、Linux、Solaris及其他开源操作系统,但是不适用像Windows这些专有操作系统的虚拟化处理,因为它们不是公开源代码,所以无法修改其内核。其架构如图1-4所示。

图1-4 准/半虚拟化技术架构

3.操作系统层虚拟化

实现虚拟化还有一个方法,就是在操作系统层面增添虚拟服务器功能。就操作系统层的虚拟化而言,没有独立的Hypervisor层。相反,主机操作系统本身就负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器彼此独立。一个明显的区别是,如果使用操作系统层虚拟化,所有虚拟服务器必须运行同一操作系统。

虽然操作系统层虚拟化的灵活性比较差,但本机速度性能比较高。此外,由于架构在所有虚拟服务器上使用单一、标准的操作系统,因此管理起来比异构环境要容易。操作系统层虚拟化的典型应用便是Docker,关于Docker技术在本书第8章会有详细的介绍。

1.1.3 存储虚拟化

随着信息业务的不断运行和发展,存储系统网络平台已经成为一个核心平台,大量高价值数据积淀下来。基于对这些数据的应用,人们对平台的要求也越来越高,不光是对于存储容量,还包括对于数据访问性能、数据传输性能、数据管理能力、存储扩展能力等多个方面的要求。可以说,存储网络平台综合性能的优劣,将直接影响整个系统的正常运行。基于这一原因,虚拟化技术又一子领域——虚拟存储技术,应运而生。

其实虚拟化技术并不是一项很新的技术。它的发展应该说是随着计算机技术的发展而发展起来的,其最早始于20世纪70年代。由于当时的存储容量,特别是内存容量成本非常高,容量也很小,大型应用程序或多程序应用就受到了很大的限制。为了突破这样的限制,人们采用了虚拟存储的技术,最典型的应用就是虚拟内存技术。

随着计算机技术以及相关信息处理技术的不断发展,人们对存储的需求越来越大。这样的需求刺激了各种新技术的出现,结果是硬盘性能越来越高、容量越来越大。但是在大量的大中型信息处理系统中,单个硬盘是不能满足需要的,在这样的情况下,存储虚拟化技术就发展起来了。在这个发展过程中也有几个阶段,出现了几种应用。首先是硬盘条带集(RAID,可带容错)技术,其将多个物理硬盘通过一定的逻辑关系集合起来,成为一个大容量的虚拟硬盘。而随着数据量不断增加和对数据可用性要求的不断提高,又一种新的存储技术应运而生,那就是存储区域网络(SAN)技术。

SAN的广域化旨在使存储设备实现成为一种公用设施,任何人员、任何主机都可以随时随地获取各自想要的数据。目前讨论比较多的包括ISCSI、FC OVER IP等技术,虽然一些相关的标准还没有最终确定,但是存储设备公用化、存储网络广域化是一个不可逆转的潮流。存储虚拟化架构如图1-5所示。

图1-5 存储虚拟化架构

所谓虚拟存储,就是把多个存储介质模块(如硬盘、RAID)通过一定的手段集中管理起来,所有的存储模块在一个存储池(Storage Pool)中得到统一管理,从主机和工作站的角度,看到的不是多个硬盘,而是一个分区或者卷,就好像是一个超大容量(如1Tb以上)的硬盘。这是一种可以将多种、多个存储设备统一管理起来,为使用者提供大容量、高数据传输性能的存储系统。

虚拟存储设备需要通过大规模的RAID子系统和多个I/O通道连接到服务器上,智能控制器提供LUN访问控制、缓存和其他管理功能如数据复制等。这种方式的优点在于存储设备管理员对设备有完全的控制权,而且通过与服务器系统分开,可以将对存储的管理与多种服务器操作系统隔离,并且可以很容易地调整硬件参数。

从虚拟化存储来讲,拓扑结构主要有两种方式:即对称式(带内管理)与非对称式(带外管理)。对称式虚拟存储技术是指虚拟存储控制设备与存储软件系统、交换设备集成为一个整体,内嵌在网络数据传输路径中;非对称式虚拟存储技术是指虚拟存储控制设备独立于数据传输路径之外。

1.1.4 网络虚拟化

网络虚拟化是目前业界关于虚拟化细分领域界定最不明确、存在争议较多的一个概念。微软眼中的“网络虚拟化”,是指虚拟专用网络(VPN)。VPN对网络连接的概念进行了抽象,允许远程用户访问组织的内部网络,就像物理上连接到该网络一样。网络虚拟化有助于保护IT环境,防止来自Internet的威胁,同时使用户能够快速安全地访问应用程序和数据。

但是网络巨头思科(Cisco)不那么认为。出身、成名且目前称霸于网络的思科公司,在对IT未来的考虑上以网络为核心。它认为在理论上,网络虚拟化能将任何基于服务的传统客户端/服务器安置到“网络上”。这意味着可以让路由器和交换机执行更多的服务,使思科在业界的重要性和营业额都大幅增加。思科认为网络虚拟化由三个部分组成:访问控制、路径提取以及服务优势。从思科的产品规划图上看,该公司的路由器和交换机将拥有诸如安全、存储、VOIP、移动和应用等功能。对思科而言,它们的战略是通过扩大网络基础设备的销售来持续产生盈利。而对用户来讲,这能帮助他们提高网络设备的价值,并调整原有的网络基础设备。

作为网络阵营的另一巨头,3COM公司在网络虚拟化方面的动作比思科更大。3COM的路由器中可以插入一张工作卡。该卡上带有一套全功能的Linux服务器,可以和路由器中枢相连。在这个Linux服务器中,用户可以安装诸如Sniffer、VOIP等软件及安全应用等。此外,该公司还计划未来在Linux卡上运行VMware,以支持用户运行Windows Server。3COM的这个开源网络虚拟化活动名为3COM ON(又名开放式网络)。

网络虚拟化从总体来说,分为纵向分割和横向整合两大类。

1.纵向分割

早期的“网络虚拟化”是指虚拟专用网络(VPN)。VPN对网络连接的概念进行了抽象,允许远程用户访问组织的内部网络,就像物理上连接到该网络一样。网络虚拟化有助于保护IT环境,防止来自Internet的威胁,同时使用户能够快速安全地访问应用程序和数据。

随后的网络虚拟化技术随着数据中心业务要求发展为:多种应用承载在一张物理网络上,通过网络虚拟化分割(称为纵向分割)功能使得不同企业机构相互隔离,但可在同一网络上访问自身应用,从而实现将物理网络进行逻辑纵向分割,虚拟化为多个网络。

如果把一个企业网络分隔成多个不同的子网络——它们使用不同的规则和控制,用户就可以充分利用基础网络的虚拟化功能,而不是部署多套网络来实现这种隔离机制。

网络虚拟化并不是什么新概念,因为多年来,虚拟局域网(VLAN)技术作为基本隔离技术已经得到广泛应用。当前在交换网络上通过VLAN来区分不同业务网段、配合防火墙等安全产品划分安全区域,是数据中心基本设计内容之一。

2.横向整合

从另外一个角度来看,多个网络结点承载上层应用,基于冗余的网络设计带来复杂性,而将多个网络结点进行整合(称为横向整合),虚拟化成一台逻辑设备,在提升数据中心网络可用性、结点性能的同时将极大地简化网络架构。

使用网络虚拟化技术,用户可以将多台设备连接,“横向整合”起来组成一个“联合设备”,并将这些设备看作单一设备进行管理和使用。虚拟化整合后的设备组成了一个逻辑单元,在网络中表现为一个网元结点,管理简单化、配置简单化、可跨设备链路聚合,极大地简化网络架构,同时进一步增强冗余可靠性。

1.1.5 应用虚拟化

应用虚拟化通常包括两层含义:一是应用软件的虚拟化;二是桌面的虚拟化。所谓的应用软件虚拟化,就是将应用软件从操作系统中分离出来,通过自己压缩后的可执行文件来运行,而不需要任何设备驱动程序或者与用户的文件系统相连。借助于这种技术,用户可以减小应用软件的安全隐患并降低维护成本,并可以进行合理的数据备份与恢复。

桌面虚拟化就是专注于桌面应用及其运行环境的模拟与分发,是对现有桌面管理自动化体系的完善和补充。当今的桌面环境将桌面组件(硬件、操作系统、应用程序、用户配置文件和数据)联系在一起,给支持和维护带来了很大困难。采用桌面虚拟化技术之后,将不需要在每个用户的桌面上部署和管理多个软件客户端系统,所有应用客户端系统都将一次性地部署在数据中心的一台专用服务器上,这台服务器就放在应用服务器的前面。客户端也将不需要通过网络向每个用户发送实际的数据,只有虚拟的客户端界面(屏幕图像更新、按键、鼠标移动等)被实际传送并显示在用户的计算机上。这个过程对最终用户是一目了然的,最终用户的感觉好像是实际的客户端软件正在他的计算机桌面上运行一样,如图1-6所示。

图1-6 应用虚拟化

桌面虚拟化带来的成本效益也是相当诱人的。通过将IT系统的管理集中起来,企业能够同时获得各种不同的效益,从带宽成本节约到IT效率和员工生产力提高,以及当前系统的使用寿命延长等。

在以上的虚拟化技术中,服务器虚拟化技术、应用虚拟化中的桌面虚拟化技术相对成熟,也是使用得较多的技术,而其他虚拟化技术,还需要在实践中进一步检验和完善。