转眼间2012年已经到来,2011已经成为过去。回顾2011年,在开发和IT领域里有不少热点技术,如Web前端开发的CSS3和HTML5,Jquery等;移动操作系统的Android和Windows Phone等;IT域里的虚拟化技术和云计算等。
对于IT人士来说云计算可能并不陌生,因为2011年是云计算茁壮成长的一年。谈到云计算就离不开虚拟化;谈到虚拟化就离不开服务器虚拟化;谈到服务器虚拟化当然离不开微软的Hyper-v。
微软在虚拟化方面有着整套的解决方案,从桌面到数据中心。今天我们就着重谈谈微软的服务器虚拟化-Hyper-v。
没有应用虚拟化存在的难题
- 硬件资源的浪费
- 过多的电能消耗
- 昂贵的数据存储成本
- 总部和分公司办公环境
服务器虚拟化带来的优势
服务器整合:
- 避免购置、管理大量服务器硬件设备
- 避免在不同位置管理多台服务器角色
- 避免服务器欠载运行
- 避免不必要的电力和其他供应设备
商业连续性:
- 避免同一服务器上多个应用冲突
- 弱化操作失误损失
硬件资源重新分配:
- 支持早期虚拟化产品或者非微软操作系统
动态数据中心:
- 避免暂停服务及应用以便升级
- 弱化磁盘空间丌足损失
测试及部署:
- 花费时间重新搭建服务器环境
- 临时改变配置用以测试
Hyepr-v的功能特点:
- 基于Hypervisor的全新系统架构,性能接近于证实的服务器。
- 同时32位和64位的虚拟机。
- 虚拟机的内存可以达到64G,支持动态内存调整。
- 虚拟机的CPU最多达到4个CPU内核,并且每个虚拟机使用的CPU数量可调。
- 硬件热插拔。
- 动态资源调配。
- 虚拟交换机划分VLAN。
- 支持支持宿主机、虚拟机群集、快速迁移、高可用性、快照等技术。
- 提供相应的WMI管理接口。
- 支持Core和完全安装两种安装方式。
- 支持多个快照。
传统虚拟化架构和Hyper-v虚拟化架构的区别:
650) this.width=650;" title="clip_image002" border="0" alt="clip_image002" width="466" height="143" src="/d/ezdimg/2023021901/lq0n1ejoamo49643.webp">
如上图所示:左边的是传统的虚拟化架构,从图中可以看出,从下往上,最底层是服务器硬件层,接着是服务器host操作系统,接着是安装在系统上的应用程序。传统的虚拟化的实现是通过在host操作系统上的一个Application的Hypervisor层来实现的,要在服务器上安装虚拟机就必须在Application上的Hypervisor层来模拟安装Gust操作系统。如果虚拟机Gust系统要调用硬件资源必须通过物理系统上的应用程序和物理系统通信最后才和物理机硬件通信。这个过程必须经过两个层次的通信从而大大的降低了虚拟机的性能。从根本上讲,此种虚拟化技术的实现不能够算是真正的虚拟化技术。
上图的右边是Hyper-v的架构图,相比左边的架构图,我们可以看出,虚拟机和物理机的操作系统是并行运行在服务器硬件层上的Hypervisor层的,没有上下层次之分。此时安装在Hyper-v的系统是和安装在物理机上的系统是平等对待的:物理机的操作系统也可以看作是虚拟机上的系统;虚拟机上的操作系统也可以看作是物理机上的系统。可谓是真作假时假亦真。所以,此时的虚拟机系统的性能就大大提高了在硬件的调用方面是好物理机几乎一样的。
虚拟化架构:
650) this.width=650;" title="clip_image004" border="0" alt="clip_image004" height="481" src="/d/ezdimg/2023021901/fusr2aso3o549644.webp">
在上图中可以看出:下往上可以分为服务器硬件层(处理器必须支持虚拟化技术并在BIOS设置里启用它,如AMD的AMD-V和Intel的Intel VT Chipset),windows Hypervisor层(包含在windo server 2008/R2/R2SP1系统里),内核模式层(系统层)和用户模式层(应用层)。
Hyper-v架构术语:
VMBus:运行在物理机共享内存里的虚拟机高速总线,通过VMBus,子分区里的所有硬件请求可以通过VMBus快速的递交给父分区,然后由父分区来完成相应硬件的调用。它是支持即插即用的总线,如在物理机里插入的SCSI设备、网卡支持VMBus的显卡。那么,安装在Hyper-v的虚拟机将会自动的加载挂载在VMBus里的相应硬件驱动,从而供虚拟机使用。
VSP:全称Virtual Services Provider即虚拟服务提供程序,它是和VMBus相关的两个进程之一。它存在于父分区中,用来监听来自于VMBus数据的请求,然后把这些请求通过物理机里的I/O堆栈直接转到相应的硬件驱动程序上参与Hypervisor直接交接到相应的设备上去。VSP它支持多路复用技术,即可以监听来自多个物理机上多个虚拟机的硬件调用通信,如物理机上只有一个显卡和对应的VSP,但是VSP可以处理来自多个虚拟机上的显卡的请求。然后通过VMBus来进行相应转发。
VSC:全称Virtual Services Client即虚拟机服务客户端,它是和VMBus相关的另一个进程。它存在于子分区中,用来监听虚拟机里应用程序对虚拟机里的I/O堆栈所发送的设备请求,让后把请求转换为VMBus能够识别的数据格式,让后再发送到VMBus上,最后再转发给相应的VSP,VSP再转给相应的硬件驱动。从而完成虚拟机上应用程序对硬件的调用。
VM Worker Process(工作者进程):用来和每个子分区(虚拟机)进行一一绑定从而来进行虚拟机之间的隔离。
WMI Provider(windows 管理接口提供程序):提供对虚拟机进行管理的windows管理接口。
VM Services(虚拟机服务):虚拟机相对应的服务进程。
虚拟设备:支持VMBus的设备。
模拟设备:不自持VMBus的设备。
Hyper-v架构祥解:
从上图上我们可以看出有父分区和子分区的划分,那么什么是父分区和子分区呢?
父分区就是指服务器上物理上的host操作系统;子分区就是指运行在服务器上的Gust虚拟机操作系统包括模拟的(如VPC,VMware等)、非模拟的(如Hyper-v等)、和异构的系统(如Linux的虚拟机等)。
在微软服务器系统(2008/2008R2)的子分区里发生的任何硬件的调用都是通过内核模式里的VSC(虚拟服务通信)和运行在物理机内存里的VMBus(虚拟机总线),VMBuse再通过和Windwos Hypervisor通信,Hypervisor从而和底层硬件相应的设备驱动通信。整个通信过程如下图所示:
650) this.width=650;" title="clip_image006" border="0" alt="clip_image006" height="87" src="/d/ezdimg/2023021901/5mrmuq1mz0y49645.webp">
对于Linux系统来讲,如果Linux系统内核支持虚拟化技术如Xen。那么有两种方式可以实现Linux对硬件的调用。
第一种:配置有HyperCall Adapter硬件的服务器可以通过如下的流程来进行硬件的调用。
650) this.width=650;" title="clip_image008" border="0" alt="clip_image008" height="87" src="/d/ezdimg/2023021901/iyoa1u3skyt49646.webp">
第二种:没有HyperCall Adapter硬件的服务器可以通过如下的流程来进行硬件的调用
650) this.width=650;" title="clip_image010" border="0" alt="clip_image010" height="89" src="/d/ezdimg/2023021901/iia5jpzwolu49647.webp">
安装Hyper-v的要求:
硬件上,CPU必须支持虚拟化并在BIOS里启用,如Intel VT或者AMD V;必须支持硬件级别的数据执行保护技术(DEP),如IntelXD或者AMD NX技术。
可以在,我的电脑-属性-高级-设置-里查看是否有DEP选项。
系统上,必须安装64位的windows server 2008/R2。
本篇就讲到这里吧,希望对正在学习虚拟化的网友有所帮助,下篇开始我们将介绍Hyper-v的安装和配置。