初识虚拟化技术,初识虚拟技术


(一)虚拟化技术概述

虚拟化技术可针对具体应用目的创建特定目的的虚拟环境,安全、效率高,快照、克隆、备份、迁移等方便。系统虚拟化是将一台物理计算机虚拟成一台或多台虚拟计算机系统,每个都有自己的虚拟硬件,其上的操作系统任认为自己运行在一台独立的主机上,计算机软件在一个虚拟的平台上而不是真实的硬件平台上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。其中CPU的虚拟化可以单CPU模拟多CPU并行运行,允许一个平台同时运行多个操作系统,并且应用程序可以在相互独立的空间内运行而互不影响。虚拟化技术在降低硬件成本的同时,还可以显著提高系统的工作效率和安全性。

虚拟化系统的实现通常是在操作系统和硬件之间加入一个虚拟机监控程序,称为Hypervisor(如图1所示)。由Hypervisor主要负责各个操作系统之间的硬件资源协调。虚拟机监控程序是一种特殊操作系统,直接在裸机上运行(针对完全虚拟化技术)。虚拟机监控程序创建一个底层硬件平台抽象,一个或多个虚拟机(VM)共享这个底层硬件平台。在这种环境中,VM 只是操作系统及其应用程序的容器,一个 VM 与虚拟机监控程序上运行的其他 VMs 隔离,这支持多个操作系统或多个配置不同的相似操作系统。


图1  虚拟化系统结构

1,虚拟计算机系统三层含义-同质、高效、资源受控。

同质-本质上虚拟机和物理机是相同的、表现上有所差异,如一个物理核虚拟多个核。

高效-虚拟机效能接近物理机。

资源受控-虚拟机对系统资源有完全的控制能力,包括分配、管理、回收。

2,虚拟化分不同层面的虚拟化

硬件抽象层的虚拟化-客户机与宿主机硬件相似,指令集相似。

操作系统层虚拟化-内核可以提供多个相互隔离的用户态,其拥有独立的文件系统、网络、系统设置和库函数。

库函数层初始化-是不同的操作系统可以拥有共同的库函数接口,应用程序不需修改。

编程语言层虚拟化-编的程序运行在一个虚拟机上,与具体硬件无关。如Java。

3,虚拟机的优点

良好的封装,虚拟机的运行环境保持便捷,便于随时抓取状态、备份、克隆、挂起和恢复。

多实例-最大限度减少物理资源,提高利用率,便于管理。

隔离-每个应用程序可以再独立的操作系统中运行,互不干涉,崩溃也不会影响其他任务。

硬件无关性-只要拥有相同的硬件抽象层,虚拟机就可以无缝迁移,因此维护和升级简单。

安全-便于控制访问权利,病毒入侵检测等。

4,虚拟化分类

按照虚拟化程度分完全虚拟化和类虚拟化。完全虚拟化-客户及操作系统不需要任何修改即可运行,分软件辅助完全虚拟化和硬件辅助完全虚拟化,完全虚拟化能够模拟所有CPU指令。类虚拟化-操作系统需要做出适应性修改,回避那些难以模拟的指令。

按照宿主机是否存在独立操作系统分为hypervisor模型和宿主模型,前者需支持所有的物理资源管理(系统启动、内存管理、设备驱动等),效率高、复杂;后者只需调用宿主操作系统API实现虚拟化,宿主操作系统可以是windows、linux,效率低、简单。第三类是两者的混和,VMM位于硬件层之上,但让出部分IO设备管理权给一个运行在特权虚拟机上的特权操作系统,VMM负责处理器和内存虚拟化。

(二)虚拟化技术框架

虚拟环境组成:硬件、VMM、虚拟机,物理机中操作系统直接管理硬件(通过硬件抽象层HAL),虚拟环境中VMM管理硬件(会构建一个或多个逻辑HAL),操作系统运行在VMM 逻辑HAL之上,运行在非CPU最高特权。

对物理资源虚拟的三个主要任务:处理器虚拟化、内存虚拟化和I/O虚拟化。若硬件直接支持虚拟化技术则CPU辅助完成虚拟化过程,在CPU、芯片组以及IO设备等加入专门针对虚拟化的支持,从而高容易、高效的实现虚拟化。


    图2 虚拟化环境组成

1,VMM介绍

虚拟机VMM(虚拟机监控器)运行在物理CPU的最高特权级,VMM向下管理宿主机物理资源,包括处理器管理、内存管理、外设管理、中断管理、系统时间管理等,向上则管理虚拟环境资源,包括:

i 虚拟物理资源-处理器、内存、IO设备等。

ii 多个独立虚拟环境的调度-类似于进程调度。

iii 虚拟环境间的通信机制--VMM提供VMM与虚拟环境之间、虚拟环境之间的通信API,通信方式可以是共享内存、事件通知等。

iv 虚拟环境的管理-创建、删除、暂停等。

2,硬件辅助虚拟化

i 处理器虚拟化:

VMM最核心部分,内存、IO虚拟化都赖于处理器虚拟化的正确实现。处理器的虚拟化就是模拟处理器的所有关键环节-指令集、内存访问。三个关键概念:虚拟寄存器、虚拟上下文、虚拟CPU,其中虚拟CPU与物理CPU具有一致的功能,其功能由物理CPU和VMM共同完成(非敏感指令直接物理CPU完成,敏感指令VMM陷入后再模拟)。处理器虚拟化包括:

(a)指令集模拟:正确模拟指令的行为。操作系统试图访问关键资源时,VMM会将访问定位在VMM的虚拟寄存器上。操作系统执行操作时(进程切换等),通过VMM“陷入”再模拟进行,陷入手段包括:处理器保护机制触发异常、VMM主动通过陷阱调用、异步中断(处理器内部中断源和外部中断)。

(b)中断和异常的模拟:模拟硬件中断和软件异常的执行。

(c)对称多处理器的模拟:虚拟处理器个数与物理CPU没有必然联系,向操作系统呈现SMP的存在。

ii 内存虚拟化:核心要求是每个客户机物理地址从0开始、大粒度地址连续(如256M),基本做法在于引入一层新的地址空间-客户机物理地址空间,使用时由VMM将地址转化为实际物理地址。

iii IO虚拟化:截获客户机操作系统对设备的访问请求,通过软件模拟真实物理效果,“欺骗客户机”

3,基于软件的完全虚拟化

若硬件在虚拟化支持存在缺陷,可通过软件弥补。两种可行方案-模拟执行(完全虚拟化)和直接源代码改写(类虚拟化)。软件模拟技术是在一种硬件平台上通过软件模拟出另外一种硬件平台,从而可以运行其上的操作系统、应用程序。模拟的核心是模拟指令集的执行效果,可模拟相同的硬件体系结构,也可模拟不同的。

i 基于软件的CPU虚拟化

(a)模拟技术最简单的就是解释执行-取指、模拟执行效果、再取指,缺点是性能差。如java即为解释型执行,具有硬件平台无关性。

(b)扫描和修补-大部分指令直接由物理CPU执行,部分操作系统敏感指令通过陷阱陷入到VMM模拟执行。

(c)二进制代码翻译-物理CPU不能直接执行客户机操作系统操作,待执行代码都在VMM缓冲区里。

ii 内存虚拟化:为了实现客户机物理地址到宿主机物理地址的映射,VMM维护了一张映射表。VMM截获客户机内存操作指令,并映射到VMM分配给该客户机的相应宿主机物理地址。翻译过程通过影子页表实现,直接翻译到宿主机物理地址。

iii IO虚拟化:虚拟机中侦测出来的设备是VMM虚拟的设备,可以多于或少于真实设备,功能和型号也可同可不同,模拟设备与操作系统交互的API即可。


什是虚拟化技术

  虚拟化计算机的本质
  虚拟化,原本是指资源的抽象化,也就是单一物理资源的多个逻辑表示,或者多个物理资源的单一逻辑表示。具体到服务器虚拟化,就是多个物理资源的单一逻辑表示。另外,存储虚拟化就是这种模式的一个例子。
  对不了解虚拟化的终端用户来说,听到上面说“单一物理资源的多个逻辑表示”,往往会认为“虚拟化技术也太抽象了”。可是,如果要看计算机架构的话,虚拟化正是计算机的本质。
  想一下,PC同时启动使用邮件和Web浏览器等多个应用,这时候你就会理解虚拟化技术。在这个情况下,操作系统把PC物理资源抽象化了,将多个应用集中到一个物理资源环境下。因为虚拟化hypervisor是运行在操作系统上层的,所以会被认为有些抽象。不过,如果试着从计算机结构来理解的话,也不是那么晦涩。
  虚拟化的主要类型:主机型和hypervisor型
  虚拟化的类型大致可以分为主机型和hypervisor型。当虚拟化最初应用于PC时的主流类型是主机型。
  主机型是将虚拟化软件作为一个应用安装的主机操作系统中。虚拟硬件包括主机操作系统中的虚拟化软件、操作系统和应用。因为是被作为一个应用,所操作系统不是那么快。
  主机型虚拟化的问题在于,如果主机操作系统发生故障,就会波及到作为该操作系统一个应用的虚拟化软件。而且,在硬件模拟过程中也会发生诸多问题。
  接下来是hypervisor型。hypervisor型是指通过低层级软件让多个操作系统得以共享相同的硬件设备。
 

虚拟化技术都包含什内容?

虚拟化技术简介

什么是虚拟化

虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在70年代的 System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了 IT 成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中。

虚拟化是一个广义的术语,对于不同的人来说可能意味着不同的东西,这要取决他们所处的环境。在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念。例如对物理内存的抽象,产生了虚拟内存技术,使得应用程序认为其自身拥有连续可用的地址空间(Address Space),而实际上,应用程序的代码和数据可能是被分隔成多个碎片页或段),甚至被交换到磁盘、闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。

虚拟化技术的分类

虚拟化技术主要分为以下几个大类 [1]:

平台虚拟化(Platform Virtualization),针对计算机和操作系统的虚拟化。
资源虚拟化(Resource Virtualization),针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。
应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术等。
我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称为 Virtual Machine Monitor 或 Hypervisor),隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚拟机监控器的操作系统被称为主机操作系统(Host OS),当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上(如 VMWARE 的 ESX 产品)。运行虚拟机的真实系统我们称之为主机系统。

平台虚拟化技术又可以细分为如下几个子类:

全虚拟化(Full Virtualization)
全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。操作系统与真实硬件之间的交互可以看成是通过一个预先规定的硬件接口进行的。全虚拟化 VMM 以完整模拟硬件的方式提供全部接口(同时还必须模拟特权指令的执行过程)。举例而言,x86 体系结构中,对于操作系统切换进程页表的操作,真实硬件通过提供一个特权 CR3 寄存器来实现该接口,操作系统只需执行 "mov pgtable,%%cr3" 汇编指令即可。全虚拟化 VMM 必须完整地模拟该接口执行的全过程。如果硬件不提供虚拟化的特殊支持,那么这个模拟过程将会十分复杂:一般而言,VMM 必须运行在最高优先级来完全控制主机系统,而 Guest OS 需要降级运行,从而不能执行特权操作。当 Guest OS 执行前面的特权汇编指令时,主机系统产生异常(General Protection Exception),执行控制权重新从 Guest OS 转到 VMM 手中。VMM 事先分配一个变量作为影子 CR3 寄存......余下全文>>
 

相关内容