Chinaunix首页 | 论坛 | 博客
  • 博客访问: 531209
  • 博文数量: 221
  • 博客积分: 3032
  • 博客等级: 中校
  • 技术积分: 2525
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-30 15:45
文章分类

全部博文(221)

文章存档

2012年(221)

我的朋友

分类: 云计算

2012-08-01 17:25:41

1 服务器虚拟化介绍

服务器虚拟化是指将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,我们不再受限于物理上的界限,而是让CPU、内存、磁盘、I/O等硬件变成可以动态管理的资源池,从而提高资源的利用率,简化系统管理,实现服务器整合,让IT对业务的变化更具适应力。

2 服务器虚拟化的挑战

(1)    缺乏虚拟化的总体规划

在部署虚拟化之前缺乏总体规划是当前虚拟化存在的最大陷阱。例如,部分用户只为提高部分应用中的服务器资源利用效率,缺乏对服务器、负载、应用和业务需求的全面研究和规划,等到应用了虚拟化软件之后,才认识到虚拟化需要针对不同的工作负载进行不同的考虑,并对不同的负载采用不同的方案,随之还会涉及虚拟应用的整合比等问题。还有很多用户对TCO研究不足,甚至在上虚拟机之前根本未考虑到还需在硬件、基础架构方面作出更多的深入分析和优化的投入,没有前期规划,会给虚拟化应用带来极大的风险。

(2)    缺乏虚拟化的系统管理

很多用户对虚拟化系统的管理没有充分认知,在部署后也没有重视并实施具体的管理方法,这很可能会导致虚拟环境产生性能问题,并给IT人员带来无尽的新的头疼问题。例如,在容量、性能、配置或自动化部署和管理等方面,虚拟化必然会成为一系列新问题的导火索。轻视虚拟化应用中的系统管理的复杂程度,造成系统管理不到位,将是虚拟化应用中致命的问题。

(3)    虚拟机负载过重

虚拟化可以对资源进行动态配置,从而处理更多,或者更少的负载,这种作法似乎可以解决虚拟设施可能负载过重的问题。但这并不意味着虚拟服务器就是永远压不垮的。虚拟技术有其自己的限制,在基础设施中添加其无法应付的太多虚拟机会适得其反。很多用户在配置虚拟机时对物理机的承受能力没有进行深入分析。

(4)    缺少测试环节

 虚拟化是实现快速资源服务的途径,但这并不意味着IT部门就可以忽视虚拟机实施前和向虚拟基础设施分配应用之前的容量规划和测试。很多企业用户在应用了动态虚拟机之后才意识到没有测试I/O、占用率等其他问题,就匆匆将新的应用或服务器搬进了虚拟环境。这往往会带来很大的问题。

(5)    没有持续优化

在虚拟化中,大量的需求都是动态的。这也意味着企业在部署虚拟化的相关解决方案之后需要进行持续地管理与优化。很多用户在这个方面做得非常不够。企业的IT主管必须从一开始就做好虚拟机生命周期管理规划,并同时配备相关虚拟化管理制。

3 服务器虚拟化实现技术

从实现架构来分,服务器虚拟化分为裸金属架(Bare-Metal Architecture)构和寄居架构(Hosted Architecture)两种形式,二者的区别在于,裸金属架构不需要在物理服务器上安装操作系统,而是直接将虚拟机监视器(Virtual Machine MonitorVMM,也叫虚拟机管理程序或Hypervisor)安装在硬件设备上,由此获得更高的执行效率,在企业IT系统中广泛使用。

两种架构的具体结构参见图1和图2

1 寄居架构的服务器虚拟化体系结构图

2 寄居架构的服务器虚拟化体系结构图

VMM的具体实现方式,又分为完全虚拟化和半虚拟化等,另外,CPU、网卡等硬件设备辅助实现服务器虚拟化的技术目前也被广泛应用。

目前,服务器虚拟化的实现技术主要为分区(Partition)和硬件仿真。其中,分区主要包括硬件分区和软件分区,又被称为物理分区或逻辑分区。硬件仿真又分为部分仿真和完全仿真。

分区通常由服务器的软件层和硬件层共同完成,为上层操作系统和应用提供相互隔离的运行环境。采用分区技术的服务器的固件(fireware)记录分区的配置信息,用以界定每个分区能够访问的CPU、内存等资源,同时,服务器底层软件支持对不同的资源的管理操作,如分配、回收等,实现资源在不同分区之间的调度。

硬件仿真是目前大多数虚拟化产品采用的虚拟化技术,通过虚拟机监视器来仿真底层硬件的功能,为上层操作系统提供虚拟的运行环境,即通常说的虚拟机。从操作系统的角度看,运行在虚拟机中的操作系统与运行在物理机器上的操作系统几乎没有区别。

VMM实现从虚拟资源到物理资源的映射,当虚拟机中的操作系统通过特权指令访问关键系统资源时,VMM将接管其请求,并进行相应的模拟处理。为了使这种机制能够有效地工作,每条特权指令的执行都需要产生自陷(Trap)以便VMM能够捕获该指令,从而使得VMM能够进行相应的指令模拟执行。VMM通过模拟特权指令的执行,并返回处理结果给指定的客户虚拟系统的方式,实现了不同虚拟机的运行上下文保护与切换,从而能够虚拟出多个硬件系统,保证了各个客户虚拟系统的有效隔离。

然而,大多数处理器并不是完全支持虚拟化的,某些特权指令在低特权级上下文执行时,不能产生自陷,导致VMM无法直接捕获特权指令的执行。目前针对这一问题有完全虚拟化和半虚拟化两种不同解决方案。

目前,针对这一问题的解决方案主要有三种:基于动态指令转换(Dynamic Instruction Translation)或硬件辅助(Hardware Assisted)的完全虚拟化(Full-virtualization)技术,半虚拟化(Para-virtualization)技术和硬件辅助技术。

完全虚拟化(Full Virtualization

完全虚拟化是对真实物理服务器的完整模拟,在上层操作系统看来,虚拟机与物理平台没有区别。操作系统察觉不到是否运行在虚拟平台之上,也无须进行任何更改,因此完全虚拟化具有很好的兼容性,在服务器虚拟化中得到广泛应用。

从技术实现来说,完全虚拟化需要VMM能够处理虚拟机所有可能的行为。完全虚拟化的发展经历了两个阶段:基于软件辅助(Software Assisted)和基于硬件辅助(Hardware Assisted)。

3 完全 hypervisor 来共享底层硬件

n  基于软件辅助的完全虚拟化

为了正确处理不能直接捕获的虚拟机特权指令,完全虚拟化引入了动态指令转换(Dynamic Instruction Translation),通过在运行时动态执行指令扫描以发现特权指令,然后依据VMM状态执行指令的二进制转换,使得特权指令的执行跳转到等价模拟代码段处,从而实现与自陷相同的目标。

基于软件辅助虽然能够实现完全虚拟化,但由于所有指令都要经过VMM进行处理,这种虚拟化的性能受动态指令转换引擎的设计和实现影响比较大。

n  硬件辅助虚拟化

硬件辅助虚拟化是通过修改x86 CPU指令的语义,使其直接支持虚拟化。这一工作必须在CPU中进行,也就是Intel-VT技术和AMD-V技术。通过引入新的处理器操作来支持虚拟化,使得虚拟机的各种特权指令能够被CPU所截获,并通过异常报告给VMM,这样就解决了虚拟化的问题。

硬件辅助虚拟化是一种完备的虚拟化方法,部分虚拟化软件产品例如MicrosoftHyper-V目前必须借助于CPU硬件辅助才能实现虚拟化。

半虚拟化(Para-Virtualization)

与完全虚拟化技术技术不同,半虚拟化技术通过修改操作系统代码使特权指令产生自陷。Xen是使用半虚拟化技术的代表,通过对虚拟机操作系统的内核进行适当的修改,使其能够在VMM的管理下尽可能地直接访问本地硬件平台,由此降低了由于虚拟化而引入的系统性能损失。

但在另一方面,需要对虚拟机操作系统进行修改在一定范围内阻碍了半虚拟化技术的应用。

4

阅读(1918) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~