帶你認(rèn)識(shí)Hyper-V VSP/VSC和VMBUS設(shè)計(jì)
譯文在服務(wù)器/客戶機(jī)網(wǎng)絡(luò)應(yīng)程序用中,有兩個(gè)部分協(xié)同運(yùn)行,以實(shí)現(xiàn)網(wǎng)絡(luò)通信:服務(wù)器端組件和客戶端組件。服務(wù)器端組件總是進(jìn)行偵聽(tīng),為客戶端組件提供網(wǎng)絡(luò)服務(wù)。
另一方面,客戶端組件總是向服務(wù)器端組件請(qǐng)求服務(wù)。比如說(shuō),在Windows操作系統(tǒng)中,RPC服務(wù)器充當(dāng)RPC客戶機(jī)的偵聽(tīng)器。就微軟Exchange Server而言,CAS充當(dāng)服務(wù)器端組件,偵聽(tīng)來(lái)自O(shè)utlook郵件客戶端的網(wǎng)絡(luò)流量。
同樣,Hyper-V實(shí)施了分別名為VSP和VSC的服務(wù)器端組件和客戶端組件。VSP代表虛擬化服務(wù)提供者,而VSC代表虛擬化服務(wù)客戶機(jī)。結(jié)合稍后討論的VMBUS,VSP組件和VSC組件就能提升在Hyper-V上運(yùn)行的虛擬機(jī)的整體性能。
在虛擬機(jī)里面運(yùn)行的操作系統(tǒng)不知道它是在使用物理層還是在使用虛擬機(jī)與硬件設(shè)備進(jìn)行通信。在虛擬環(huán)境中,操作系統(tǒng)組件使用原生驅(qū)動(dòng)程序,發(fā)送硬件訪問(wèn)請(qǐng)求,但是請(qǐng)求由虛擬層負(fù)責(zé)接收。
在訪問(wèn)硬件設(shè)備的請(qǐng)求得到處理之前,這類請(qǐng)求被虛擬層截獲。這種截獲機(jī)制有時(shí)又叫設(shè)備仿真(device emulation)。由于這些被截獲的調(diào)用由設(shè)備仿真組件加以處理,這總是在虛擬機(jī)與硬件設(shè)備之間帶來(lái)了額外的一層通信。
為了避免額外的這層通信,微軟為在Hyper-V上運(yùn)行的虛擬機(jī)提供了一套組件,名為“集成服務(wù)”(Integration Services)。VMware則為在ESX Server上運(yùn)行的虛擬機(jī)提供了“VMware工具”。本文將只探討Hyper-V的集成服務(wù)組件。
雖然這一套集成服務(wù)還提供了其他服務(wù),但VSP和VSC是微軟Hyper-V虛擬化架構(gòu)中大幅提升虛擬機(jī)性能的主要組件。這兩個(gè)組件有助于確保子分區(qū)(虛擬機(jī))與父分區(qū)(Hyper-V服務(wù)器)之間實(shí)現(xiàn)順暢、可靠的通信。VSP總是在父分區(qū)里面運(yùn)行,而VSC總是在子分區(qū)里面運(yùn)行。
Hyper-V里面有四個(gè)VSP,另外四個(gè)VSC在多個(gè)子分區(qū)里面運(yùn)行,如下圖所示:
采用VSP/VSC設(shè)計(jì)的子分區(qū)
VSP(網(wǎng)絡(luò)、視頻、存儲(chǔ)和人機(jī)接口設(shè)備)總是在父分區(qū)里面運(yùn)行,而相應(yīng)的VSC總是在子分區(qū)里面運(yùn)行。VSP和相應(yīng)的VSC都可以使用一種名為VMBUS的溝通渠道,與對(duì)方進(jìn)行通信,如上圖所示。
VMBUS是一種特殊的協(xié)議,旨在實(shí)現(xiàn)VSC與在父分區(qū)里面運(yùn)行的VSP進(jìn)行通信。這個(gè)組件起到了重要的作用,可以避免產(chǎn)生任何額外的通信層。
只有四個(gè)VSP在父分區(qū)里面的Hyper-V服務(wù)器上運(yùn)行,但是可能有多個(gè)VSC在同一個(gè)Hyper-V服務(wù)器上運(yùn)行,作為子分區(qū)的一部分。VSP是多線種組件,作為VMMS.exe的一部分而運(yùn)行,可以同時(shí)處理多個(gè)VSC請(qǐng)求。
你將集成服務(wù)組件安裝到虛擬機(jī)中后,下列驅(qū)動(dòng)程序被安裝,以改善虛擬機(jī)與父分區(qū)之間的通信:
·如果是顯示屏適配器,C:\Windows\System32\VMBusVideoD.dll和C:\Windows\System32\Drivers\VMBusVideoM.Sys
·如果是人機(jī)接口設(shè)備,C:\Windows\System32\Drivers\hidusb.sys和C:\Windows\System32\Drivers\VMBusHID.SYS
·如果是網(wǎng)絡(luò)適配器,C:\Windows\System32\Drivers\NetVSC60.sys
·如果是存儲(chǔ)控制器,C:\Windows\System32\Drivers\StorVSC.sys
除了上面提到的幾個(gè)驅(qū)動(dòng)程序外,還添加了一個(gè)VMBUS設(shè)備。它使用位于C:\Windows\System32\Drivers文件夾中的VMBUS.sys驅(qū)動(dòng)程序。
VSC驅(qū)動(dòng)程序與裝入到虛擬機(jī)中的VMBUS.sys驅(qū)動(dòng)程序進(jìn)行通信。VMBUS.sys則與在Hyper-V父分區(qū)里面運(yùn)行的VMBUS.sys進(jìn)行通信,Hyper-V父分區(qū)進(jìn)而與在父分區(qū)里面運(yùn)行的相應(yīng)VSP進(jìn)行通信,以便實(shí)現(xiàn)直接通信,避免了與設(shè)備仿真層進(jìn)行通信。
為了證實(shí)虛擬機(jī)使用VSP/VSC設(shè)計(jì),與父分區(qū)成功實(shí)現(xiàn)了通信,你可以看一下虛擬機(jī)中的設(shè)備管理器,如下面這個(gè)屏幕截圖所示:
如果相應(yīng)的VSC在虛擬機(jī)上正常運(yùn)行,你會(huì)看到代表視頻VSC的“Microsoft Hyper-V Video”、代表人機(jī)接口設(shè)備VSC的“Microsoft Hyper-V Virtual Keyboard”、代表網(wǎng)絡(luò)VSC的“Microsoft Hyper-V Network Adapter”以及代表存儲(chǔ)VSC的“Microsoft Hyper-V SCSI Controller”,如上圖所示。
如果這些驅(qū)動(dòng)程序受到了破壞,或沒(méi)有出現(xiàn)在虛擬機(jī)中,虛擬機(jī)通信總是會(huì)使用設(shè)備仿真加以實(shí)現(xiàn)。
在TechED北美大會(huì)上與Windows Server 2012 R2一同宣布的第二代虛擬機(jī)中,VMBUS和VSP/VSC設(shè)計(jì)始終處于啟用狀態(tài)。你沒(méi)法將其關(guān)閉――也沒(méi)有理由將其關(guān)閉,因?yàn)樗倪M(jìn)了虛擬機(jī)的通信。8月份我們刊發(fā)了一篇文章(http://www.serverwatch.com/server-tutorials/hyper-v-2012-r2-pros-and-cons-of-generation-1-vs.-generation-2-vms.html),專門介紹第一代虛擬機(jī)和第二代虛擬機(jī)。你可以參閱此文,進(jìn)一步了解第二代虛擬機(jī)。
不采用VSP/VSC設(shè)計(jì)的子分區(qū)
上圖中的第二個(gè)子分區(qū)并不實(shí)現(xiàn)VSC功能。可能是由于集成服務(wù)組件沒(méi)有被安裝,也可能是操作系統(tǒng)不受Hyper-V的支持。第二個(gè)子分區(qū)總是依賴設(shè)備仿真。它總是使用仿真設(shè)備驅(qū)動(dòng)程序,與父分區(qū)進(jìn)行通信,這會(huì)拖累虛擬機(jī)的整體性能。
結(jié)束語(yǔ)
通過(guò)本文,我們了解了Hyper-V的VSP組件和VSC組件在改進(jìn)虛擬機(jī)與父分區(qū)之間的通信方面如何發(fā)揮了重要作用。我們還了解了這些組件作為安裝在虛擬機(jī)中的集成服務(wù)的一部分而可用。要是沒(méi)有VSP/VSC組件,虛擬機(jī)操作系統(tǒng)就會(huì)使用操作系統(tǒng)提供的驅(qū)動(dòng)程序進(jìn)行通信,這會(huì)導(dǎo)致虛擬機(jī)的性能出現(xiàn)下降。
http://www.serverwatch.com/server-tutorials/understanding-hyper-v-vspvsc-and-vmbus-design.html