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