虚拟化(Virtualization)技术最早出现在20世纪60年代的IBM大型机系统,在70年代的System 370系列中逐渐流行起来。这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。
随着近年计算机技术的进步,无论是服务器市场、桌面市场,还是嵌入式市场,处理器的频率和核心数目都出现了巨大的进步,从而带来了处理能力的迅速增长,使得虚拟化技术再次迅速发展起来,并从最初的的裸机虚拟化技术开始,演化出主机虚拟化、混合虚拟化等更复杂的虚拟化模型,并在此基础山发展出了当下最热门的云虚拟化技术,极大地降低了IT成本,增强了系统的安全性,可靠性和扩展性。
在计算机领域,虚拟化是一个广义的概念。简而言之,虚拟化是指对计算机资源的抽象。虚拟机最初被Popek和Goldberg定义为物理机器的一个或多个隔离的有效复制[16]。J.E. Smith和RaviNair给出了一个更具体化的定义:虚拟机是通过在物理平台上添加的软件给出的一个或多个不同的平台。一个虚拟机可以有一个操作系统和指令集,或者两者都有,可以不同于底下的真实的硬件。
虚拟化技术的本质在于对计算机系统软硬件资源的划分和抽象。计算机系统的高度复杂性是通过各种层次的抽象来控制,每一层都通过层与层之间的接口对底层进行抽象,隐藏底层具体实现而向上层提供较简单的接口。
1. 虚拟化技术层次
计算机系统包括五个抽象层:硬件抽象层,指令集架构层,操作系统层,库函数层和应用程序层。相应地,虚拟化可以在每个抽象层来实现。无论是在哪个抽象层实现,其本质都是一样的,那就是它使用某些手段来管理分配底层资源,并将底层资源反映给上层。操作系统上传统的进程模型就利用了虚拟化的思想,操作系统通过对物理内存的划分和抽象,给每个进程呈现出远超出物理内存空间的4G空间,并且使得每个进程实现了有效的隔离,从而一个进程的崩溃不会影响到其它进程的正常运行。
虚拟化平台是操作系统层虚拟化的实现。在系统虚拟化中,虚拟机(VM)是在一个硬件平台上模拟一个或者多个独立的和实际底层硬件相同的执行环境。每个虚拟的执行环境里面可以运行不同的操作系统,即客户机操作系统(Guest OS)。Gue