帶你認識Hyper-V VSP/VSC和VMBUS設計
譯文在服務器/客戶機網絡應程序用中,有兩個部分協同運行,以實現網絡通信:服務器端組件和客戶端組件。服務器端組件總是進行偵聽,為客戶端組件提供網絡服務。
另一方面,客戶端組件總是向服務器端組件請求服務。比如說,在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