在服务器/客户机网络应程序用中,有两个部分协同运行,以实现网络通信:服务器端组件和客户端组件。服务器端组件总是进行侦听,为客户端组件提供网络服务。
另一方面,客户端组件总是向服务器端组件请求服务。比如说,在Windows操作系统中,RPC服务器充当RPC客户机的侦听器。就微软Exchange Server而言,CAS充当服务器端组件,侦听来自Outlook邮件客户端的网络流量。
同样,Hyper-V实施了分别名为VSP和VSC的服务器端组件和客户端组件。VSP代表虚拟化服务提供者,而VSC代表虚拟化服务客户机。结合稍后讨论的VMBUS,VSP组件和VSC组件就能提升在Hyper-V上运行的虚拟机的整体性能。
在虚拟机里面运行的操作系统不知道它是在使用物理层还是在使用虚拟机与硬件设备进行通信。在虚拟环境中,操作系统组件使用原生驱动程序,发送硬件访问请求,但是请求由虚拟层负责接收。
在访问硬件设备的请求得到处理之前,这类请求被虚拟层截获。这种截获机制有时又叫设备仿真(device emulation)。由于这些被截获的调用由设备仿真组件加以处理,这总是在虚拟机与硬件设备之间带来了额外的一层通信。
为了避免额外的这层通信,微软为在Hyper-V上运行的虚拟机提供了一套组件,名为“集成服务”(Integration Services)。VMware则为在ESX Server上运行的虚拟机提供了“VMware工具”。本文将只探讨Hyper-V的集成服务组件。
虽然这一套集成服务还提供了其他服务,但VSP和VSC是微软Hyper-V虚拟化架构中大幅提升虚拟机性能的主要组件。这两个组件有助于确保子分区(虚拟机)与父分区(Hyper-V服务器)之间实现顺畅、可靠的通信。VSP总是在父分区里面运行,而VSC总是在子分区里面运行。
Hyper-V里面有四个VSP,另外四个VSC在多个子分区里面运行,如下图所示:
采用VSP/VSC设计的子分区
VSP(网络、视频、存储和人机接口设备)总是在父分区里面运行,而相应的VSC总是在子分区里面运行。VSP和相应的VSC都可以使用一种名为VMBUS的沟通渠道,与对方进行通信,如上图所示。
VMBUS是一种特殊的协议,旨在实现VSC与在父分区里面运行的VSP进行通信。这个组件起到了重要的作用,可以避免产生任何额外的通信层。
只有四个VSP在父分区里面的Hyper-V服务器上运行,但是可能有多个VSC在同一个Hyper-V服务器上运行,作为子分区的一部分。VSP是多线种组件,作为VMMS.exe的一部分而运行,可以同时处理多个VSC请求。
你将集成服务组件安装到虚拟机中后,下列驱动程序被安装,以改善虚拟机与父分区之间的通信:
·如果是显示屏适配器,C:\Windows\System32\VMBusVideoD.dll和C:\Windows\System32\Drivers\VMBusVideoM.Sys
·如果是人机接口设备,C:\Windows\System32\Drivers\hidusb.sys和C:\Windows\System32\Drivers\VMBusHID.SYS
·如果是网络适配器,C:\Windows\System32\Drivers\NetVSC60.sys
·如果是存储控制器,C:\Windows\System32\Drivers\StorVSC.sys
除了上面提到的几个驱动程序外,还添加了一个VMBUS设备。它使用位于C:\Windows\System32\Drivers文件夹中的VMBUS.sys驱动程序。
VSC驱动程序与装入到虚拟机中的VMBUS.sys驱动程序进行通信。VMBUS.sys则与在Hyper-V父分区里面运行的VMBUS.sys进行通信,Hyper-V父分区进而与在父分区里面运行的相应VSP进行通信,以便实现直接通信,避免了与设备仿真层进行通信。
为了证实虚拟机使用VSP/VSC设计,与父分区成功实现了通信,你可以看一下虚拟机中的设备管理器,如下面这个屏幕截图所示:
如果相应的VSC在虚拟机上正常运行,你会看到代表视频VSC的“Microsoft Hyper-V Video”、代表人机接口设备VSC的“Microsoft Hyper-V Virtual Keyboard”、代表网络VSC的“Microsoft Hyper-V Network Adapter”以及代表存储VSC的“Microsoft Hyper-V SCSI Controller”,如上图所示。
如果这些驱动程序受到了破坏,或没有出现在虚拟机中,虚拟机通信总是会使用设备仿真加以实现。
在TechED北美大会上与Windows Server 2012 R2一同宣布的第二代虚拟机中,VMBUS和VSP/VSC设计始终处于启用状态。你没法将其关闭――也没有理由将其关闭,因为它改进了虚拟机的通信。8月份我们刊发了一篇文章(http://www.serverwatch.com/server-tutorials/hyper-v-2012-r2-pros-and-cons-of-generation-1-vs.-generation-2-vms.html),专门介绍第一代虚拟机和第二代虚拟机。你可以参阅此文,进一步了解第二代虚拟机。
不采用VSP/VSC设计的子分区
上图中的第二个子分区并不实现VSC功能。可能是由于集成服务组件没有被安装,也可能是操作系统不受Hyper-V的支持。第二个子分区总是依赖设备仿真。它总是使用仿真设备驱动程序,与父分区进行通信,这会拖累虚拟机的整体性能。
结束语
通过本文,我们了解了Hyper-V的VSP组件和VSC组件在改进虚拟机与父分区之间的通信方面如何发挥了重要作用。我们还了解了这些组件作为安装在虚拟机中的集成服务的一部分而可用。要是没有VSP/VSC组件,虚拟机操作系统就会使用操作系统提供的驱动程序进行通信,这会导致虚拟机的性能出现下降。
http://www.serverwatch.com/server-tutorials/understanding-hyper-v-vspvsc-and-vmbus-design.html