虚拟化技术作为一个广义的术语,在计算机科学中是“一个表现逻辑群组或电脑资源的子集的进程,用户可以用比原本的组态更好的方式来存取这些进程,这些资源的虚拟部分不受现有资源的架设方式、地域或物理组态所限制”,简而言之,虚拟化技术是指计算元件在虚拟的基础上而不是真实的基础上运行,它可以扩大硬件的容量,简化软件的配置过程,减少软件虚拟机相关开销,支持更广泛的操作系统。虚拟化技术可实现软件应用与底层硬件相隔离,它包括将单个资源划分成多个虚拟资源的裂分模式,也包括将多个资源整合成一个虚拟资源的聚合模式。虚拟化技术根据对象可分成存储虚拟化、计算虚拟化、网络虚拟化等,计算虚拟化又分为系统级虚拟化、应用级虚拟化和桌面虚拟化。在云计算实现中。计算系统虚拟化是一切建立在“云”上的服务与应用的基础。虚拟化技术目前主要应用在CPU、操作系统、服务器等多个方面,是提高服务效率的最佳解决方案。
虚拟化技术与多任务以及超线程技术是完全不同的技术。多任务是指在同一个操作系统中有多个程序同时并行运行,而在虚拟化技术中,则可以在同一计算机上实现同时运行多个不兼容的操作系统,而且每个操作系统中都可以有多个程序运行,每一个操作系统都运行在一个虚拟的CPU 或者是虚拟主机上,然而,超线程技术只是单CPU 模拟双CPU 来平衡程序运行性能,这两个模拟出来的CPU 是不能分离的,只能协同工作。
虚拟化资源主要包括计算能力和数据储存,有许多不同的实现模式,但是它们的共性是模拟指令集的方式。每个虚拟机都有一个用户可以访问的指令集,虚拟机把这些虚拟指令映射到计算机的实际指令集。虚拟化技术按照虚拟化指令集所处的位置和采用技术的不同,可分为硬件辅助虚拟化、完全虚拟化、半虚拟化、硬件仿真和操作系统级虚拟化五大模式,其技术特点如表2-1所示。
表2-1 虚拟化技术的特点
从虚拟机实现所采用的抽象层次的角度对虚拟化系统进行分类,则当前的虚拟化解决方案可以分为以下几类:指令级虚拟化、硬件级虚拟化、操作系统级虚拟化、编程语言级虚拟化、程序库级虚拟化。
1.指令级虚拟化
指令级虚拟化通过纯软件方法,模拟出与实际的应用程序不同的指令集去执行,采用这种方法构造的虚拟机一般称为模拟器。一个典型的计算机系统由处理器、内存、总线、硬盘驱动器、定时器、多种I/O 设备组成。模拟器可将客户虚拟机发出的所有指令翻译成本地指令集,然后在真实的硬件上执行。指令级虚拟化系统的代表包括BOCHS和QEMU 等。
2.硬件级虚拟化
硬件级虚拟化与指令级虚拟化非常相似,其不同之处在于,这种类型的虚拟化所考虑的是一种特殊情况:客户执行环境和主机具有相同指令集的情况,并充分利用这一特点,让绝大多客户机指令,在主机上直接执行,从而大大提高了执行的速度。硬件级虚拟化是目前研究最广泛的虚拟化技术,相应的虚拟化系统也比较多,其中最具影响力的Xen、KVM、VMware等都属于硬件级的虚拟化。
3.操作系统级虚拟化(www.xing528.com)
一个应用的操作环境包括操作系统、用户函数库、文件系统、环境设置等。如果应用系统所处的这些环境能够保持不变,那么应用程序本身将无法分辨出其所处的环境与真实环境之间的差别。
操作系统级虚拟化技术的关键思想在于,操作系统之上的虚拟层按照每个虚拟机的要求为其生成一个运行在物理机器之上的操作系统副本,从而为每个虚拟机产生一个完好的操作环境,并且实现虚拟机与物理机器的隔离。操作系统级虚拟化的代表系统有Linux-VServer、Open VZ等。
4.编程语言级虚拟化
编程语言级虚拟化技术的主要思想是,在应用层次上创建一个和其他类型虚拟机行为方式类似的虚拟机,并支持一种新的自定义的指令集。这种类型的虚拟机使得用户在运行应用程序的时候就像在真实的物理机器上一样,并且不会对系统的安全造成影响。编程语言级虚拟化系统主要包括JVM 和Microsoft.NET CLI等。
5.程序库级虚拟化
应用程序的编写都是由一组用户级程序库调用系统API函数集来实现相应的功能。用户级程序库能够隐藏操作系统级的底层细节,从而降低应用程序的开发难度。API是与底层硬件无关、但是和操作系统密切相关的接口,API函数调用定义了操作系统的接口和接口参数。
应用程序级虚拟化在应用程序库和操作系统之间增加了一个虚拟层,用来模拟目标操作系统的API,从而为应用程序提供不同的API接口,使得应用程序不经修改就可以运行在不同的操作系统平台。典型例子有Cygwin和Wine等。
一般所指的虚拟化技术是按应用领域来分,主要包括服务器虚拟化技术、桌面虚拟化技术、存储虚拟化技术、网络虚拟化技术四大部分。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。