词条 | 虚拟化技术 |
释义 | 虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 虚拟化定义虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。 虚拟化技术也与目前VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。 纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下是通过VMM(Virtual Machine Monitor,虚拟机监视器)来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。(注意,大多数处理器和内存访问独立于VMM,只在发生特定事件时才会涉及VMM,如页面错误。)在纯软件虚拟化解决方案中,VMM在软件套件中的位置是传统意义上操作系统所处的位置,而 操作系统的位置是传统意义上应用程序所处的位置。这一额外的通信层需要进行二进制转换,以通过提供到物理资源(如处理器、内存、存储、显卡和网卡等)的接口,模拟硬件环境。这种转换必然会增加系统的复杂性。此外,客户操作系统的支持受到虚拟机环境的能力限制,这会阻碍特定技术的部署,如64位客户操作系统。在纯软件解决方案中,软件堆栈增加的复杂性意味着,这些环境难于管理,因而会加大确保系统可靠性和安全性的困难。而CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会很容易提高性能,相比软件的虚拟实现方式会很大程度上提高性能。虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。由于虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无需进行二进制转换,减少了相关的性能开销,极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。另外,在纯软件VMM中,目前缺少对64位客户操作系统的支持,而随着64位处理器的不断普及,这一严重缺点也日益突出。而CPU的虚拟化技术除支持广泛的传统操作系统之外,还支持 64位客户操作系统。虚拟化技术是一套解决方案。完整的情况需要CPU、主板芯片组、BIOS和软件的支持,例如VMM软件或者某些操作系统本身。即使只是CPU支持虚拟化技术,在配合VMM的软件情况下,也会比完全不支持虚拟化技术的系统有更好的性能。 两大CPU巨头Intel和AMD都想方设法在虚拟化领域中占得先机,但是AMD的虚拟化技术在时间上要比Intel落后几个月。Intel自2005年末开始便在其处理器产品线中推广应用Intel Virtualization Technology(Intel VT)虚拟化技术。目前,Intel已经发布了具有Intel VT虚拟化技术的一系列处理器产品,包括桌面平台的Pentium 4 6X2系列、Pentium D 9X0系列和Pentium EE 9XX系列,还有Core Duo系列和Core Solo系列中的部分产品,以及服务器/工作站平台上的Xeon LV系列、Xeon 5000系列、Xeon 5100系列、Xeon MP 7000系列以及Itanium 2 9000系 列;同时绝大多数的Intel下一代主流处理器,包括Merom核心移动处理器,Conroe核心桌面处理器,Woodcrest核心服务器处理器,以及基于Montecito核心的Itanium 2高端服务器处理器都将支持Intel VT虚拟化技术。而AMD方面也已经发布了支持AMD Virtualization Technology(AMD VT)虚拟化技术的一系列处理器产品,包括Socket S1接口的Turion 64 X2系列以及Socket AM2接口的Athlon 64 X2系列和Athlon 64 FX系列等等,并且绝大多数的AMD下一代主流处理器,包括即将发布的Socket F接口的Opteron都将支持AMD VT虚拟化技术。 虚拟机原理虚拟机是对真实计算环境的抽象和模拟,VMM 需要为每个虚拟机分配一套数据结构来管理它们状态,包括虚拟处理器的全套寄存器,物理内存的使用情况,虚拟设备的状态等等。VMM 调度虚拟机时,将其部分状态恢复到主机系统中。并非所有的状态都需要恢复,例如主机 CR3 寄存器中存放的是 VMM 设置的页表物理地址,而不是 Guest OS 设置的值。主机处理器直接运行 Guest OS 的机器指令,由于 Guest OS运行在低特权级别,当访问主机系统的特权状态(如写 GDT 寄存器)时,权限不足导致主机处理器产生异常,将运行权自动交还给 VMM。此外,外部中断的到来也会导致 VMM 的运行。VMM 可能需要先将 该虚拟机的当前状态写回到状态数据结构中,分析虚拟机被挂起的原因,然后代表 Guest OS 执行相应的特权操作。最简单的情况,如Guest OS 对 CR3 寄存器的修改,只需要更新虚拟机的状态数据结构即可。一般而言,大部分情况下,VMM 需要经过复杂的流程才能完成原本简单的操作。最后 VMM 将运行权还给 Guest OS,Guest OS 从上次被中断的地方继续执行,或处理 VMM “塞”入的虚拟中断和异常。这种经典的虚拟机运行方式被称为 Trap-And-Emulate,虚拟机对于 Guest OS 完全透明,Guest OS 不需要任何修改,但是 VMM 的设计会比较复杂,系统整体性能受到明显的损害。 虚拟化挑战确保 VMM 控制权x86 处理器有 4 个特权级别,Ring 0 ~ Ring 3,只有运行在 Ring 0 ~ 2 级时,处理器才可以访问特权资源或执行特权指令;运行在 Ring 0 级时,处理器可以访问所有的特权状态。x86 平台上的操作系统一般只使用 Ring 0 和 Ring 3 这两个级别,操作系统运行在 Ring 0 级,用户进程运行在 Ring 3 级。为了满足上面的第一个充分条件-资源控制,VMM 自己必须运行在 Ring 0 级,同时为了避免 Guest OS 控制系统资源,Guest OS 不得不降低自身的运行级别,运行在 Ring 1 或 Ring 3 级(Ring 2 不使用)。 特权级压缩(Ring Compression)。 VMM 使用分页或段限制的方式保护物理内存的访问,但是 64 位模式下段限制不起作用,而分页又不区分 Ring 0,1,2。为了统一和简化 VMM的设计,Guest OS 只能和 Guest 进程一样运行在 Ring 3 级。VMM 必须监视 Guest OS 对 GDT、IDT 等特权资源的设置,防止 Guest OS 运行在 Ring 0级,同时又要保护降级后的 Guest OS 不受 Guest 进程的主动攻击或无意破坏。 特权级别名(Ring Alias) 特权级别名是指 Guest OS 在虚拟机中运行的级别并不是它所期望的。VMM 必须保证 Guest OS 不能获知正在虚拟机中运行这一事实,否则可能打破等价性条件。例如,x86 处理器的特权级别存放在 CS 代码段寄存器内,Guest OS 可以使用非特权 push 指令将 CS 寄存器压栈,然后 pop 出来检查该值。又如,Guest OS 在低特权级别时读取特权寄存器 GDT、LDT、IDT 和 TR,并不发生异常,从而可能发现这些值与自己期望的不一样。为了解决这个挑战,VMM 可以使用动态二进制翻译的技术,例如预先把 “push %%cs” 指令替换,在栈上存放一个影子 CS 寄存器值;又如,可以把读取 GDT 寄存器的操作“sgdt dest”改为“movl fake_gdt,dest”。 地址空间压缩(Address Space Compression) 地址空间压缩是指 VMM 必须在Guest OS 的地址空间中保留一部分供其使用。例如,中断描述表寄存器(IDT Register)中存放的是中断描述表的线性地址,如果 Guest OS 运行过程中来了外部中断或触发处理器异常,必须保证运行权马上转移到 VMM 中,因此 VMM 需要将 Guest OS 的一部分线性地址空间映射成自己的中断描述表的主机物理地址。VMM 可以完全运行在 Guest OS 的地址空间中,也可以拥有独立的地址空间,后者的话,VMM 只占用 Guest OS 很少的地址空间,用于存放中断描述表和全局描述符表(GDT)等重要的特权状态。无论如何哪种情况,VMM 应该防止 Guest OS 直接读取和修改这部分地址空间。 Guest OS 缺页异常内存是一种非常重要的系统资源,VMM 必须全权管理,Guest OS 理解的物理地址只是客户机物理地址(Guest Physical Address),并不是最终的主机物理地址(Host Physical Address)。当 Guest OS 发生缺页异常时,VMM 需要知道缺页异常的原因,是 Guest 进程试图访问没有权限的地址,或是客户机线性地址(Guest Linear Address)尚未翻译成 Guest Physical Address,还是客户机物理地址尚未翻译成主机物理地址。一种可行的解决方法是 VMM 为 Guest OS 的每个进程的页表构造一个影子页表,维护 Guest Linear Address 到 Host Physical Address 的映射,主机 CR3 寄存器存放这个影子页表的物理内存地址。VMM 同时维护一个 Guest OS 全局的 Guest Physical Address 到 Host Physical Address 的映射表。发生缺页异常的地址总是Guest Linear Address,VMM 先去 Guest OS 中的页表检查原因,如果页表项已经建立,即对应的Guest Physical Address 存在,说明尚未建立到 Host Physical Address的映射,那么 VMM 分配一页物理内存,将影子页表和映射表更新;否则,VMM 返回到 Guest OS,由 Guest OS 自己处理该异常。 Guest OS 系统调用系统调用是操作系统提供给用户的服务例程,使用非常频繁。最新的操作系统一般使用 SYSENTER/SYSEXIT 指令对来实现快速系统调用。SYSENTER 指令通过IA32_SYSENTER_CS,IA32_SYSENTER_EIP 和 IA32_SYSENTER_ESP 这 3 个 MSR(Model Specific Register)寄存器直接转到 Ring 0级;而 SYSEXIT 指令不在 Ring 0 级执行的话将触发异常。因此,如果 VMM 只能采取 Trap-And-Emulate 的方式处理这 2 条指令的话,整体性能将会受到极大损害。 转发虚拟的中断和异常所有的外部中断和主机处理器的异常直接由VMM 接管,VMM 构造必需的虚拟中断和异常,然后转发给 Guest OS。VMM 需要模拟硬件和操作系统对中断和异常的完整处理流程,例如 VMM 先要在 Guest OS 当前的内核栈上压入一些信息,然后找到 Guest OS 相应处理例程的地址,并跳转过去。VMM 必须对不同的 Guest OS 的内部工作流程比较清楚,这增加了 VMM 的实现难度。同时,Guest OS 可能频繁地屏蔽中断和启用中断,这两个操作访问特权寄存器 EFLAGS,必须由 VMM 模拟完成,性能因此会受到损害。Guest OS 重新启用中断时,VMM 需要及时地获知这一情况,并将积累的虚拟中断转发。 Guest OS 访问特权资源Guest OS对特权资源的每次访问都会触发处理器异常,然后由 VMM 模拟执行,如果访问过于频繁,则系统整体性能将会受到极大损害。比如对中断的屏蔽和启用,cli(Clear Interrupts)指令在 Pentium 4 处理器上需要花费 60 个时钟周期(cycle)。又如,处理器本地高级可编程中断处理器(Local APIC)上有一个操作系统可修改的任务优先级寄存器(Task-Priority Register),IO-APIC 将外部中断转发到 TPR 值最低的处理器上(期望该处理器正在执行低优先级的线程),从而优化中断的处理。TPR 是一个特权寄存器,某些操作系统会频繁设置(Linux Kernel只在初始化阶段为每个处理器的 TPR 设置相同的值)。 软件 VMM 所遇到的以上挑战从本质上来说是因为 Guest OS 无法运行在它所期望的最高特权级,传统的 Trap-And-Emulate 处理方式虽然以透明的方式基本解决上述挑战,但是带来极大的设计复杂性和性能下降。当前比较先进的虚拟化软件结合使用二进制翻译和超虚拟化的技术,核心思想是动态或静态地改变 Guest OS 对特权状态访问的操作,尽量减少产生不必要的硬件异常,同时简化 VMM 的设计。 完全虚拟化最流行的虚拟化方法使用名为hypervisor的一种软件,在虚拟服务器和底层硬件之间建立一个抽象层。VMware和微软的Virtual PC是代表该方法的两个商用产品,而基于核心的虚拟机(KVM)是面向Linux系统的开源产品。 hypervisor可以捕获CPU指令,为指令访问硬件控制器和外设充当中介。因而,完全虚拟化技术几乎能让任何一款操作系统不用改动就能安装到虚拟服务器上,而它们不知道自己运行在虚拟化环境下。主要缺点是,hypervisor给处理器带来开销。 在完全虚拟化的环境下,hypervisor运行在裸硬件上,充当主机操作系统;而由hypervisor管理的虚拟服务器运行客户端操作系统(guest OS)。 如下图所示。 准虚拟化完全虚拟化是处理器密集型技术,因为它要求hypervisor管理各个虚拟服务器,并让它们彼此独立。减轻这种负担的一种方法就是,改动客户操作系统,让它以为自己运行在虚拟环境下,能够与hypervisor协同工作。这种方法就叫准虚拟化(para-virtualization)。 Xen是开源准虚拟化技术的一个例子。操作系统作为虚拟服务器在Xen hypervisor上运行之前,它必须在核心层面进行某些改变。因此,Xen适用于BSD、Linux、Solaris及其他开源操作系统,但不适合对像Windows这些专有的操作系统进行虚拟化处理,因为它们无法改动。 准虚拟化技术的优点是性能高。经过准虚拟化处理的服务器可与hypervisor协同工作,其响应能力几乎不亚于未经过虚拟化处理的服务器。准虚拟化与完全虚拟化相比优点明显,以至于微软和VMware都在开发这项技术,以完善各自的产品。 操作系统层虚拟化实现虚拟化还有一个方法,那就是在操作系统层面增添虚拟服务器功能。Solaris Container就是这方面的一个例子,Virtuozzo/OpenVZ是面向Linux的软件方案。 就操作系统层的虚拟化而言,没有独立的hypervisor层。相反,主机操作系统本身就负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器彼此独立。一个明显的区别是,如果使用操作系统层虚拟化,所有虚拟服务器必须运行同一操作系统(不过每个实例有各自的应用程序和用户账户)。 虽然操作系统层虚拟化的灵活性比较差,但本机速度性能比较高。此外,由于架构在所有虚拟服务器上使用单一、标准的操作系统,管理起来比异构环境要容易。 纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下是通过VMM(Virtual Machine Monitor,虚拟机监视器)来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。(注意,大多数处理器和内存访问独立于VMM,只在发生特定事件时才会涉及VMM,如页面错误。)在纯软件虚拟化解决方案中,VMM在软件套件中的位置是传统意义上操作系统所处的位置,而操作系统的位置是传统意义上应用程序所处的位置。这一额外的通信层需要进行二进制转换,以通过提供到物理资源(如处理器、内存、存储、显卡和网卡等)的接口,模拟硬件环境。这种转换必然会增加系统的复杂性。此外,客户操作系统的支持受到虚拟机环境的能力限制,这会阻碍特定技术的部署,如64位客户操作系统。在纯软件解决方案中,软件堆栈增加的复杂性意味着,这些环境难于管理,因而会加大确保系统可靠性和安全性的困难。 而CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会很容易提高性能,相比软件的虚拟实现方式会很大程度上提高性能。虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。由于虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无需进行二进制转换,减少了相关的性能开销,极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。另外,在纯软件VMM中,目前缺少对64位客户操作系统的支持,而随着64位处理器的不断普及,这一严重缺点也日益突出。而CPU的虚拟化技术除支持广泛的传统操作系统之外,还支持64位客户操作系统。 两大CPU巨头Intel和AMD都想方设法在虚拟化领域中占得先机,但是AMD的虚拟化技术在时间上要比Intel落后几个月。Intel自2005年末开始便在其处理器产品线中推广应用Intel Virtualization Technology(Intel VT)虚拟化技术。目前,Intel已经发布了具有Intel VT虚拟化技术的一系列处理器产品,包括桌面平台的Pentium 4 6X2系列、Pentium D 9X0系列和Pentium EE 9XX系列,以及服务器/工作站平台上的基于Paxville核心的Xeon系列;同时绝大多数的Intel下一代主流处理器,包括Merom核心移动处理器,Conroe核心桌面处理器,Woodcrest核心服务器处理器,以及基于Montecito核心的Itanium 2高端服务器处理器都将支持Intel VT虚拟化技术。而AMD的具有代号为“Pacific”虚拟化技术的CPU不久也会发布。 相关:虚拟技术 Intel虚拟化技术当前非常热门的Virtualization虚拟化技术的出现和应用其实已经有数十年的历史了,在早期,这个技术主要应用在服务器以及大型主机上面,现在,随着PC性能的不断增长,Virtualization也 开始逐渐在x86架构上流行起来。虚拟化可以将IT环境改造成为更加强大、更具弹性、更富有活力的架构。通过把多个操作系统整合到一台高性能服务器上,最大化利用硬件平台的所有资源,用更少的投入实现更多的应用,还可以简化IT架构,降低管理资源的难度,避免IT架构的非必要扩张。客户虚拟机的真正硬件无关性还可以实现虚拟机的运行时迁移,可以实现真正的不间断运行,从而最大化保持业务的持续性,而不用为购买超高可用性平台而付出高昂的代价。虚拟化技术和Sun上的虚拟化技术(CPU分区)比起来,x86上的虚拟化要落后不少的,然而确实在不断进步着,在数年前,x86上还没有什么硬件支持,甚至连指令集都不是为虚拟化而设计,这时主要靠完全的软件来实现虚拟化,当时的代表是VMware的产品,以及尚未被Microsoft收购Connectix开发的Virtual PC,在服务器市场上应用的主要是VMware的产品,包括GSX Server和稍后的ESX Server,这些软件虚拟化产品在关键指令上都采用了二进制模拟/翻译的方法,开销显得比较大,后期出现了Para-Virtualization部分虚拟化技术,避免了一些二进制转换,性能得到了提升,不过仍然具有隔离性的问题。虚拟化技术今天,虚拟化技术的各方面都有了进步,虚拟化也从纯软件逐深入到处理器级虚拟化,再到平台级虚拟化乃至输入/输出级虚拟化,代表性技术就是Intel Virtualization Technology for Directed I/O,简写为Intel VT-d,在介绍这个Intel VT-d之前,我们先来看看x86硬件虚拟化的第一步:处理器辅助虚拟化技术,也就是Intel Virtualization Technology,分为对应Itanium平台的VT-i和对应x86平台的VT-x两个版本。AMD公司也有对应的技术AMD-V,用于x86平台。我们介绍的是x86平台上的VT-x技术,VT-i技术原理上略为相近。纯软件虚拟化主要的问题是性能和隔离性。Full Virtualization完全虚拟化技 术可以提供较好的客户操作系统独立性,不过其性能不高,在不同的应用下,可以消耗掉主机10%~30%的资源。而OS Virtualization可以提供良好的性能,然而各个客户操作系统之间的独立性并不强。无论是何种软件方法,隔离性都是由Hypervisor软件提供的,过多的隔离必然会导致性能的下降。这些问题主要跟x86设计时就没有考虑虚拟化有关。我们先来看看x86处理器的Privilege特权等级设计。虚拟化技术x86架构为了保护指令的运行,提供了指令的4个不同Privilege特权级别,术语称为Ring,从Ring 0~Ring 3。Ring 0的优先级最高,Ring 3最低。各个级别对可以运行的指令有所限制,例如,GDT,IDT,LDT,TSS等这些指令就只能运行于Privilege 0,也就是Ring 0。要注意Ring/Privilege级别和我们通常认知的进程在操作系统中的优先级并不同。 操作系统必须要运行一些Privilege 0的特权指令,因此Ring 0是被用于运行操作系统内核,Ring 1和Ring 2是用于操作系统服务,Ring 3则是用于应用程序。然而实际上并没有必要用完4个不同的等级,一般的操作系统实现都仅仅使用了两个等级,即Ring 0和Ring 3,如图所示:虚拟化技术也就是说,在一个常规的x86操作系统中,系统内核必须运行于Ring 0,而VMM软件以及其管理下的Guest OS却不能运行于Ring 0——因为那样就无法对所有虚拟机进行有效的管理,就像以往的协同式多任务操作系统(如,Windows 3.1)无法保证系统的稳健运行一样。在没有处理器辅助的虚拟化情况下,挑战就是采用Ring 0之外的等级来运行VMM (Virtual Machine Monitor,虚拟机监视器)或Hypervisor,以及Guest OS。 现在流行的解决方法是Ring Deprivileging(暂时译为特权等级下降),并具有两种选择:客户OS运行于Privilege 1(0/1/3模型),或者Privilege 3(0/3/3模型)。无论是哪一种模型,客户OS都无法运行于Privilege 0,这样,如GDT,IDT,LDT,TSS这些特权指令就必须通过模拟的方式来运行,这会带来很明显的性能问题。特别是在负荷沉重、这些指令被大量执行的时候。同时,这些特权指令是真正的“特权”,隔离不当可以严重威胁到其他客户OS,甚 至主机OS。Ring Deprivileging技术使用IA32架构的Segment Limit(限制分段)和Paging(分页)来隔离VMM和Guest OS,不幸的是EM64T的64bit模式并不支持Segment Limit模式,要想运行64bit操作系统,就必须使用Paging模式。对于虚拟化而言,使用Paging模式的一个致命之处是它不区分Privileg 0/1/2模式,因此客户机运行于Privileg 3就成为了必然(0/3/3模型),这样Paging模式才可以将主机OS和客户OS隔离开来,然而在同一个Privileg模式下的不同应用程序(如,不同的虚拟机)是无法受到Privileg机构保护的,这就是目前IA32带来的隔离性问题,这个问题被称为Ring Compression。IA32不支持VT,就无法虚拟64-bit客户操作系统这个问题的实际表现是:VMware在不支持Intel VT的IA32架构CPU上无法虚拟64-bit客户操作系统,因为无法在客户OS之间安全地隔离。作为一个芯片辅助(Chip-Assisted)的虚拟化技术,VT可以同时提升虚拟化效率和虚拟机的安全性,下面我们就来看看Intel VT带来了什么架构上的变迁。我们谈论的主要是IA32上的VT技术,一般称之为VT-x,而在Itanium平台上的VT技术,被称之为VT-i。 VT-x将IA32的CU操作扩展为两个forms(窗体):VMX root operation(根虚拟化操作)和VMX non-root operation(非根虚拟化操作),VMX root operation设计来供给VMM/Hypervisor使用,其行为跟传统的IA32并无特别不同,而VMX non-root operation则是另一个处在VMM控制之下的IA32环境。所有的forms都能支持所有的四个Privileges levels,这样在VMX non-root operation环境下运行的虚拟机就能完全地利用Privilege 0等级。 两个世界:VMX non-root和VMX root和一些文章认为的很不相同,VT同时为VMM和Guest OS提供了所有的Privilege运行等级,而不是只让它们分别占据一个等级:因为VMM和Guest OS运行于不同的两个forms。 由此,GDT、IDT、LDT、TSS等这些指令就能正常地运行于虚拟机内部了,而在以往,这些特权指令需要模拟运行。而VMM也能从模拟运行特权指令当中解放出来,这样既能解决Ring Aliasing问题(软件运行的实际Ring与设计运行的Ring不相同带来的问题),又能解决Ring Compression问题,从而大大地提升运行效率。Ring Compression问题的解决,也就解决了64bit客户操作系统的运行问题。 为了建立这种两个虚拟化窗体的架构,VT-x设计了一个Virtual-Machine Control Structure(VMCS,虚拟机控制结构)的数据结构,包括了Guest-State Area(客户状态区)和Host-State Area(主机状态区),用来保存虚拟机以及主机的各种状态参数,并提供了VM entry和VM exit两种操作在虚拟机与VMM之间切换,用户可以通过在VMCS的VM-execution control fields里面指定在执行何种指令/发生何种事件的时候,VMX non-root operation环境下的虚拟机就执行VM exit,从而让VMM获得控制权,因此VT-x解决了虚拟机的隔离问题,又解决了性能问题。 可以看到,Inter VT的出现,可以解决了重要的虚拟处理器架构问题,让纯软件虚拟化解决方案的性能问题得以大大缓解。然而要做的事情还有很多。 对于服务器而言,很重要的一个组成部分就I/O,CPU的计算能力提升虽然可以更快地处理数据,但是前提是数据能够顺畅的到达CPU,因此,无论是存储,还是网络,以及图形卡、内存等,I/O能力都是企业级架构的一个重要部分。为此,人们不但在传输带宽上投资(比如从百兆以太网到千兆以太网再到万兆以太网),还在各种系统和架构上进行了大量的投入(比如吞吐量更高的RAID系列、多层数据中心)。 在虚拟化技术中,随着整体处理器资源的利用效率的提升,对数据I/O也提出了更高的要求。 VMM虚拟机管理器必须提供I/O虚拟化来支持处理来自多个客户机的I/O请求,当前的虚拟化技术采用下列的方式来处理I/O虚拟化。 虚拟化技术模拟I/O设备:VMM对客户机摸拟一个I/O设备,通过完全模拟设备的功能,客户机可以使用对应真实的驱动程序,这个方式可以提供完美的兼容性(而不管这个设备事实上存不存在),但是显然这种模拟会影响到性能。作为例子,各种虚拟机在使用软盘映像提供虚拟软驱的时候,就运行在这样的方式,以及Virtual PC的模拟的真实的S3 Virge 3D显卡,VMware系列模拟的Sound Blaster 16声卡,都属于这种方式。 虚拟化技术额外软件界面:这个模型比较像I/O模拟模型,VMM软件将提供一系列直通的设备接口给虚拟机,从而提升了虚拟化效率,这有点像Windows操作系统的DirectX技术,从而提供比I/O模拟模型更好的性能,当然兼容性有所降低,例如VMware模拟的VMware显卡就能提供不错的显示速度,不过不能完全支持DirectDraw技术,Direct3D技术就更不用想了。相似的还有VMware模拟的千兆网卡,等等,这些品牌完全虚拟的设备(例如,VMware牌显卡,VMware牌网卡)需要使用特制的驱动程序部分直接地和主机、硬件通信,比起以前完全模拟的通过虚拟机内的驱动程序访问虚拟机的十兆百兆网卡,可以提供更高的吞吐量。 现在的I/O设备虚拟化主要是采用模拟方式或者软件接口方式,因此性能上很容易成为瓶颈——毕竟传统的机器上,I/O设备都很容易成为瓶颈,因此Intel就适时提出了Intel Virtualization Technology for Directed I/O,简称为Intel VT-d。 I/O虚拟化的关键在于解决I/O设备与虚拟机数据交换的问题,而这部分主要相关的是DMA直接内存存取,以及IRQ中断请求,只要解决好这两个方面的隔离、保护以及性能问题,就是成功的I/O虚拟化。 虚拟化技术和处理器上的Intel VT-i和VT-x一样,Intel VT-d技术是一种基于North Bridge北桥芯片(或者按照较新的说法:MCH)的硬件辅助虚拟化技术,通过在北桥中内置提供DMA虚拟化和IRQ虚拟化硬件,实现了新型的I/O虚拟化方式,Intel VT-d能够在虚拟环境中大大地提升 I/O 的可靠性、灵活性与性能。 传统的IOMMUs(I/O memory management units,I/O内存管理单元)提供了一种集中的方式管理所有的DMA——除了传统的内部DMA,还包括如AGP GART、TPT、RDMA over TCP/IP等这些特别的DMA,它通过在内存地址范围来区别设备,因此容易实现,却不容易实现DMA隔离,因此VT-d通过更新设计的IOMMU架构,实现了多个DMA保护区域的存在,最终实现了DMA虚拟化。这个技术也叫做DMA Remapping。 虚拟化技术I/O设备会产生非常多的中断请求,I/O虚拟化必须正确地分离这些请求,并路由到不同的虚拟机上。传统设备的中断请求可以具有两种方式:一种将通过I/O中断控制器路由,一种是通过DMA写请求直接发送出去的MSI(message signaled interrupts,消息中断),由于需要在DMA请求内嵌入目标内存地址,因此这个架构须要完全访问所有的内存地址,并不能实现中断隔离。 VT-d实现的中断重映射(interrupt-remapping)架构通过重新定义MSI的格式来解决这个问题,新的MSI仍然是一个DMA写请求的形式,不过并不嵌入目标内存地址,取而代之的是一个消息ID,通过维护一个表结构,硬件可以通过不同的消息ID辨认不同的虚拟机区域。VT-d实现的中断重映射可以支持所有的I/O源,包括IOAPICs,以及所有的中断类型,如通常的MSI以及扩展的MSI-X。 VT-d进行的改动还有很多,如硬件缓冲、地址翻译等,通过这些种种措施,VT-d实现了北桥芯片级别的I/O设备虚拟化。VT-d最终体现到虚拟化模型上的就是新增加了两种设备虚拟化方式: 左边是传统的I/O模拟虚拟化,右边是直接I/O设备分配 直接I/O设备分配:虚拟机直接分配物理I/O设备给虚拟机,这个模型下,虚拟机内部的驱动程序直接和硬件设备直接通信,只需要经过少量,或者不经过VMM的管理。为了系统的健壮性,需要硬件的虚拟化支持,以隔离和保护硬件资源只给指定的虚拟机使用,硬件同时还需要具备多个I/O容器分区来同时为多个虚拟机服务,这个模型几乎完全消除了在VMM中运行驱动程序的需求。例如CPU,虽然CPU不算是通常意义的I/O设备——不过它确实就是通过这种方式分配给虚拟机,当然CPU的资源还处在VMM的管理之下。 I/O设备共享:这个模型是I/O分配模型的一个扩展,对硬件具有很高的要求,需要设备支持多个功能接口,每个接口可以单独分配给一个虚拟机,这个模型无疑可以提供非常高的虚拟化性能表现。 运用VT-d技术,虚拟机得以使用直接I/O设备分配方式或者I/O设备共享方式来代替传统的设备模拟/额外设备接口方式,从而大大提升了虚拟化的I/O性能。 根据资料表明,不日发布的Stoakley平台和Caneland平台上将包含VT-d功能,Stoakley平台是现在的Bensley的下一代产品,用于双路Xeon处理器,而Caneland则是Truland的继任者,用于四路Xeon处理器,这些芯片组都能支持最新的45nm Penryn处理器。 虚拟化技术从Intel虚拟化技术发展路线图来看,虚拟化无疑是从处理器逐渐扩展到其他设备的,从VT-i/VT-x到VT-d就非常体现了这个过程,对于关注I/O性能的企业级应用而言,完成了处理器的虚拟化和I/O的虚拟化,整个平台的虚拟化就接近完成了,因此在未来,Intel将会持续地开发VT-d技术,将各种I/O设备中加入虚拟化特性,从而提供一个强大的虚拟化基础架构。 AMD虚拟化技术简言之,AMD Virtualization技术是一项基于硬件的技术,该技术支持虚拟软件在一台基于AMD皓龙处理器的物理服务器上运行多个操作系统和应用,有助于服务器实现更高的效率和利用率。你无需再采用“一个操作系统、一个应用和一台服务器”这种运行模式。AMD的Virtualization技术使你能更好地利用自己的资源,你的服务器和工作站将变得更加高效,数据中心的运转也更加有效。例如,当今的服务器在以不足15%的容量运行时,其能耗和散热仍保持在24×7的水平。AMD Virtualization技术具有快速虚拟化索引的功能,这就意味着AMD四核皓龙处理器能够简化数据中心,实现更高的利用率。 AMD的片内安全和虚拟技术代号分别称作Presidio和Pacifica,据其官员表示将出现在明年的Opteron处理器中。“每个人都预见到虚拟和安全技术能解决到数据中心的某些问题,”AMD的微处理器业务部总经理Marty Seyer说。 在安全方面,Presidio将利用到微软即将推出的Windows Vista中某些功能。但AMD更吸引人的一项举措是让其内存控制器更“虚拟智能化”——让芯片在一台虚拟机的不同虚拟地址之间建起一道坚固的壁垒。另外,这样还能让Presidio阻止某些黑客攻击。这类攻击通常会强迫机器借某张CD或某个分区上的操作系统启动并使用特别工具读取机器内存中的内容。 AMD称Presidio会不断改进以包含其他保护技术,例如加固键鼠等输入设备与操作系统之间通讯通道等。由于这种保护技术需要操作系统的帮助,微软为此已经计划为Vista添加多种类型的安全技术。 AMD的官员还表示将在明年的处理器中添加对信用平台模块(Trusted Platform Module) 1.2等Windows机器以外技术的支持。事实上,AMD正和开放信任运算机构合作开发Linux平台上的可信赖运算标准,预计集成TPM的服务器将在2007年上市。 至于用于减轻VMware等虚拟软件部分工作负担的Pacifica技术,AMD称也会不断改善并最终包含输入/输出虚拟技术。AMD已经开始这项Xen计划的研究工作,不过他们不愿透露相应产品何时上市。 AMD的Presidio和Pacifica技术和Intel的虚拟技术及"LaGrande"安全技术十分相似。虽然Intel一直称到明年首季才会向系统厂商推广使用新的双核奔腾D处理器"resler",但其实他们已经开始供货部分集成虚拟技术的奔腾四处理器,而LaGrande安全功能也会在明年出现于Intel处理器中。 比较值得我们关注的应该是Pacifica虚拟技术,这将可以大大提高台式处理器的运行能力。Pacifica技术最突出的地方在于对内存控制器的改进方面。“Pacifica”通过Direct Connect Architecture(直接互连架构)和在处理器和内存控制器中引入一个新模型和功能来提高CPU的虚拟应用。 与过去的方法来进行虚拟应用不同,这项新的技术能够减少程序的复杂性,提高虚拟系统的安全性,并通过兼容现有的虚拟系统管理软件来减少花费在虚拟管理系统上的费用。例如,用户能在一部机器上轻易地创建多个独立且互相隔离的分区,从而减少了分区之间病毒传播的危险。不过,AMD在虚拟化技术方面仍比Intel慢了一步。 AMD表示其IO虚拟化技术规范已经成型,且技术授权完全免费,并将鼓励软硬件厂商采纳该技术并集成进PC中。 AMD AM2处理器 目前AMD已经和VMware、Xensource以及微软等公司结盟推广其虚拟化技术。 AMD AM2接口 AMD的虚拟化技术之前的开发代号为Pacifica,这种技术将在AMD今年的64位CPU核心逻辑以及芯片组两个层面得以实现。 项目 数据 中央处理器(CPU) CPU 类型 DualCore AMD Athlon 64 X2 Black Edition,2600 MHz (13 x 200) 5000+ CPU 别名 Brisbane CPU 步进 BH-G2 指令集 x86,x86-64,MMX,3DNow!,SSE,SSE2,SSE3 原始时钟频率 2600 MHz CPU 最低/最高倍频 4x / 25x Engineering Sample 否 L1 代码缓存 64 KB per core (Parity) L1 数据缓存 64 KB per core (ECC) L2 缓存 512 KB per core (On-Die,ECC,Full-Speed) Multi CPU 主板 ID OEM00000 PROD00000000 CPU #1 AMD Athlon(tm) 64 X2 Dual Core Processor 5000+,2812 MHz CPU #2 AMD Athlon(tm) 64 X2 Dual Core Processor 5000+,2812 MHz CPU 物理信息 封装类型 940 Pin uOPGA 封装大小 4.00 cm x 4.00 cm 晶体管数量 154 百万 工艺技术 10Mi,65 nm,CMOS,Cu,DSL SOI 核心芯片大小 126 mm2 核心工作电压 1.100 - 1.375 V 输入/输出接口电压 1.2 V + 2.5 V 最大功耗 65 - 76 W (取决于时钟频率) CPU 制造商 公司名称 Advanced Micro Devices,Inc. CPU 使用率 CPU 1/核心 1 1 % CPU 1/核心 2 0 % 倍频在CPU-Z里和优化大师里测出都为13,我在BIOS里设置的是14怎么不对啊 我的电脑右击属性里主频显示的也是2.81G 还有就是外频和倍频设多少合适 主板名称 Biostar TF570 SLI A2+ 电脑的超频就是通过人为的方式将CPU、显卡等硬件的工作频率提高,让它们在高于其额定的频率状态下稳定工作。以Intel P4C 2.4GHz的CPU为例,它的额定工作频率是2.4GHz,如果将工作频率提高到2.6GHz,系统仍然可以稳定运行,那这次超频就成功了。 CPU超频的主要目的是为了提高CPU的工作频率,也就是CPU的主频。而CPU的主频又是外频和倍频的乘积。例如一块CPU的外频为100MHz,倍频为8.5,可以计算得到它的主频=外频×倍频=100MHz×8.5 = 850MHz。 提升CPU的主频可以通过改变CPU的倍频或者外频来实现。但如果使用的是Intel CPU,你尽可以忽略倍频,因为IntelCPU使用了特殊的制造工艺来阻止修改倍频。AMD的CPU可以修改倍频,但修改倍频对CPU性能的提升不如外频好。 而外频的速度通常与前端总线、内存的速度紧密关联。因此当你提升了CPU外频之后,CPU、系统和内存的性能也同时提升了。 CPU超频方式CPU超频主要有两种方式: 一个是硬件设置,一个是软件设置。其中硬件设置比较常用,它又分为跳线设置和BIOS设置两种。 1.跳线设置超频 早期的主板多数采用了跳线或DIP开关设定的方式来进行超频。在这些跳线和DIP开关的附近,主板上往往印有一些表格,记载的就是跳线和DIP开关组合定义的功能。在关机状态下,你就可以按照表格中的频率进行设定。重新开机后,如果电脑正常启动并可稳定运行就说明我们的超频成功了。 比如一款配合赛扬1.7GHz使用的Intel 845D芯片组主板,它就采用了跳线超频的方式。在电感线圈的下面,我们可以看到跳线的说明表格,当跳线设定为1-2的方式时外频为100MHz,而改成2-3的方式时,外频就提升到了133MHz。而赛扬1.7GHz的默认外频就是100MHz,我们只要将外频提升为133MHz,原有的赛扬1.7GHz就会超频到2.2GHz上工作,是不是很简单呢:)。 另一块配合AMD CPU使用的VIA KT266芯片组主板,采用了DIP开关设定的方式来设定CPU的倍频。多数AMD的倍频都没有锁定,所以可以通过修改倍频来进行超频。这是一个五组的DIP开关,通过各序号开关的不同通断状态可以组合形成十几种模式。在DIP开关的右上方印有说明表,说明了DIP开关在不同的组合方式下所带来不同频率的改变。 例如我们对一块AMD 1800+进行超频,首先要知道,Athlon XP 1800+的主频等于133MHz外频×11.5倍频。我们只要将倍频提高到12.5,CPU主频就成为133MHz×12.5≈1.6GHz,相当于Athlon XP 2000+了。如果我们将倍频提高到13.5时,CPU主频成为1.8GHz,也就将Athlon XP 1800+超频成为了Athlon XP2200+,简单的操作换来了性能很大的提升,很有趣吧。 2.BIOS设置超频 现在主流主板基本上都放弃了跳线设定和DIP开关的设定方式更改CPU倍频或外频,而是使用更方便的BIOS设置。 例如升技(Abit)的SoftMenu III和磐正(EPOX)的PowerBIOS等都属于BIOS超频的方式,在CPU参数设定中就可以进行CPU的倍频、外频的设定。如果遇到超频后电脑无法正常启动的状况,只要关机并按住INS或HOME键,重新开机,电脑会自动恢复为CPU默认的工作状态,所以还是在BIOS中超频比较好。 这里就以升技NF7主板和Athlon XP 1800+ CPU的组合方案来实现这次超频实战。目前市场上BIOS的品牌主要有两种,一种是PHOENIX-Award BIOS,另一种是AMI BIOS,这里以Award BIOS为例。 首先启动电脑,按DEL键进入主板的BIOS设定界面。从BIOS中选择Soft Menu III Setup,这便是升技主板的SoftMenu超频功能。 进入该功能后,我们可以看到系统自动识别CPU为1800+。我们要在此处回车,将默认识别的型号改为User Define(手动设定)模式。设定为手动模式之后,原有灰色不可选的CPU外频和倍频现在就变成了可选的状态。 如果你需要使用提升外频来超频的话,就在External Clock:133MHz这里回车。这里有很多外频可供调节,你可以把它调到150MHz或更高的频率选项上。由于升高外频会使系统总线频率提高,影响其它设备工作的稳定性,因此一定要采用锁定PCI频率的办法。 Multiplier Factor一项便是调节CPU倍频的地方,回车后进入选项区,可以根据CPU的实际情况来选择倍频,例如12.5、13.5或更高的倍频。 菜鸟:如果CPU超频后系统无法正常启动或工作不稳定,我听说可以通过提高CPU的核心电压来解决,有这个道理吗? 阿萌:对啊。因为CPU超频后,功耗也就随之提高。如果供应电流还保持不变,有些CPU就会因功耗不足而导致无法正常稳定的工作。而提升了电压之后,CPU就获得了更多的动力,使超频变得更容易成功和稳定。 在BIOS中可以设置和调节CPU的核心电压(如图7)。正常的情况下可以选择Default(默认)状态。如果CPU超频后系统不稳定,就可以给CPU核心加电压。但是加电压的副作用很大,首先CPU发热量会增大,其次电压加得过高很容易烧毁CPU,所以加电压时一定要慎重,一般以0.025V、0.05V或者0.1V步进向上加就可以了。 3.用软件实现超频 顾名思义,就是通过软件来超频。这种超频更简单,它的特点是设定的频率在关机或重新启动电脑后会复原,菜鸟如果不敢一次实现硬件设置超频,可以先用软件超频试验一下超频效果。最常见的超频软件包括SoftFSB和各主板厂商自己开发的软件。它们原理都大同小异,都是通过控制时钟发生器的频率来达到超频的目的。 SoftFSB是一款比较通用的软件,它可以支持几十种时钟发生器。只要按主板上采用的时钟发生器型号进行选择后,点击GET FSB获得时钟发生器的控制权,之后就可以通过频率拉杆来进行超频的设定了,选定之后按下保存就可以让CPU按新设定的频率开始工作了。不过软件超频的缺点就是当你设定的频率让CPU无法承受的时候,在你点击保存的那一刹那导致死机或系统崩溃。 CPU超频秘技: 1.CPU超频和CPU本身的“体质”有关 很多朋友们说他们的CPU加压超频以后还是不稳定,这就是“体质”问题。对于同一个型号的CPU在不同周期生产的可超性不同,这些可以从处理器编号上体现出来。 2.倍频低的CPU好超 大家知道提高CPU外频比提高CPU倍频性能提升快,如果是不锁倍频的CPU,高手们会采用提高外频降低倍频的方法来达到更好的效果,由此得出低倍频的CPU具备先天的优势。比如超频健将AMD Athlon XP1700+/1800+以及Intel Celeron 2.0GHz等。 3.制作工艺越先进越好超 制作工艺越先进的CPU,在超频时越能达到更高的频率。比如Intel新推出就赢得广泛关注的Intel Celeron D处理器,采用90纳米的制造工艺,Prescott核心。已经有网友将一快2.53GHz的Celeron D超到了4.4GHz。 4.温度对超频有决定性影响 大家知道超频以后CPU的温度会大幅度的提高,配备一个好的散热系统是必须的。这里不光指CPU风扇,还有机箱风扇等。另外,在CPU核心上涂抹薄薄一层硅脂也很重要,可以帮助CPU良好散热。 5.主板是超频的利器 一块可以良好支持超频的主板一般具有以下优点:(1)支持高外频。(2)拥有良好供电系统。如采用三相供电的主板或有CPU单路单项供电的主板。(3)有特殊保护的主板。如在CPU风扇停转时可以立即切断电源,部分主板把它称为“烧不死技术”。(4)BIOS中带有特殊超频设置的主板。(5) 做工优良,最好有6层PCB板。 虚拟化认证虚拟化技术是当今企业热门技术之一,而服务器虚拟化技术能够为企业实现服务器整合、降低总体拥有成本等众多优势。学员学完该课程(实施和管理微软服务器虚拟化),可参加70-659的考试,考试通过后,可获得两张MCTS证书:Windows Server 2008 R2,Server Virtualization 和System Center Virtual Machine Manager,Configuring。拥有该证书,说明您已经掌握了服务器虚拟化的配置、管理及实现。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。