虚拟化技术简介

 

虚拟化(Virtualization)技术最早出现在20 世纪60 年代的IBM 大型机系统,在70 年代的System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。

借助虚拟化,您可以在单台物理机上运行多个虚拟机,每个虚拟机都可以在多个环境之间共享同一台物理机的资源。不同的虚拟机可以在同一台物理机上运行不同的操作系统以及多个应用程序。

随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了IT 成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中。

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

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

平台虚拟化(Platform Virtualization),针对计算机和操作系统的虚拟化。

资源虚拟化(Resource Virtualization),针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。

应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术等。

  我们通常所说的虚拟化主要是指平台虚拟化,这是一种针对计算机和操作系统的虚拟化技术,通过使用控制程序(Control Program,也被称为Virtual Machine   Monitor 或Hypervisor,隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(也被称为虚拟机)。虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚拟机监控器的操作系统(某些虚拟机监控器可以直接运行在硬件)被称为主机操作系统(Host OS)。

 

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

1、全虚拟化(Full Virtualization)

2、超虚拟化(Paravirtualization)

3、硬件辅助虚拟化(Hardware-Assisted Virtualization)

4、操作系统级虚拟化(Operating System Level Virtualization)     

  这种分类并不是绝对的,一个优秀的虚拟化软件往往融合了多项技术。例如VMware Workstation 是一个著名的全虚拟化的VMM,但是它使用了称为动态二进制翻译的技术把对特权状态的访问变换成对影子状态的操作,从而避免了低效的Trap-And-Emulate 的处理方式,这与超虚拟化相似,只不过超虚拟化是动态地修改程序代码。对于超虚拟化而言,如果能利用硬件特性,那么虚拟机的管理将会大大简化,同时还能保持较高的性能。