虚拟化技术和分区(Partition)技术是紧密结合在一起,从60年代Unix诞生起,虚拟化技术和分区技术就开始了发展,并且经历了从“硬件分区”->“虚拟机”->“准虚拟机”->“虚拟操作系统”的发展历程。最早的分区技术诞生自人们想提升大型主机利用率需求。比如在金融、科学等领域,大型Unix服务器通 常价值数千万乃至上亿元,但是实际使用中多个部门却不能很好的共享其计算能力,常导致需要计算的部门无法获得计算能力,而不需要大量计算能力的部门占有了 过多的资源。这个时候分区技术出现了,它可以将一台大型服务器分割成若干分区,分别提供给生产部门、测试部门、研发部门以及其他部门。
几种常见的虚拟化技术代表产品如下:
类型
代表产品
硬件分区
IBM/HP等大型机硬件分区技术
虚拟机 (Virtual Machine Monitor)
EMC VMware Mircosoft Virtual PC/Server Parallels
准虚拟机 (Para-Virtualization)
Xen Project
虚拟操作系统 (OS Virtualization)
SWsoft Virtuozzo/OpenVZ Project Sun Solaris Container
HP vSE FreeBSD Jail
Linux Vserver
硬件分区技术
硬件资源被划分成数个分区,每个分区享有独立的CPU、内存,并安装独立的操作系统。在一台服务器上,存在有多个系统实例,同时启动了多个操作系统。这种分区方法的主要缺点是缺乏很好的灵活性,不能对资源做出有效调配。随着技术的进步,现在对于资源划分的颗粒已经远远提升,例如在IBM AIX系统上,对CPU资源的划分颗粒可以达到0.1个CPU。这种分区方式,在目前的金融领域,比如在银行信息中心得到了广泛采用。
虚拟机技术
在虚拟机技术(Virtual Machine Monitor)中,不再对底层的硬件资源进行划分,而是部署一个统一的Host系统。在Host系统上,加装了Virtual Machine Monitor,虚拟层作为应用级别的软件而存在,不涉及操作系统内核。虚拟层会给每个虚拟机模拟一套独立的硬件设备,包含CPU、内存、主板、显卡、网卡等硬件资源,在其上安装所谓的Guest操作系统。最终用户的应用程序,运行在Guest操作系统中。
这种虚拟机运行的方式有一定的优点,比如能在一个节点上安装多个不同类型的操作系统;但缺点也非常明显,虚拟硬件设备要消耗资源,大量代码需要被翻译执 行,造成了性能的损耗,使其更合适用于实验室等特殊环境。其代表产品有EMC旗下的VMware系列、微软旗下的Virtual PC/Server系列等。
准虚拟机技术
为了改善虚拟机技术(Virtual Machine Monitor)的性能,一种新的准虚拟化技术(Para-Virtualizion)技术诞生了。这种虚拟技术以Xen为代表,其特点是修改操作系统的 内核,加入一个Xen Hypervisor层。它允许安装在同一硬件设备上的多个系统可以同时启动,由Xen Hypervisor来进行资源调配。
在这种虚拟环境下,依然需要模拟硬件设备,安装Guest操作系统,并且还需要修改操作系统的内核。Xen相对于传统的Virtual Machine Monitor,性能稍有提高,但并不十分显著。为了进一步提高性能,Intel和AMD分别开发了VT和Pacifica虚拟技术,将虚拟指令加入到了 CPU中。使用了CPU支持的硬件虚拟技术,将不再需要修改操作系统内核,而是由CPU指令集进行相应的转换操作。
操作系统虚拟化技术
最新的虚拟化技术已经发展到了操作系统虚拟化,以SWsoft的Virtuozzo/OpenVZ和Sun基 于Solaris平台的Container技术为代表,其中Virtuozzo是商业解决方案,而OpenVZ是以Virtuozzo为基础的开源项目。 他们的特点是一个单一的节点运行着唯一的操作系统实例。通过在这个系统上加装虚拟化平台,可以将系统划分成多个独立隔离的容器,每个容器是一个虚拟的操作 系统,被称为虚拟环境(即VE,Virtual Environment),也被称为虚拟专用服务器(即VPS,Virtual Private Server)。
在操作系统虚拟化技术中,每个节点上只有唯一的系统内核,不虚拟任何硬件设备。此外,多个虚拟环境以模板的方式共享一个文件系统,性能得以大幅度提升。在生产环境中,一台服务器可根据环境需要,运行一个VE/VPS,或者运行上百个VE/VPS。所以,操作系统虚拟化技术是面向生产环境、商业运行环境的技术。
表:常见虚拟化技术对比
从最早的硬件分区到现阶段的虚拟机和虚拟操作系统,虚拟化技术已经发展了好几代,不同的技术路线也带来了不同的优劣势。选择什么样的技术和产品,用户还是应该结合自身的预算和应用实践来决策。(本文作者系SWsoft中国首席工程师)
比如画画或者是做一些笔记,那些都是。
虚拟化技术有哪些
1、CPU虚拟化
虚拟化在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。简单说来,CPU的虚拟化技术就是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
2、网络虚拟化
网络虚拟化是目前业界关于虚拟化细分领域界定最不明确,存在争议较多的一个概念。微软眼中的“网络虚拟化”,是指虚拟专用网络(VPN)。VPN对网络连接的概念进行了抽象,允许远程用户访问组织的内部网络,就像物理上连接到该网络一样。网络虚拟化可以帮助保护IT环境,防止来自Internet的威胁,同时使用户能够快速安全的访问应用程序和数据。
3、服务器虚拟化
与网络虚拟化不同,服务器虚拟化却是虚拟化技术最早细分出来的子领域。根据2006年2月ForresterResearch的调查,全球范围的企业对服务器虚拟化的认知率达到了75%。三分之一的企业已经在使用或者准备部署服务器虚拟化。这个产生于20世纪60年代的技术日益显示出其重要价值。由于服务器虚拟化发展时间长,应用广泛,所以很多时候人们几乎把服务器虚拟化等同于虚拟化。
4、存储虚拟化
随着信息业务的不断运行和发展,存储系统网络平台已经成为一个核心平台,大量高价值数据积淀下来,围绕这些数据的应用对平台的要求也越来越高,不光是在存储容量上,还包括数据访问性能、数据传输性能、数据管理能力、存储扩展能力等等多个方面。可以说,存储网络平台的综合性能的优劣,将直接影响到整个系统的正常运行。因为这个原因,虚拟化技术又一子领域——虚拟存储技术,应运而生。
5、应用虚拟化
前面几种虚拟化技术,主要还专注于对硬件平台资源的虚拟优化分配,随着IT应用的日益广泛,应用虚拟化作为虚拟化家族的明日之星登上了历史舞台。2006年7月由Forrester咨询公司在美国对各种不同行业的高层IT管理人员所做的一项研究显示,当今的机构现在将应用虚拟化当作是业务上的一个必由之路,而不是一个IT决策。据统计,全世界目前至少有超过18万个机构在利用应用虚拟化技术进行集中IT管理、加强安全性和减少总体成本。
CPU虚拟化
虚拟化在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。简单说来,CPU的虚拟化技术就是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下是通过VMM(Virtual Machine Monitor,虚拟机监视器)来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。(注意,大多数处理器和内存访问独立于VMM,只在发生特定事件时才会涉及VMM,如页面错误。)在纯软件虚拟化解决方案中,VMM在软件套件中的位置是传统意义上操作系统所处的位茫。如处理器、内存、存储、显卡和网卡等)的接口,模拟硬件环境。这种转换必然会增加系统的复杂性。
CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会很容易提高性能,相比软件的虚拟实现方式会很大程度上提高性能。虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。由于虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无需进行二进制转换,减少了相关的性能开销,极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。另外,在纯软件VMM中,目前缺少对64位客户操作系统的支持,而随着64位处理器的不断普及,这一严重缺点也日益突出。而CPU的虚拟化技术除支持广泛的传统操作系统之外,还支持64位客户操作系统。
虚拟化技术是一套解决方案。完整的情况需要CPU、主板芯片组、BIOS和软件的支持,例如VMM软件或者某些操作系统本身。即使只是CPU支持虚拟化技术,在配合VMM的软件情况下,也会比完全不支持虚拟化技术的系统有更好的性能。
两大CPU巨头英特尔和AMD都想方设法在虚拟化领域中占得先机,但是AMD的虚拟化技术在时间上要比英特尔落后几个月。英特尔自2005年末开始便在其处理器产品线中推广应用英特尔Virtualization Technology(Intel VT)虚拟化技术。目前,英特尔已经发布了具有Intel VT虚拟化技术的一系列处理器产品。