虚拟化技术是虚拟机得以实现的根本,服务器虚拟化技术逐渐成为人们关注的热点技术。
1、不同途径的虚拟化技术
根据两种常见的软件仿真虚拟化途径,可将虚拟化技术分为以下两种:完全虚拟化FV(Full-Vritralization)和半虚拟化PV(Para-Vritralization),这两种虚拟化技术主要以guest OS的硬件仿真程度做区分。
1)、完全虚拟化
FV是一般较常看到的作法,所有的guest OS完全不会看到实际的硬件为何,只能使用由Supervisor所提供的所有虚拟硬件
在FV的安装上,因为FV模式是以完全仿真的方式进行,所以CPU必须要特别将此功能加入到CPU的核心中,因此,CPU是有特殊需求的。在Intel与AMD中针对Virtual Machine所加入的功能名称不同,分别为Intel VT与AMD-V。
2)、半虚拟化
通过局部仿真的方式,让操作系统可以直接使用到硬件中的CPU、内存等,而不需要通过其他任何虚拟技术软件做仿真的操作虚拟机操作的时候,直接使用到底层的硬件,而不是每个OS都要通过
Hypervisor的接口,通过这种,性能上就可大为提高。
PV的安装,对CPU来说,没有特殊的要求,基本上都可以使用。
2、不同层次的虚拟化技术
根据不同层次的虚拟化方式,其中有ISA层次、硬件抽象层、操作系统层、Library API层,以及编程语言层的虚拟化技术。
1)、ISA层的虚拟化技术
该技术通常采用软件模拟指令集的方式实现。一个典型的计算机系统由处理器、内存、总线、硬盘控制器、时钟、各种I/O设备组成。ISA层的虚拟化软件的实现方式是截获客户操作系统发出的指令,并把它们“翻译”成Host平台上的可用指令进行执行(包括处理器内部指令和IO指令)。由于这种指令的模拟方式,ISA层的虚拟化技术可以完全模拟一台真实机器所能做的一切。这种实现方式的好处在于,分离了操作系统和硬件平台的紧绑定关系。
这种虚拟化技术存在一定的性能问题,很难有广泛的应用,但它也在某些方面有着重要的应用,如在非x86平台上运行Windows系统,进行新开发的操作系统的debug工作,进行老式x86系统的兼容性测试等。
这种技术的代表性系统有:Bochs、QEMU。
2)、硬件抽象层的虚拟化技术
这种技术利用客户系统环境和Host平台的相似性来减少理解客户系统指令的延迟。虚拟化软件进行从虚拟资源到物理资源的映射,并利用本地物理平台进行实际的计算。当虚拟系统访问关键的系统资源时,虚拟化软件接管其请求,并进行相应的处理。为了使这种机制能够有效地工作,虚拟机必须能够trap每条特权指令,并使得VMM(Virtual Machine Monitor)接管进行相关的处理。这是因为,在同一个物理平台上有多个客户系统存在,这些客户系统发出特权指令希望CPU进行处理。这时把这些指令trap到VMM进行处理,以免系统发生异常或冲突。此时,VMM模拟特权指令的执行,并返回处理结果给指定的客户虚拟系统,保证了各个客户虚拟系统的有效隔离。然而,x86平台并不是完全支持虚拟化的,因为某些x86特权指令在特权级不够的情况下执行,并不能方便地产生trap。对这一问题的解决方案有:一种是指令扫描结合动态指令修改的软件技术,有许多商业的虚拟化产品采用了这种方案;另一种方案是修改x86 CPU,使它支持虚拟化,也就是Intel的Vanderpool技术和AMD的Pacifica技术的目标。
硬件抽象层的虚拟化技术有着高度的客户虚拟系统的隔离性(包括客户虚拟系统之间,客户虚拟系统和Host系统之间)。这种隔离性使得在同一个物理平台上,可以同时运行不同类型的操作系统,而且它们的重启等操作不会互相影响。在用户看来,隔离性使得物理平台被划分成不同虚拟机器。由于
用户面对的是虚拟机器,用户需要更多的系统安装和配置工作。如果用户希望客户虚拟系统有和Host相同的操作系统,并只是想把多个应用系统进行分离,那么可以考虑采用操作系统层的虚拟化技术。
目前,大多数的商业服务器虚拟化产品,都是通过使用这种技术来实现高效、实用的虚拟化系统。此种虚拟化技术的代表产品是EMC公司的VMware,其他比较有影响力的产品还有:Microsoft的Virtual Server系列产品、由剑桥大学计算机实验室发起的开源虚拟机项目Xen、开源项目UML(User Mode Linux)等。
3)、操作系统层虚拟化技术
典型的应用程序环境包括:操作系统、用户函数库、文件系统、环境设置等。如果应用系统的这些周边环境保持不变,应用程序自身是无法区分是运行在物理系统内,还是运行在虚拟系统外。操作系统层的虚拟化技术的主要思想在于,在Host操作系统上动态复制操作系统环境,以此来创建虚拟系统环境。
4)、API层虚拟化技术
API层虚拟机的典型代表是开源项目Wine,它构造了一个Windows用户态应用程序和其它操作系统之间的适配层(Adapter Layer),当这些应用程序需要在其他操作系统下调用一个Win32 API函数时,Wine将把该调用转换成相应操作系统下对该函数的模拟实现。
Wine系统在整个运行环境中起到的作用可以从三个角度理解。
a、从Windows应用程序的角度看,Wine为其提供了Windows软件运行环境的模拟,不过这并不是对处理器指令的模拟,而是对Win32 API函数的模拟。
b、从Linux及其内核的角度看,Wine形成Linux内核与Windows应用程序之间的一个中间层。它一方面为Windows应用程序提供了一套完整的动态链接库(Dynamic Link Library,DLL),一方面将应用程序和动态链接库中对Windows的系统调用转换成具有相似语义的Linux的系统调用。
c、从Windows的动态连接库和服务进程的角度来看,Wine是Windows关键组件以模拟方式在Linux上实现的移植。
5)、编程语言级别的虚拟化技术
对于这个技术,我们最熟悉的就是Java虚拟机——JVM。Java程序被编译成由JVM可以识别的指令形式,称为Java Bytes Code。当代码被执行时,由JVM进行解释或利用Just-In-Time(JIT)编译器在本地机器上执行。类似的编程语言级别的虚拟化技术还有Microsoft .NET CLI和Perl 6的Parrot。
虽然有着多种层次的虚拟化技术,但目前各企业和厂商最为关注的是硬件抽象层的虚拟化技术,它也是目前最有应用潜力的虚拟化技术。
3、服务器虚拟化的硬件支持
2006年初,英特尔宣布了其初步完成的Vanderpool技术外部架构规范(EAS),并称该技术可以帮助改进未来的虚拟化解决方案。英特尔表示,将在今年把Vanderpool应用于安腾架构平台,同时还计划在台式机处理器和芯片组产品中采用该技术。
Vanderpool的核心思想是给x86 CPU的各种特权指令的执行,都增加可以进行trap的可能。Vanderpool技术使得CPU运行在两种不同的模式下,即VMX-root和VMX-non-root。这两种模式都支持0-3的4个特权级。客户虚拟系统运行在VMX-non-root模式,VMM运行在VMX-root模式。Vanderpool新定义了从VMX-root到VMX-non-root的VMentry和从VMX-non-root返回VMX-root的VMexit的操作。VMentry和VMexit都会重新load CR3,以便VMM和Guest OS有不同的地址空间。CPU在VMX-non-root下执行,而执行CPUID、mov CR3、RDMSR、WDMSR等指令会无条件地触发VMexit;而其他的指令、中断和异常是否触发Vmexit,则根据VMCS的内容进行判断。
VMentry会先加载客户系统状态区域的VMCS,然后进入VMX-non-root,并且立即引发中断。这样,VMM就可以通过对IDT的修改,在系统进入VMX-non-root的第一时间触发事件,以便模拟事件的传递。
VMexit会保存CPU状态到客户系统状态区域,并且加载Host状态区域的信息,然后返回VMM。所有的VMexit使用公共的进入VMM的Entry Point,并且每次VMexit都会提供引发VMexit的详细原因,以便VMM进行相应的处理。
AMD在虚拟化技术方面的Pacifica技术规范,是AMD计划用于其64位产品中的虚拟化技术。该技术将用于基于x86架构的服务器、台式机和笔记本电脑等系列产品。AMD表示,通过将Pacifica技术预先展示给虚拟化ISV和分析师团队,并通过持续的协作,最终可以在托管基于系统管理程序(hypervisor)的虚拟解决方案方面,向Pacifica用户提供更丰富的功能集和更高性能模型。
从技术角度看,不论是Vanderpool技术外部架构规范,还是Pacifica技术规范,它们强调的核心功能都是RISC处理器早就实现了分区功能,即基于该技术平台实现在独立分区中高效运行多个操作系统和应用程序,使一个计算机系统像多个虚拟系统一样运行。
分享到:
相关推荐
《深入JAVA虚拟机第二版》是一本深受Java开发者喜爱的经典著作,它详尽地剖析了Java虚拟机(JVM)的工作原理,为程序员提供了深入了解Java平台核心技术的机会。这本书结合了理论与实践,不仅讲解了JVM的内部机制,还...
### Linux虚拟机介绍与安装详解 #### 一、概述 在现代信息技术领域中,Linux操作系统以其高度的灵活性、稳定性和安全性而备受青睐。对于初学者来说,通过虚拟机的方式来学习和使用Linux是一种非常实用的方法。本文...
本文将详细介绍虚拟机桥接方法以及虚拟机存储管理的相关知识点,帮助读者更好地理解和应用这些技术。 #### 二、主机硬件要求 为了确保虚拟机能够稳定运行并发挥最佳性能,对主机硬件有一定的要求: 1. **硬盘**:...
第二版可能会详细介绍各种垃圾收集算法,如标记-清除、复制、标记-整理和分代收集等,以及如何调整GC参数以优化内存使用和减少停顿时间。此外,新生代、老年代、持久代的概念也会被详细解析。 此外,JVM的性能优化...
深入java虚拟机第二版 不是很清晰 但还能看 第1-4章介绍了java虚拟机的体系结构,包栈、堆,方法区、执行引擎等; 第5-20章深入介绍了java的内部细节,垃圾回收、java安全模型、java的连接模型和动态扩张机制,...
《Java虚拟机(第二版)》是一本深入探讨Java虚拟机(JVM)技术的经典著作。这本书详尽地阐述了JVM的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,对于Java开发者和系统架构师来说,是不...
### Java虚拟机(JVM)深度解析 #### 引言 Java虚拟机(JVM),作为Java技术的核心组件之一,是执行Java字节码的虚拟环境。本文将深入探讨JVM的基本概念、工作原理以及其在程序生命周期中的作用,帮助读者全面理解Java...
### Java虚拟机(JVM)介绍 #### 一、Java虚拟机的发展史与家族成员 Java虚拟机(JVM)是执行Java字节码的虚拟环境,它使得Java程序可以在不同的平台上运行,无需重新编译。自Java语言诞生以来,JVM经历了多个版本的...
《深入Java虚拟机第二版》是一本深度剖析Java虚拟机(JVM)的权威著作,其英文版以CHM(Microsoft Compiled HTML Help)格式呈现,为读者提供了方便的电子阅读体验。CHM文件是一种常见的帮助文档格式,它将HTML页面...
《Java虚拟机(第二版)》是一本深入探讨Java虚拟机(JVM)技术的权威著作,对于理解和优化Java应用程序的性能至关重要。JVM是Java平台的核心组成部分,它负责执行字节码,提供了跨平台的运行环境。这本书的第二版...
### KVM虚拟机安装介绍 #### 一、KVM虚拟机概述 KVM(Kernel-based Virtual Machine)是一种基于Linux内核的全虚拟化技术。它实际上只是Linux内核中的一个模块,本身并不能直接用于创建和管理虚拟机。为了实现完整...
《深入Java虚拟机(原书第二版清晰版)》这本书是为那些已经学习了Java编程语言,希望通过深入理解Java虚拟机(JVM)来进一步提升自己技术能力的Java程序员所准备的。本书详细介绍了JVM的内部工作机制,包括但不限于...
随着越来越多的第三方语言(Groovy、Scala、JRuby等)在Java虚拟机上运行,Java...《实战Java虚拟机——JVM故障诊断与性能优化》将通过200余示例详细介绍Java虚拟机中的各种参数配置、故障排查、性能监控以及性能优化。
本文将详细介绍苹果虚拟机的安装步骤,以及如何在虚拟机中安装Mac系统。首先,我们要了解虚拟机的概念:虚拟机是一种软件模拟的计算机环境,它允许在一台物理设备上运行多个独立的操作系统实例。 1. **选择虚拟机...
《深入Java虚拟机第二版》是探讨Java虚拟机(JVM)内部工作原理的经典之作,作者Bill Venners通过本书深入浅出地解析了Java虚拟机的体系结构和内部机制,为Java开发者提供了编写高效程序的基础理论支持。 Java...
二、虚拟机的组成部分 1. 虚拟机监控器(VMM,Virtual Machine Monitor):也称为hypervisor,是虚拟机的核心,负责管理和调度物理硬件资源,以及为每个虚拟机提供隔离环境。 2. 客户操作系统(Guest OS):在虚拟机...
本文将详细介绍KVM虚拟机网络环境中的一种常见配置方式——NAT模式,并通过具体的步骤指导读者如何进行设置。 #### 二、NAT模式概述 NAT(Network Address Translation)模式是KVM虚拟机中最常见的网络配置方式之一...