一、虚拟化技术的发展

虚拟化技术和并行计算、分布式计算、网格计算等的发展促进了云计算技术的产生和发展,通过云计算技术,我们将大量的计算机资源组成资源池来创建高度虚拟化的资源提供给用户,即云计算技术解决方案依靠并利用虚拟化提供服务。

虚拟化技术主要应用在基础设施即服务的服务模式(IaaS)中,大多资源都可以通过虚拟化技术对其进行统一管理。

虚拟化在计算机领域的发展至今已有50多年了,在这期间产生了很多种虚拟化形式,如网络虚拟化、微处理器虚拟化、桌面虚拟化等。

这些虚拟化技术的产生、成熟离不开计算机技术的发展。

虚拟化从概念上来说就是将在实际环境运行的程序、组件,放在虚拟的环境中来运行,从而达到以小的成本来实现与真实环境相同或类似的功能的目的。

1.广义上的虚拟化技术

从广义来说,虚拟化技术的范围非常宽,它不但是云计算的核心技术,也是计算机科学的核心技术,甚至是整个工业领域的核心技术。

工业领域,机械的虚拟化技术:

如开汽车,汽车机械运动的复杂形态,被逻辑上简化为方向盘、油门、刹车、离合器的简单运动方式。这种简化使汽车机械系统的复杂性被全面屏蔽,转向盘、油门、制动器、离合器成为了最终的人机交互设备。

金融领域

如复杂的股市变化规律被几个简单的指数所描述,指数的变化反映了股票市场的运行情况,甚至整个经济的运行规律。

物理学

广泛地应用了虚拟化技术,原子核内部的复杂运动情况通过各种宏观的物理设备,如拉曼谱、正电子谱、核磁共振等表现出来,其实我们谁也没有真正地看到过原子核的形态,但我们能通过对这些物理量的分析而得到原子核的结构,这些物理设备就实现了对原子核内部结构的虚拟化工作。

虚拟化技术是一门应用很广泛的技术,甚至可以说是一门相当基础的学科。广义地定义虚拟化技术可以这么来看:虚拟化技术就是一种逻辑简化技术,实现物理层向逻辑层的变化。从这个定义来看,一个系统采用虚拟化技术后,其对外表现出的运动方式是一种逻辑化的运动方式,而不是真实的物理运动方式。所以采用虚拟化技术能实现对物理层运动复杂性的屏蔽,使系统对外运行状态呈现出简单的逻辑运行状态。

2.计算机学科中的虚拟化技术

早期的计算机大多用于科学计算,计算机不仅价格昂贵,而且硬件资源的利用率低,用户的体验效果也差强人意,从而有了分时系统的提出。

为满足分时系统的需求,克里斯托弗(Christopher Strachey)提出了虚拟化的概念。在1959年召开的国际信息处理大会上,其发表了一篇名为《 大型高速计算机中的时间共享 》   (Time Sharing in Large Fast Computers)的学术报告,在这篇文章中他提出了虚拟化的基本概念。虚拟化作为一个概念被正式提出就是从此时开始的。

在随后的10年中,由于当时工业、科技条件的限制,计算机的硬件资源是相当昂贵的,IBM在1956年推出的首部磁盘储存器件,总容量仅5MB,但是平均每MB需花费1万美元。这远远超出了普通大众的承受范围,严重阻碍了人们对计算机的购买力。

为了使昂贵的硬件资源得到充分利用,来提高自己的销售额,IBM最早发明了一种操作系统虚拟机技术,能够让用户在一台主机上运行多个操作系统,IBM 7044计算机就是典型的代表。

随后虚拟化技术一直只在大型机上应用,而在PC、服务器的x86平台上仍然进展缓慢。

随着科技水平的提高,计算机硬件资源的价格逐渐降低,从20世纪90年代末开始,x86计算机由于其成本低廉渐渐代替大型机,为了抢占市场的份额,VMware就在考虑如何节省客户的开支,来提高自己产品的竞争力。这时就有了虚拟化技术的再次发展。以VMware为代表的虚拟化软件产商率先实施了以虚拟机监视器为中心的软件解决方案,为虚拟化技术在x86计算机环境的发展开辟了道路。

最近的十几年间,诸多厂商(如微软、Intel公司、AMD公司等)都开始进行虚拟化技术的研究。

为了与VMware展开直接的竞争,微软开发了Hyper-V技术。微软凭借其强大的技术支持,成为VMware竞争小企业市场的主要对手。 同时,虚拟化技术的飞速发展也引起了芯片厂商的重视,Intel公司和AMD公司在2006年以后都逐步在其x86处理器中增加了硬件虚拟化功能。

2008年以后,云计算技术的发展推动了虚拟化技术成为研究热点,由于虚拟化技术能够屏蔽底层的硬件环境,充分利用计算机的软硬件资源,是云计算技术的重要目标之一,虚拟化技术成为切分型云计算技术的核心技术。虚拟化对云计算技术的发展产生重大意义的是基于x86架构的服务器虚拟化技术。

二、虚拟化的描述

现代计算机系统被分为多个自下而上的层次。从下到上依次是裸机(底层硬件)、操作系统,操作系统提供应用程序编程接口及运行在操作系统之上的各种各样的应用程序。

虚拟化技术可以在这些不同层次之间建立虚拟化层,向上提供与真实层次相同或相近的功能,向下只需知道下层的抽象接口,不需要知道下层的具体实现。

虚拟化层的引入,必然给系统带来一定的性能损耗,构建、维护虚拟化层也会增加一定的费用。

虚拟化涉及的领域比较多,虚拟化的技术在不断发展,虚拟化的定义也在不断发展中。

维基百科中虚拟化的描述:

      “在计算机技术中,虚拟化(Virtualization)是将计算机物理资源如服务器、网络、内存及存储等予以抽象、转换后呈现出来,使用户可以以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式、地域或物理组态所限制的”。

我们可以从虚拟化的对象、过程及其要达到的结果方面来对虚拟化进行如下描述:

  • 对象:计算机的各种资源,这些资源包括基础设施、系统和软件。
  • 过程:将各种资源进行抽象、转换。
  • 结果:为这些资源提供标准的接口来接收输入和提供输出,使用户能以更好的方式来应用这些资源。

三、虚拟化技术的优势和劣势

1.虚拟化技术的优势

(1)虚拟化技术可以提高资源利用率。

     传统的IT企业为每一项业务分配一台单独的服务器,服务器的实际处理能力往往远超服务器的平均负载,使得服务器大部分时间都处于空闲状态,造成资源的浪费;

    而虚拟化技术可以减少必须进行管理的物理资源的数量,隐藏了物理资源的部分复杂性。为了达到资源的最大利用率,虚拟化还把一组硬件资源虚拟化为多组硬件资源,并动态地调整空闲资源,减小服务器的规模。

例如,VMware的用户在使用VMware的虚拟基础架构解决方案之后服务器的利用率通常可由原先的5%~15%提升到60%~80%。

(2)提供相互隔离、高效的应用执行环境。

虚拟化技术能够实现较简单的共享机制无法实现的隔离和划分,从而对数据和服务进行可控和安全的访问。

例如,用户可以在一台计算机上模拟多个不同、相互之间独立的操作系统,这些虚拟的操作系统可以是Windows或Linux系统。其中的一个或多个子系统遭受攻击而崩溃时,不会对其他系统造成影响。在使用备份机制后,受到攻击的子系统可以快速恢复。

(3)虚拟化可以简化资源和资源的管理

计算机有硬盘、磁盘等硬件资源和Web服务等软件资源。用户对计算机资源进行访问是通过标准接口来进行的。

使用标准接口的好处是用户不用知道虚拟资源的具体实现。底层的基础设施发生变化时,只要标准接口没有发生变化,用户基本上感受不到这种变化。这是因为,与用户直接接触的是标准接口,虽然底层的具体实现发生改变,但是用户与虚拟资源进行交互的方式并没有改变。

传统的IT服务器资源是硬件相对独立的个体,对每一种资源都要进行相应的维护和升级,会耗费大量的人力、物力。

而虚拟化系统降低了用户与虚拟资源之间的耦合度,利用这种松耦合的关系,管理者可以在对用户影响最小的基础上对资源进行管理。

此外,虚拟化系统还将资源进行整合,在管理上相对而言比较方便,在升级时也只需添加动作,从而提高工作效率。

(4)虚拟化技术实现软件和硬件的分离

用户在同一个计算机系统上可以运行多个软件系统,不同的软件系统通过虚拟机监视器(VMM, Virtual Machine Monitor)来使用底层的硬件资源,从而实现多个软件系统共享同一个硬件资源,达到软件和硬件的分离。这样,在虚拟化的统一的资源池能够运行更多的软件系统,充分利用已有的硬件资源。

2.虚拟化技术的劣势   

(1)可能会使物理计算机负载过重

虚拟化技术虽然是在虚拟的环境中运行的,但是其并不是完全虚拟的,依然需要硬件系统的支持。

以服务器虚拟化为例,一台物理计算机上可以虚拟化出多台客户机,每台客户机上又可以安装多个应用程序。若这些应用程序全部运行的话,就会占用大量的物理计算机的内存、CPU等硬件系统,从而给物理计算机带来沉重的负担,可能会导致物理计算机负载过重,使各虚拟机上的应用程序运行缓慢,甚至系统崩溃。

(2)升级和维护引起的安全问题

物理计算机的操作系统及操作系统上的各种应用软件都需要不定时地进行升级更新,以增强其抵抗攻击的能力。每台客户机也都需要进行升级更新。一台物理计算机上安装多台客户机,会导致在客户机上安装补丁速度缓慢。如果客户机上的软件不能及时更新,则很可能会被病毒攻击,带来安全隐患。

(3)物理计算机的影

传统的物理计算机发生不可逆转的损坏时,若不是作为服务器出现,则只有其自身受到影响。当采用虚拟化技术的物理计算机发生宕机时,其所有的虚拟机都会受到影响。在虚拟机上运行的业务也会受到一定程度的影响,甚至是损坏。此外,一台物理计算机的虚拟机往往会有相互通信,在相互通信的过程中,可能会导致安全风险。 

四、虚拟化技术的分类

虚拟化技术从计算体系结构的层次上可分为:

指令集架构级虚拟化、硬件级虚拟化、操作系统级虚拟化、编程语言级虚拟化数据库级虚拟化。

1.指令集架构级虚拟化

指令集架构级虚拟化是通过纯软件方法,模拟出与实际运行的应用程序(或操作系统)所不同的指令集去执行,采用这种方法构造的虚拟机一般称为模拟器(Emulator)。

模拟器是将虚拟平台上的指令翻译成本地指令集,然后在实际的硬件上执行。其特点是简单、具有鲁棒性、可跨平台。当前比较典型的模拟器系统有Bochs、VLIW等。

以Bochs为例,Bochs是用C++编写的模拟x86平台的模拟器。用户可以在任何编译运行Bochs的平台上模拟x86的各种硬件。并且在Bochs的仿真平台上可以安装大多数的操作系统。


2.硬件抽象层虚拟化

硬件抽象层虚拟化是指将虚拟资源映射到物理资源,并在虚拟机的运算中使用实实在在的硬件。即使用软件来虚拟一台标准计算机的硬件配置,如CPU、内存、硬盘、声卡、显卡、光驱等,成为一台虚拟的裸机。

这样做的目的是为客户机操作系统呈现和物理硬件相同或类似的物理抽象层。客户机绝大多数指令在宿主机上直接运行,从而提高了执行效率。但是,给虚拟机分配的硬件资源的同时虚拟软件本身也要占用实际硬件资源的,对性能损耗较大。虽然如此,硬件抽象层虚拟化的优点仍不可忽视。硬件抽象层的虚拟机具有以下优点:

  • 高度的隔离性;
  • 可以支持与宿主机不同的操作系统及应用程序
  • 易于维护及风险低。

比较有名的硬件抽象层虚拟化解决方案有VMWare、Virtual PC、Xen、KVM等。

以Xen为例,Xen是剑桥大学开发的一个基于x86的开源虚拟机监视器,可以在一台物理机上执行多台虚拟机。它特别适用于服务器整合,具有性能高、占用资源少,节约成本等优点。

3.操作系统层虚拟化

操作系统层虚拟化是指通过划分一个宿主操作系统的特定部分,产生一个个隔离的操作执行环境。操作系统层的虚拟化是操作系统内核直接提供的虚拟化,虚拟出的操作系统之间共享底层宿主操作系统内核和底层的硬件资源。

操作系统虚拟化的关键点在于将操作系统与上层应用隔离开,将对操作系统资源的访问进行虚拟化。使得上层应用觉得自己独占操作系统。

操作系统虚拟化的好处是实现了虚拟操作系统与物理操作系统的隔离并且有效避免物理操作系统的重复安装。

比较有名的操作系统虚拟化解决方案有Virtual Server、Zone、Virtuozzo及虚拟专用服务器(Virtual Private Server,VPS)。VPS是利用虚拟服务器软件在一台物理机上创建多个相互隔离的小服务器。这些小服务器本身就有自己的操作系统,其运行和管理与独立主机完全相同。其可以保证用户独享资源,且可以节约成本。


操作系统虚拟化看似与硬件虚拟化出的虚拟机上安装的操作系统一样,都是产生多个操作系统,但操作系统虚拟化与硬件虚拟化之间还是有很多不同之处,区别如下:

(1)操作系统虚拟化是以原系统为模板,虚拟出的是原系统的副本,而硬件虚拟化虚拟的是硬件环境,然后真实地安装系统。

(2)操作系统虚拟化虚拟出的系统只能是物理操作系统的副本,而硬件虚拟化虚拟出的系统可以为不同的系统,如Linux、Windows 等。

(3)虚拟出的系统间关系不同,操作系统虚拟化虚拟的多个系统有较强的联系,比如,多个虚拟系统能够同时被配置。原系统发生了改变,所有虚拟出的系统都会改变。而硬件虚拟化虚拟的多个系统是相互独立的,与原系统也没有联系,原系统的损坏不会殃及虚拟系统。

(4)性能损耗不同,操作系统虚拟化虚拟出的系统都是虚拟的,性能损耗低,而硬件虚拟化是在硬件虚拟层上实实在在安装的操作系统,性能损耗高。

4.编程语言层上的虚拟化

计算机若不安装操作系统和其他软件的话,就是一台裸机。编程语言层上的虚拟机是在应用层上创建的,并支持一种新定义的指令集。这一类虚拟机运行的是针对虚拟体系结构的进程级作业,通常这种虚拟机是作为一个进程在物理计算机系统中运行的,使得用户感觉不到应用程序是在虚拟机上运行的。

这种层次上的虚拟机主要有JVM(Java Virtual Machine)和CLR(Common Language Runtime)。以JVM为例,JVM是通过在物理计算机上仿真模拟计算机的各种功能来实现的,是虚拟出来的计算机。 JVM使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上进行无缝迁移。

5.库函数层的虚拟化

在操作系统中,应用程序的编写会使用由应用级的库函数提供的一组API函数。这些函数隐藏了一些操作系统的相关底层细节,降低了程序员的编程难度。

库函数层的虚拟化就是对操作系统中的应用级库函数的接口进行虚拟化,创造出了不同的虚拟化环境。使得应用程序不需要修改,就可以在不同的操作系统中迁移。

当然不同的操作系统库函数的接口不一样。如属于这类虚拟化的Wine,是利用API转换技术做出Linux与Windows相对应的函数来调用DLL,从而能在Linux系统中运行Windows程序。

五、常见虚拟化软件

VirtualBox

VirtualBox是一款开源免费的虚拟机软件,使用简单、性能优越、功能强大且软件本身并不臃肿,VirtualBox是由德国软件公司InnoTek开发的虚拟化软件,现隶属于Oracle 旗下,并更名为Oracle VirtualBox。

其宿主机的操作系统支持Linux、Mac、Windows三大操作平台,在Oracle VirtualBox虚拟机里面,可安装的虚拟系统包括各个版本的Windows操作系统、Mac OS X(32位和64位都支持)、Linux内核的操作系统、OpenBSD、Solaris、IBM OS2甚至Android 4.0系统等操作系统,在这些虚拟的系统里面安装任何软件,都不会对原来的系统造成任何影响。

它与同类的VMware Workstation虚拟化软件相比,VirtualBox对Mac系统的支持要好很多,运行比较流畅,配置比较傻瓜化,对于新手来说也不需要太多的专业知识,很容易掌握,并且免费这一点就足以比商业化的VMware Workstation更吸引人,因此VirtualBox更适合预算有限的小环境。

VMware Workstation

一款功能强大的商业虚拟化软件,和VirtualBox一样,仍然可以在一个宿主机上安装多个操作系统的虚拟机,宿主机的操作系统可以是Windows或Linux,可以在VMware Workstation中运行的操作系统有DOS、Windows 3.1、Windows 95、Windows 98、Windows 2000、Linux、FreeBSD等。

VMware Workstation虚拟化软件虚拟的各种操作系统仍然是开发、测试 、部署新的应用程序的最佳解决方案。VMware Workstation占的空间比较大,VMware公司同时还提供一个免费、精简的Workstation环境—VMware Player,可在VMware官方网站下载使用。

对于企业的 IT开发人员和系统管理员而言, VMware Workstation在虚拟网络、实时快照、拖曳共享文件夹、支持 PXE 等方面的特点使它成为必不可少的工具。

总体来看,VMware Workstation的优点在于其计算机虚拟能力,物理机隔离效果非常优秀,它的功能非常全面,倾向于计算机专业人员使用,其操作界面也很人性化;VMware Workstation的缺点在于其体积庞大,安装时间耗时较久,并且在运行使用时占用物理机的资源较大。

KVM

KVM(Kernel-based Virtual Machine)是一种针对Linux内核的虚拟化基础架构,它支持具有硬件虚拟化扩展的处理器上的原生虚拟化。

最初,它支持x86处理器,但现在广泛支持各种处理器和操作系统,包括Linux、BSD、Solaris、Windows、Haiku、ReactOS 和AR-OS等。

基于内核的虚拟机 (KVM) 是针对包含虚拟化扩展(Intel VT 或 AMD-V)的 x86 硬件上的Linux的完全原生的虚拟化解决方案。对半虚拟化(Paravirtualization)的有限支持也可以通过半虚拟网络驱动程序的形式用于Linux和Windows Guest系统。

尽管KVM是一个相对较新的虚拟机管理程序,但这个随主流 Linux内核发布的轻量型模块提供简单的实现和对Linux重要任务的持续支持。

KVM使用很灵活,Guest 操作系统与集成到Linux内核中的虚拟机管理程序通信,以直接寻址硬件,无需修改虚拟化的操作系统。这使得KVM 成为更快的虚拟机解决方案。

KVM的补丁与Linux内核兼容,KVM在Linux内核本身内实现,这进而简化对虚拟化进程的控制,但是没有成熟的工具可用于KVM服务器的管理,KVM仍然需要改进虚拟网络的支持、虚拟存储的支持,并且增强安全性、高可用性、容错、电源管理、HPC/实时支持、虚拟 CPU 可伸缩性、跨供应商兼容性、VM 可移植性。


六、系统虚拟化

1.什么是系统虚拟化

系统虚拟化是指在一台物理计算机系统上虚拟出一台或多台虚拟计算机系统。

虚拟计算机系统(简称虚拟机)是指使用虚拟化技术运行在一个隔离环境中的具有完整硬件功能的逻辑计算机系统,包括操作系统和应用程序。一台虚拟机中可以安装多个不同的操作系统,并且这些操作系统之间相互独立。

虚拟机和物理计算机系统可以有不同的指令集架构,这样会使得虚拟机上的每一条指令都要在物理计算机上模拟执行。显而易见,会导致性能低下。所以,我们一般使虚拟机的指令集架构与物理计算机系统相同。这样大部分指令都会在处理器上直接运行,只有那些需要虚拟化的指令才会在虚拟机上运行。

2.系统虚拟化的典型特征

1974年,Popek和Goldberg在发表的文章“Formal Requirements for Virtualizable Third Generation Architectures”中指出虚拟机可以看作是物理机的一种高效隔离的复制,并指出虚拟机有同一性、高效性、受控性的3个典型特征:

同一性是指虚拟机的运行环境和物理机的运行环境在本质上应该是相同,表现形式上可以有所差别;

高效性是指软件在虚拟机上运行时,大部分是在硬件上运行的,只有少数是在虚拟机中运行的,从而在虚拟机中运行的软件的性能接近在物理机上运行的性能;

资源受控是指VMM完全控制和管理系统资源。

3.系统虚拟化的优点

系统虚拟化提供了多个相互隔离的执行环境,虚拟机之间隔离性,虚拟机与底层硬件之间的无关性所带来的好处是很难估量的。此外,虚拟化层作为特权层能够提供一些特有的功能。

(1)硬件无关性

虚拟机与底层硬件之间是虚拟化层,其与底层硬件之间并没有直接的联系。所以只要另一台计算机提供相同的虚拟硬件抽象层,一个虚拟机就可以无缝地进行迁移。

(2)隔离性

使用虚拟机,应用软件可以独立地在虚拟机上运行,不受其他虚拟机的影响。即使其他的虚拟机崩溃,也可以正常运行。这种隔离性的好处是:可以在一台物理机虚拟出的多台虚拟机上进行不同的操作,相互之间没有影响。

(3)多实例

在一台物理机上可以运行多台虚拟机,而一台虚拟机上又可以安装多个操作系统。不同的虚拟机的繁忙、空闲时间又不同,这样虚拟机交错使用物理计算机的硬件资源,资源利用率比较高。

(4)特权功能

系统虚拟化的虚拟化层是在本地硬件与虚拟机之间,其将下层的资源抽象成另一种形式的资源,提供给上层的虚拟机使用。

虚拟化层拥有更高的特权体现在:虚拟化层中添加的功能不需要了解客户机的具体语义,实现起来更加容易,并且添加的功能具有较高的特权级,不能被客户机绕过。



七、服务器虚拟化

系统虚拟化的最大价值在于服务器虚拟化。服务器虚拟化是将系统虚拟化技术应用于服务器上,将一台或多台服务器虚拟化为若干台服务器使用。

现在,数据中心大部分使用的是x86服务器。一个数据中心可能有成千上万台x86服务器。以前,出于性能、安全等方面的考虑,一台服务器只能执行一个服务,导致服务器利用率低下。

服务器虚拟化是在一台物理服务器上虚拟出多个虚拟服务器,每个虚拟服务器执行一项任务。这样的话,服务器的利用率相对较高。

1.服务器虚拟化的分类

服务器虚拟化按虚拟的服务器台数可以分为以下3种类型

(1)将一台服务器虚拟成多台服务器,即将一台物理服务器分割成多个相互独立、互不干扰的虚拟环境;
(2)服务器整合,就是多个独立的物理服务器虚拟为一个逻辑服务器,使多台服务器相互协作,处理同一个业务;
(3)服务器先整合、再切分,就是将多台物理服务器虚拟成一台逻辑服务器,然后再将其划分为多个虚拟环境,即多个业务在多台虚拟服务器上运行。

2.服务器虚拟化所需的技术

物理服务器有其不可缺少的关键部件,如CPU、I/O等。服务器虚拟化的关键技术是对CPU、内存、I/O硬件资源的虚拟。

(1)CPU虚拟化

CPU虚拟化技术是把物理CPU抽象成虚拟CPU,任意时刻一个物理CPU只能运行一个虚拟CPU指令。每个客户操作系统可以使用一个或多个虚拟CPU。在这些客户操作系统之间,虚拟CPU的运行相互隔离,互不影响。

在纯软件的CPU虚拟化中,有全虚拟化和半虚拟化两种不同的软件方案。

全虚拟化是采用二进制动态翻译技术(Dynamic Binary Translation)来解决客户操作系统的特权指令问题。

半虚拟化是通过修改客户操作系统来解决虚拟机执行特权指令的问题,即将所有敏感指令替换为对底层虚拟化平台的超级调用。这两种方案都会增加系统的复杂性和性能开销。

原来的x86 CPU 不能有效地支持虚拟化,那时,CPU虚拟化只能在软件层面上进行。随着硬件技术的发展,硬件的性能有了很大的提高,现在主流的x86 CPU开始在硬件层面上支持CPU虚拟化,从而就有了CPU的硬件辅助虚拟化。

CPU的硬件辅助虚拟化是在CPU中加入新的指令集和处理器运行模式来支持CPU虚拟化,使得系统软件能更加容易、高效地实现虚拟化功能。

CPU的硬件辅助虚拟化主要有Intel VT-x和AMD。

以VT-x为例,VT-x的原理是:首先,其引入了根(VMX root operation)和非根(VMX non-root operation)两种操作模式,这两种模式统称为VMX操作模式。

根操作模式是VMM运行所处的模式,其行为和早期的没有VT-x技术的x86 CPU相同。

非根操作模式是客户机运行时所处的模式,提供了一个支撑虚拟机运行所需的CPU环境。

这两种操作模式都有特权级0~特权级3,共4种特权级。

在VT-x中,从非根操作模式到根操作模式的转换形式称为VM-Exit. 而从根操作模式到非根操作模式的转换形式为VM-Entry。此外,VT-x还引入了保存虚拟CPU相关状态的VMCS来更好地支持CPU虚拟化。

(2)内存虚拟化

内存虚拟化是对宿主机的真实物理内存统一管理,虚拟化成虚拟的物理内存,然后分别供若干个虚拟机使用,使得每个虚拟机拥有各自独立的内存空间。
对于真实的操作系统而言,内存是从物理地址0开始的,且是连续的,至少在一些大粒度上是连续的。在虚拟化中,所有的客户操作系统可能会同时使用起始地址是0的物理内存,为了满足所有的客户操作系统的起始物理地址都是0且它们内存地址的连续性,VMM引入了一层新的地址空间—客户机物理地址空间。

虚拟机监视器(VMM)通过虚拟机内存管理单元(Memory Management Unit,MMU)来管理虚拟机内存,即其负责分配和管理每个虚拟机的物理内存。

客户机操作系统看到的是一个虚拟的物理内存地址空间(即客户机物理地址空间),不再是真正的物理内存地址空间。

有了客户机物理地址空间就形成了两层地址映射即应用程序所对应的客户机虚拟地址空间到客户机物理地址的映射,客户机物理地址到宿主机物理地址的映射。

前一种映射是由客户机操作系统完成的,后一种是由VMM通过动态地维护镜像页表来管理的。

(3)I/O虚拟化

在一台虚拟机上可以安装多个操作系统,这些客户操作系统都会对外设资源进行访问。但是,外设资源是有限的,为了使所有的客户操作系统都能访问外设资源,虚拟机监视器需通过I/O虚拟化的方式复用有限的外设资源。此时,VMM截获客户操作系统对外设的访问请求,然后通过软件的方式模拟真实外设的效果。但并不要求完整地虚拟化出所有外设的所有接口。

I/O虚拟化的第一步是发现设备,设备的发现取决于被虚拟的设备类型。设备类型不同,设备的发现方式也不同。

以模拟一个完全虚拟的设备为例,这种虚拟设备所处的总线类型完全由VMM自行决定,VMM可以自定义一套虚拟总线协议,也可以将虚拟设备挂在PCI总线上。

第二步是截获访问,虚拟设备已经发现,此时VMM的工作是使客户机操作系统对其进行访问。VMM会根据设备的不同性能提供不同的截获方式。

例如,对于直接分配给客户操作系统并有端口I/O资源的设备,VMM的处理方式是把该设备所属的端口I/O从I/O位图中打开,访问就会被处理器发送给系统总线,最后到达目标物理设备。

在I/O设备中有一种比较特殊的设备—网卡。网卡除了和一般的I/O设备一样作为虚拟机的共享设备外,还要解决虚拟机与外部网络或者虚拟机相互之间的通信问题。

网卡虚拟化技术主要分为两类:虚拟网卡技术和虚拟网桥技术。

虚拟网卡是指虚拟机中的网卡,是由模拟器通过软件的方法模拟出来的;

虚拟网桥是指利用软件方法实现的网桥其作用是在一台服务器中,使多块共享一块物理网卡的虚拟网卡对外表现为多块独立的网卡。

八、桌面虚拟化

桌面虚拟化依赖于服务器虚拟化,直观上来说就是将计算机的桌面进行虚拟化,是将计算机的桌面与其使用的终端设备相分离。

桌面虚拟化为用户提供部署在云端的远程计算机桌面环境,用户可以使用不同的终端设备通过网络来访问该桌面环境,即在虚拟桌面环境服务器上运行用户所需要的操作系统和应用软件。

桌面虚拟化的应用软件安装在云端服务器上,即使本地服务器上没有应用软件,用户依然可以通过虚拟桌面来访问相关的应用。

1.桌面虚拟化的优势

(1)更灵活的访问和使用

传统的计算机桌面,需要在特定的设备上使用,例如,某用户的计算机桌面上安装了PhotoShop软件,若要使用,只能用自己的那台计算机。

虚拟桌面不是本人直接安装在设备上,而是部署在远程服务器上的。任何一台满足接入要求的终端设备在任何时间、任何地点都可以进行访问。例如,拥有虚拟桌面的用户,在上班的时候可以使用单位提供的瘦客户端设备来访问虚拟桌面,在出行的路上可以使用智能手机、平板计算机上安装的客户端软件来访问虚拟桌面,更加方便、快捷。

(2)更低的用户终端配置

虚拟桌面部署在远程服务器上,所有的计算都在远程服务器上进行,而终端设备主要是用来显示远程桌面内容。所以,终端设备没有必要拥有与远程服务器相似的配置,对其配置要求更低、维护相对而言也更加容易。

(3)更便于集中管控终端桌面

虚拟桌面并不是没有自己的个人桌面,其完全可以与本地的个人桌面同时存在,两者可以互不干扰。

使用虚拟桌面,运行商将所有的桌面管理放在后端的数据中心中,数据中心可以对桌面镜像和相关的应用进行管理、维护。而终端用户不用知道具体的管理和维护,就可以使用经过维护后的桌面。

(4)更高的数据安全性

用户在虚拟桌面上所做的应用是在后台的数据中心中执行的,所产生的数据也存储在数据中心,并没有存储在用户的终端设备上。从而,用户终端设备的损坏对数据没有影响。

此外,由于传统的物理桌面会接入内部网,一旦一个终端感染病毒,就可能殃及整个内部网络。而虚拟桌面的镜像文件受到感染,受影响的只是虚拟机,能很快地得到清除和恢复。

(5)更低的成本

虚拟桌面简化了用户终端,用户可以选择配置相对较低的终端设备,从而节省购买成本。

传统的每台计算机上都要有一个桌面环境。而且这些计算机分布在世界各地。管理起来比较困难,管理成本也比较高。

而虚拟桌面及其相关应用的管理和维护都是在远程服务器端运行的,成千上万的用户可以使用同一个虚拟桌面,从而降低了管理和维护的成本。

2.虚拟桌面的解决方案

用户开始使用桌面已经很多年了,最先是在自己的计算机上使用,现在已经形成了基于虚拟桌面基础架构(Virtual Desktop Infrastructure,VDI)和基于服务器计算技术(Server-Based Computing,SBC)两种技术解决方案,这两种技术方案都是一种端到端的桌面管理解决方案。

(1)基于VDI的虚拟桌面解决方案

基于VDI的虚拟桌面解决方案是基于服务器虚拟化的,拥有服务器虚拟化的所有优点。

其原理是在远程数据中心的服务器上安装虚拟机并在其中部署用户所需要的操作系统及操作系统上的各种应用,此时虚拟桌面就是虚拟机上的操作系统及其上的各种应用。然后通过桌面显示协议将完整的虚拟桌面交付给终端用户使用。终端用户通过一对一的方式连接和控制运行在远端服务器上的实例。

桌面显示协议是指在远程桌面与终端之间所使用的通信协议,用于键盘等输入设备、显示设备等与桌面信息之间的数据传输。

桌面显示协议是桌面虚拟化软件的核心部件。当前主流的显示协议包括RDP(Remote Desktop Protocol)、PCoIP、SPICE、ICA等。

基于VDI的虚拟桌面解决方案,用户可以“暂停”单个虚拟机,然后将它们从一个服务器迁移到另一个服务器。如果服务器端的Windows XP是基于VMware VDI基础架构的,数据中心的管理员就可以保有一些很酷的灵活性。

例如,管理员可以通过管理控制台中的一个按钮来“移动”用户到另一台服务器上。用户会收到一个弹出框,显示“请稍等片刻”,然后服务器将Windows XP桌面VM的内存内容转储到磁盘,虚拟机将被置备到另一个物理硬件上。这整个过程大概需要不到30s,而用户会正好回到他们离开的地方。

这项技术的另一个用途是,管理员可能有一个额外的“超时”设置。例如,20min后没有活动的用户会话将被中断(它仍然是在服务器上运行,但是从客户端断开连接)。如果在1h后用户仍然没有进行连接,该系统就可以“暂停”会话并转储内存内容到磁盘,然后释放出硬件资源供其他的用户使用。每当该用户连接时,会话将重新开始,无论过了多久,用户都将回到他们离开的地方。

2)基于SBC的虚拟桌面解决方案

基于SBC的虚拟桌面解决方案的原理是在数据中心内的物理机上直接安装、运行操作系统和应用软件,此时的桌面就是服务器上的物理桌面。用户通过和服务器建立的会话对服务器桌面及相关应用进行访问和操作。

这类解决方案在服务器上部署的操作系统是必须支持多用户多会话的,并且允许多个用户共享操作系统桌面。同时,用户会话产生的输入/输出数据被封装为桌面交付协议格式在服务器和客户端之间传输。

基于SBC的虚拟桌面解决方案,管理员可以在一个数据中心的服务器上运行50~75个的桌面会话,并且该服务器的一个实例是由Windows来管理的;

当使用VDI方案时,若有50~75个用户就要有50~75个操作系统,每一个操作系统都要进行配置、管理、维护,很浪费人力、物力。

九、网络虚拟化

网络虚拟化并不是一个新的概念,已经提出了十多年了,但是其依然处在早期的运用阶段。由于在不同的虚拟机之间可以建立一个私有的虚拟网络,可以说,网络虚拟化是服务器虚拟化产品的一部分。

网络虚拟化一般是指虚拟专用网。虚拟专用网对网络连接进行了抽象,远程用户可以像物理连接在组织内部网络的用户一样来访问该网络。

虚拟专用网络是通过一个公用网络建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定隧道。使用这条隧道可以对数据进行几倍加密达到安全使用互联网的目的。虚拟专用网可以保护网络环境,使用户能够快捷、安全地访问组织内部的网络。

网络虚拟化还有另外一种形式—虚拟局域网。

虚拟局域网能把一物理局域网中的节点在逻辑上划分为多个虚拟局域网,或者是把多个物理局域网中的节点划分到一个虚拟局域网中。每一个虚拟局域网都有一组相同需求的计算机工作站,其工作方式与物理局域网类似。

虚拟局域网增强了网络安全和网络管理。如,在同一个虚拟局域网中的计算机工作站之间的通信与直接在独立的交换机上运行是一样的,虚拟局域网中的广播只有虚拟局域网中的计算机工作站才能收到,控制了不必要的广播风暴的产生。




Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐