1、什么是虚拟化
虚拟化(Virtualization)技术最早出现在20世纪60年代的IBM大型机系统,在70年代的System 370系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Moni-tor, VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。
2、虚拟化技术的分类
这里的服务器虚拟化指的是通过虚拟化软件来实现计算机和服务器虚拟化,通过使用控制程序(Control Program,也被称为Virtual Machine Monitor或Hypervisor)隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚拟机监控器的操作系统被称为主机操作系统(Host OS),当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上(如VMWARE的ESX产品)。
2.1全虚拟化((Full Virtualization)。
全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。操作系统与真实硬件之间的交互可以看成是通过一个预先规定的硬件接口进行的。全虚拟化VMM以完整模拟硬件的方式提供全部接口(同时还必须模拟特权指令的执行过程)。
2.2超虚拟化(Paravirtualization)。
这是一种修改Guest OS部分访问特权状态的代码以便直接与VMM交'_的技术。在超虚拟化虚拟机中,部分硬件接口以软件的形式提供给客户机操作系统,这可以通过Hypercall(VMM提供给Guest OS的直接调用,与系统调用类似)的方式来提供。
2.3部分虚拟化((Partial Virtualization)。
VMM只模拟部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运行的,其它程序可能也需要进行修改。在历史上,部分虚拟化是通往全虚拟化道路上的重要里程碑。
2.4操作系统级虚拟化(Operating System Level Virtualiza-tian)。
在传统操作系统中,所有用户的进程本质上是在同一个操作系统的实例中运行,因此内核或应用程序的缺陷可能影响到其它进程。操作系统级虚拟化是一种在服务器操作系统中使用的轻量级的虚拟化技术,内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程,不同实例中的进程完全不了解对方的存在。
3.Linux虚拟化技术解决方案
3.1 Linux-VServer(操作系统级虚拟化)。
Linux-VServer是一个操作系统级虚拟化解决方案。Linux-VServer对Linux内核进行虚拟化,这样多个用户空间环境又称为Virtual Private server(VPS),就可以单独运行,而不需要互相了解。Linux-VServer通过修改Linux内核实现用户空间的隔离。
3.2 Xen(超虚拟化)。#p#
Xen是一个来自于XenSource的操作系统级超虚拟化的免费开源解决方案。回想一下在超虚拟化中,hypervisor和操作系统会共同协作,虽然操作系统需要进行一些更改,但却可以带来接近于原始系统的性能。就像Xen需要进行协作(对客户操作系统进行修改)一样,只有那些修补过的操作系统才可以通过Xen进行虚拟化。
Linux本身就是开源的,所以从Linux角度来看,这是一个很合理的折衷,因为最终可以获得比完全虚拟化更好的性能。但是从广泛支持的角度来看(例如对其他非开源操作系统的支持),这显然是一个缺点。
Windows可以在Xen上作为一个客户操作系统运行,但是它只能在运行Intel Vanderpool或AMD Pacifica的系统上使用。支持Xen的其他操作系统包括NetBSD, FreeBSD和OpenSolaris。
3.3 VMware(完全虚拟化)。
VMware是完全虚拟化的一个商业解决方案。在客户操作系统和裸硬件之间有一个hypervisor作为抽象层使用。这个抽象层允许任何操作系统在硬件上运行,而不需要了解任何其他客户操作系统。VMware也会对可用的I/O硬件进行虚拟化,并将一些高性能的设备驱动程序加入到hy-pervisor中。整个虚拟化后的环境都作为一个文件保存,这意味着整个系统(包括客户操作系统、VM和虚拟硬件)可以很容易地快速迁移到新宿主机器上进行负载均衡。
3.4 KVM(内核虚拟机)。
KVM是指基于Linux内核的虚拟机(Kernel-based Virtual Machine)。基于内核的虚拟机是针对包含虚拟化扩展(Intel VT或AMD-V)的x86硬件上的Linux的完全原生的虚拟化解决方案。对半虚拟化(parauirtualization)的有限支持也可以通过半虚拟网络驱动程序的形式用于Linux和Windows来宾系统。KVM目前设计为通过可加载的内核模块连接内核。支持的操作系统版本包括广泛的操作系统,比如Linux, BSD, Solaris, Windows。
虚拟化是趋势所在。它所带来的诸多好处和利益都让厂商和用户为之着迷,但虚拟化也存在不少问题。当然,我们也有理由相信,随着时间的推移和各方的努力,这些问题都会得到不同程度的解决。也许,在这种不断解决种种麻烦的过程中,虚拟化正迎来灿烂的明天。