虚拟化与云计算-第二章虚拟化概论

虚拟化就是将原本运行在真实环境上的计算机系统或组件运行在虚拟出来的环境中。一般来说,计算机系统分为若干层次,从下至上包括底层硬件资源、操作系统、操作系统提供的应用程序编程接口,以及运行在操作系统之上的应用程序。虚拟化技术可以在这些不同层次之间构建虚拟化层,向上提供与真实层次相同或类似的功能,是的上层系统可以运行在该中间层之上。这个中间层可以解除其上下两层间原本存在的耦合关系,使上层运行不依赖于下层的具体实现。虚拟内存技术是指磁盘存储空间中划分一部分当作内存的中转站,负责存储内存中放不下且暂且不用的数据,当程序用到这数据时,将它们从磁盘换入到内存。


虚拟化的三层含义:虚拟化的对象是各种各样的资源;经过虚拟化后的逻辑资源对用户隐藏了不必要的细节;用户可以在虚拟环境中实现其在真实环境中的部分或者全部功能。

总结起来:虚拟化是资源的逻辑表示,它不受物理限制的约束


基础设施虚拟化

网络虚拟化是指将网络的硬件和软件资源整合,向用户提供虚拟网络连接的虚拟化技术,其可划分为局域网络虚拟化和广域网络虚拟化。

在局域网络虚拟化中,多个本地网络被组合成为一个逻辑网络,或者一个本地网络被分割为多个逻辑网络(VLAN)

对于广域网络虚拟化,VPN(虚拟专用网)是代表。VPN抽象化了网络连接,使得远程用户可以随时随地访问公司的内部网络,并感觉不到物理连接和虚拟连接的差异性。


存储虚拟化指物理的存储设备提供一个抽象的逻辑视图,用户可以通过这个视图中的统一逻辑接口来访问被整合的存储资源。该技术主要有基于存储设备的存储虚拟化和基于网络的存储虚拟化。磁盘阵列技术(RAID)是基于存储设备的存储虚拟化,该技术通过将多块物理磁盘组合成为磁盘阵列,用廉价的磁盘设备实现了一个统一的、高性能的容错存储空间。网络附加存储(Network Attached Storage)和存储区域网(Storage Area Network)是基于网络的存储虚拟化技术的代表。

存储虚拟化是指把物理上分散存储的众多文件整合为一个统一的逻辑视图,方便用户访问(通过网络将存储设备和系统连接起来),提高文件管理的效率。


系统虚拟化

系统虚拟化实现了操作系统与物理计算机的分离,其核心思想是在使用虚拟软件在一台物理机上虚拟出一台或多台虚拟机。虚拟机运行在一个隔离环境中、具有完整硬件功能的逻辑计算机系统,包括客户操作系统和其中的应用程序,多个操作系统可以不互相影响地在同一台物理机上同时运行。 


软件虚拟化

主要包括应用虚拟化和高级语言虚拟化

应用虚拟化将应用程序与操作系统解耦合(http://write.blog.csdn.net/postedit/53201589),为应用程序提供了一个虚拟的运行环境。在这个环境中,不仅包括应用程序的可执行文件,还包括他所需要的运行时环境。当用户需要使用某软件时,应用虚拟化服务器可事实将用户所需的程序组件推送到客户端的应用虚拟运行环境。当用户完成操作关闭程序时,所做的更改和数据将上传服务器集中管理。


高级语言虚拟化解决的是可执行程序在不同体系结构计算机间迁移的问题。(如java虚拟机技术)


服务器虚拟化

服务器虚拟化将系统虚拟化技术应用在服务器上,将一个服务器虚拟成若干个服务器。两种类型:寄宿虚拟化,原声虚拟化。

虚拟机监视器(Virtual Machine Monitor,VMM)虚拟机监视器负责对虚拟机提供硬件资源抽象,为客户操作系统提供运行环境

虚拟化平台(Hypervisor)负责虚拟机的托管和管理。直接运行在硬件之上,因此其实现直接受低层体系结构的约束。


寄宿虚拟化:VMM是运行在宿主操作系统之上的应用程序,利用宿主操作系统的功能来实现硬件资源的抽象和虚拟机的管理。典型模型:VMware Workstation

原生虚拟化:直接运行在硬件之上的不是宿主操作系统,而是虚拟化平台,虚拟机运行在虚拟化平台上,虚拟化平台提供指令集和设备接口,以提供对虚拟机的支持。典型实现:VMware ESX Server,Microsoft Hyper-V。


特性

1.多实例;2.隔离性;3.封装性(与硬件无关性,一个完整的虚拟机环境对外表现为一个单一实体);4.高性能(保证虚化的抽象层开销在承受范围内)


核心技术

1.CPU虚拟化:每个客户操作系统可以使用一个或多个虚拟CPU,在这些客户操作系统之间,虚拟CPU的运行相互隔离,互不影响。

在通过软件方式实现CPU虚拟化中,主要是全虚拟化(采用二进制代码动态翻译技术,在敏感指令前插入陷入指令,将执行陷入到VMM中,由此转换指令再执行)和半虚拟化(将所有敏感指令替换为对底层虚拟化平台的超级调用)

硬件辅助虚拟化


2.内存虚拟化:把物理机的真实物理内存统一管理,包装成多个虚拟的物理内存分别供若干个虚拟机使用,使得每个虚拟机拥有各自独立的内存空间。

在内存虚拟化中,在虚拟机与服务器的机器内存插入一内存虚拟化管理层。逻辑内存与机器内存之间的映射关系是由内存虚拟化管理单元来负责的。有两种实现方法:

1.影子页表实现法:客户操作系统维护自己的页表(逻辑地址与客户机上的“物理地址”),虚拟机监视器中的页表是以客户操作系统的页表为蓝本建立(客户机上的“物理地址”与机器地址-硬件真实的物理地址),可更新。


2.页表写入法:当客户操作系统创建一新页表时,需要向虚拟机监视器注册该页表。此时,虚拟机监视器剥夺客户操作系统对页表的写权限,并向该页表写入真实的物理地址(机器内存地址)。操作系统对页表的每次修改都会陷入虚拟机监视器。由其负责更新。


设备与I/O虚拟化:把真实设备统一管理,包装成多个虚拟设备给若干个虚拟机使用,响应每个虚拟机的设备请求服务。经过虚拟化的设备并不一定与物理设备的型号、配置、参数完全相符,但这些设备能有效模拟物理设备的动作,将虚拟机的设备操作转译给物理设备,并将物理设备的运行结果返回给虚拟机。虚拟机并不依赖于底层物理设备的实现,对于虚拟机来说,它看到的始终是由虚拟化平台提供的这些标准设备。


在服务器虚拟化中,虚拟服务器是通过网络向外界提供服务。在服务器虚拟化中每一个虚拟机都变成一个独立的逻辑服务器,它们之间的通信通过网络接口进行,每一个虚拟机都被分配了一个虚拟的网络接口,从虚拟机内部看来就是一块虚拟网卡。服务器虚拟化要求对宿主操作系统的网络接口驱动进行修改,经过修改后,物理机的网络接口不仅要承担原有网卡的功能,还要通过软件虚拟出一个交换机。虚拟交换机工作于数据链路层,负责转发从物理机外部网络投递到虚拟机网络接口的数据包,并维护多个虚拟机网络接口之间的连接。当一个虚拟机与同一物理机上的其它虚拟机通信时,它的数据包会通过自己的虚拟网络接口发出,虚拟交换机收到该数据包后将其转发给其它目标虚拟机的虚拟网络接口,转发过程不需占用物理带宽。


实时迁移技术:在虚拟机运行过程中,将整个虚拟机的运行状态完整、快速从原来所在的宿主机硬件平台迁移到新的宿主机硬件平台上,整个迁移过程是平滑的,用户察觉不到任何差异。实时迁移开始后,内存页面被不断从源VMM拷贝到目标VMM,该过程不会对正常运行产生影响。最后一部分内存页面被拷贝到目标VMM之后,目标VMM开始运行,VMM切换源虚拟机与目标虚拟机,源虚拟机的运行终止,实时迁移完成。


网络虚拟化

包括虚拟局域网核虚拟专用网。虚拟局域网可以将一个物理局域网划分为多个虚拟局域网,甚至将多个物理局域网里的节点划分到一个虚拟的局域网,使得虚拟局域网中的通信与物理局域网类似。虚拟专用网对网络连接进行了抽象,允许远程用户访问组织内的网络,就像物理上直接连到该网络。


存储虚拟

RAID(Redundant Array of Independent Disk)通过将多块物理磁盘以阵列的方式组合起来,为上层提供一个统一的存储空间。在RAID技术后的是NAS(Network Attached Storage)和SAN(Storage Area Network)。NAS将文件存储与本地计算机系统解耦合,把文件存储集中在连接到网路上的NAS单元,如NAS文件服务器。其他网络上的异构设备都可以通过标准的网络文件访问协议来其上的文件按照权限限制进行访问和更新。虽同是将存储从本地系统上分离,集中在局域网上供用户共享,SAN一般是由磁盘阵列连接光纤通道组成,服务器和客户机通过SCSI协议进行高速数据通信。在SAN中,存储的共享是在磁盘区块的级别上,在NAS中是在文件级别上。


桌面虚拟化

将用户的桌面环境与其使用的中断设备解耦合。服务器上存放的是每个用户的完整桌面环境,用户可以使用不同的显示终端,通过网络访问该桌面环境。


应用虚拟化

应用虚拟化为应用程序提供了一个虚拟的运行环境,在这个环境中,不仅拥有应用程序的可执行文件,还包括它所需的运行环境,应用可以在任何共享的计算资源上运行。在未采用该项技术之前,管理员要对每个应用程序进行更新,他必须处理每一台机器可能出现的不同类型的不兼容情况。采用该项技术,管理员只需更新虚拟环境中的应用程序副本,使用者与传统的应用程序安装方式不同,程序并不是完全安装在本地机器的硬盘上,而是从中央服务器上下载下来,运行在本地的应用虚拟化环境中。当用户关闭程序后,已下载的部分可以完全删除。

应用虚拟化的应用也可以以流的方式发布到客户端,仅当用户需要时按需将程序的部分或全部内容以流的方式传送到客户端。

从本质上来说,应用虚拟化是把应用对底层的系统和硬件的依赖抽象出来,从而解除应用与操作系统和硬件的耦合关系(如动态链接库)。





版权声明:本文为caibaixie9175原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。