專利名稱:虛擬化處理方法及相關(guān)裝置和計算機系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體涉及虛擬化處理方法及相關(guān)裝置和計算機系統(tǒng)。
背景技術(shù):
虛擬化技術(shù)是一種將底層硬件設(shè)備與上層操作系統(tǒng)、應(yīng)用程序分離的去耦合技術(shù),如圖1所示,引入虛擬機監(jiān)控器(VMM,Virtual Machine Monitor)層直接管理底層硬件資源,創(chuàng)建與底層硬件無關(guān)的虛擬機(VM,Virtual Machine)供上層操作系統(tǒng)和應(yīng)用程序使用。虛擬化技術(shù)作為當前流行的云計算(Cloud Computing)平臺的底層重要支撐技術(shù)之一,可以極大的提高物理設(shè)備的資源使用效率。與傳統(tǒng)的物理服務(wù)器相比,虛擬機具有更好的隔離性和封裝性,其可以將整個虛擬機的信息保存到虛擬磁盤鏡像(VDI,VirtUalDisk Image)中,從而可以方便地對虛擬機進行快照、備份、克隆和分發(fā)等操作。隨著x86處理器演進,中央處理器(CPU,Central Processing Unit)、內(nèi)存的虛擬化技術(shù)越來越完善,且開銷也變得越來越小?;谧钚绿幚砥?,大多數(shù)應(yīng)用的CPU、內(nèi)存虛擬化開銷已經(jīng)小于10%。在輸入輸出(1/0,hput/Output)虛擬化領(lǐng)域,高性能、低延時的虛擬1/0方案仍是虛擬化領(lǐng)域的一個關(guān)鍵技術(shù)挑戰(zhàn)?,F(xiàn)有1/0虛擬化方案包括軟件方案和硬件方案兩類。然而現(xiàn)有軟件方案和硬件方案都有其自身突出的優(yōu)點和缺點。如現(xiàn)有軟件方案的長處在于兼容性,而性能損失很大;硬件方案能夠帶來很好的性能,但存在特性兼容性及客戶操作系統(tǒng)(Guest OS)兼容性等問題。
發(fā)明內(nèi)容
本發(fā)明實施例提供虛擬化處理方法及相關(guān)裝置和計算機系統(tǒng),以優(yōu)化虛擬化系統(tǒng)的性能和兼容性。為解決上述技術(shù)問題,本發(fā)明實施例提供以下技術(shù)方案—方面,本發(fā)明實施例提供一種虛擬化處理方法,應(yīng)用于計算節(jié)點上,所述計算節(jié)點包括硬件層、運行在所述硬件層之上的宿主機Host、以及運行在所述Host之上的至少一個虛擬機VM,其中,所述硬件層包括輸入/輸出1/0設(shè)備,所述1/0設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,所述Host中具有若干個VF軟件實例,每個所述VF軟件實例分別對應(yīng)不同的所述VF設(shè)備;所述Host中還具有與所述1/0設(shè)備類型相同的1/0虛擬設(shè)備的后端實例BE,所述VM中具有所述1/0虛擬設(shè)備的前端實例FE ;其中,所述Host中的所述BE與空閑的所述VF軟件實例綁定;所述方法包括所述FE預(yù)分配用于直接內(nèi)存存取DMA的緩存;與所述BE綁定的所述VF軟件實例通過所述BE的導(dǎo)出程序接口獲取所述用于DMA的緩存對應(yīng)的地址,將獲取到的所述用于DMA的緩存對應(yīng)的地址寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元中;所述VF設(shè)備在需要接收數(shù)據(jù)時從所述第一存儲單元中選取用于DMA的緩存對應(yīng)的地址,以選取的該用于DMA的緩存對應(yīng)的地址作為目的地址發(fā)起DMA寫請求;所述VF設(shè)備在所述DMA寫請求執(zhí)行后通知所述Host中與之對應(yīng)的所述VF軟件實例,以便所述VF軟件實例觸發(fā)所述FE接收寫入所述地址所對應(yīng)緩存中的數(shù)據(jù)。另一方面,本發(fā)明實施例還提供一種虛擬化處理方法,包括在輸入/輸出I/O設(shè)備的I/O虛擬功能啟動后,宿主機Host中產(chǎn)生若干個VF軟件實例;其中,啟動I/O虛擬功能后的所述I/O設(shè)備虛擬出對應(yīng)的若干個虛擬功能VF設(shè)備;所述Host中產(chǎn)生的每個所述VF軟件實例分別對應(yīng)不同的所述VF設(shè)備;所述Host創(chuàng)建與所述I/O設(shè)備類型相同的I/O虛擬設(shè)備,其中,所述I/O虛擬設(shè)備的后端實例BE創(chuàng)建于所述Host中,所述1/0虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的虛擬機VM中;將所述BE與空閑的所述VF軟件實例綁定。另一方面,本發(fā)明實施例還提供一種計算節(jié)點,其特征在于,包括,硬件層、運行在所述硬件層之上的宿主機Host、以及運行在所述Host之上的至少一個虛擬機VM,其中,所述硬件層包括輸入/輸出1/0設(shè)備,所述1/0設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,所述Host中具有若干個VF軟件實例,每個所述VF軟件實例分別對應(yīng)不同的所述VF設(shè)備;所述Host中還具有與所述1/0設(shè)備類型相同的1/0虛擬設(shè)備的后端實例BE,所述VM中具有所述1/0虛擬設(shè)備的前端實例FE ;其中,所述Host中的所述BE與空閑的所述VF軟件實例綁定;其中,所述FE,用于預(yù)分配用于直接內(nèi)存存取DMA的緩存;與所述BE綁定的所述VF軟件實例,用于通過所述BE的導(dǎo)出程序接口獲取所述用于DMA的緩存對應(yīng)的地址,將獲取到的所述用于DMA的緩存對應(yīng)的地址寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元中;所述VF設(shè)備,用于在需要接收數(shù)據(jù)時從所述第一存儲單元中選取用于DMA的緩存對應(yīng)的地址,以選取的該用于DMA的緩存對應(yīng)的地址作為目的地址發(fā)起DMA寫請求;在所述DMA寫請求執(zhí)行后通知所述Host中與之對應(yīng)的所述VF軟件實例,以便所述VF軟件實例觸發(fā)所述FE接收寫入所述地址所對應(yīng)緩存中的數(shù)據(jù)。另一方面,本發(fā)明實施例還提供一種宿主機,包括第一創(chuàng)建模塊,用于在輸入/輸出1/0設(shè)備的1/0虛擬功能啟動后,在宿主機Host中產(chǎn)生若干個VF軟件實例;其中,啟動1/0虛擬功能后的所述1/0設(shè)備虛擬出對應(yīng)的若干個虛擬功能VF設(shè)備;所述Host中產(chǎn)生的每個所述VF軟件實例分別對應(yīng)不同的所述VF設(shè)備;第二創(chuàng)建模塊,用于創(chuàng)建與所述1/0設(shè)備類型相同的1/0虛擬設(shè)備,其中,所述1/0虛擬設(shè)備的后端實例BE創(chuàng)建于所述Host中,所述1/0虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的虛擬機VM中;綁定模塊,用于將所述第二創(chuàng)建模塊創(chuàng)建的BE與第一創(chuàng)建模塊創(chuàng)建的空閑的所述VF軟件實例綁定。由上可見,本發(fā)明實施例中計算節(jié)點可包括硬件層、運行在該硬件層之上的Host、以及運行在該Host之上的至少一個VM,該硬件層包括輸入/輸出I/O設(shè)備,該I/O設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,該Host中具有若干個VF軟件實例,每個上述VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host中還具有與上述I/O設(shè)備類型相同的I/O虛擬設(shè)備的后端實例BE,VM中具有上述I/O虛擬設(shè)備的前端實例FE ;其中,該Host中的上述BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),I/O設(shè)備虛擬出的一個VF設(shè)備和一個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于I/O設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可以提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且由于I/O虛擬設(shè)備的前端驅(qū)動(即冊)在VM內(nèi),該FE通過Host內(nèi)的后端驅(qū)動(即BE)來傳遞數(shù)據(jù),VM不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是現(xiàn)有一種虛擬化技術(shù)架構(gòu)示意圖;圖2_a是本發(fā)明實施例提供的一種虛擬化軟硬件體系架構(gòu)示意圖;圖2_b是本發(fā)明實施例提供的另一種虛擬化軟硬件體系架構(gòu)示意圖;圖3是本發(fā)明實施例提供的一種虛擬化處理方法的流程示意圖;圖4是本發(fā)明實施例提供的另一種虛擬化處理方法的流程示意圖;圖5是本發(fā)明實施例提供的另一種虛擬化處理方法的流程示意圖;圖6_a是本發(fā)明實施例提供的另一種虛擬化處理方法的流程示意圖;圖6-b是本發(fā)明實施例提供的一種GPA和HPA地址轉(zhuǎn)換示意圖;圖7_a是本發(fā)明實施例提供的另一種虛擬化處理方法的流程示意圖;圖7-b是本發(fā)明實施例提供的另一種GPA和HPA地址轉(zhuǎn)換示意圖;圖8-a是本發(fā)明實施例提供的另一種虛擬化處理方法的流程示意圖;圖8-b是本發(fā)明實施例提供的另一種GPA和HPA地址轉(zhuǎn)換示意圖;圖9-a是本發(fā)明實施例提供的另一種虛擬化處理方法的流程示意圖;圖9-b是本發(fā)明實施例提供的另一種GPA和HPA地址轉(zhuǎn)換示意圖;圖10是本發(fā)明實施例提供的一種宿主機的模塊架構(gòu)示意圖;圖11-a是本發(fā)明實施例提供的一種計算機節(jié)點示意圖;圖11-b是本發(fā)明實施例提供的另一種計算機節(jié)點示意圖;圖11-c是本發(fā)明實施例提供的另一種計算機節(jié)點示意圖;圖12是本發(fā)明實施例提供的一種計算機系統(tǒng)示意圖。
具體實施例方式本發(fā)明實施例提供虛擬化處理方法及相關(guān)裝置和計算機系統(tǒng),以期優(yōu)化虛擬化系統(tǒng)的性能和兼容性。為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當屬于本發(fā)明保護的范圍。為了方便理解本發(fā)明實施例,首先在此介紹本發(fā)明實施例描述中會引入的幾個要素;虛擬機VM 通過虛擬機軟件可以在一臺物理計算機上模擬出一臺或者多臺虛擬的計算機,而這些虛擬機就像真正的計算機那樣進行工作,虛擬機上可以安裝操作系統(tǒng)和應(yīng)用程序,虛擬機還可訪問網(wǎng)絡(luò)資源。對于在虛擬機中運行的應(yīng)用程序而言,虛擬機就像是在真正的計算機中進行工作。硬件層虛擬化環(huán)境運行的硬件平臺。其中,硬件層可包括多種硬件,例如某計算節(jié)點的硬件層可包括CPU和內(nèi)存,還可以包括網(wǎng)卡、存儲器等等高速/低速輸入/輸出(1/0,Input/Output)設(shè)備,及具有特定處理功能的其它設(shè)備,如輸入輸出內(nèi)存管理單元(I0MMU,Input/Output Memory Management Unit),其中IOMMU可用于虛擬機物理地址和Host物理地址的轉(zhuǎn)換。I/O虛擬功能具有I/O虛擬功能的I/O設(shè)備在啟動I/O虛擬功能后,可以虛擬出對應(yīng)的物理功能(PF, Physical Function)設(shè)備和若干個虛擬功能(VF,Virtual Function)設(shè)備,其中,1/0設(shè)備虛擬出的PF設(shè)備主要負責管理功能,VF設(shè)備主要負責處理功能。宿主機(Host)作為管理層,用以完成硬件資源的管理、分配;為虛擬機呈現(xiàn)虛擬硬件平臺;實現(xiàn)虛擬機的調(diào)度和隔離。其中,Host可能是虛擬機監(jiān)控器(VMM);此外,有時VMM和1個特權(quán)虛擬機配合,兩者結(jié)合組成Host。其中,虛擬硬件平臺對其上運行的各個虛擬機提供各種硬件資源,如提供虛擬CPU、內(nèi)存、虛擬磁盤、虛擬網(wǎng)卡等等。其中,該虛擬磁盤可對應(yīng)Host的一個文件或者一個邏輯塊設(shè)備。虛擬機則運行在Host為其準備的虛擬硬件平臺上,Host上運行一個或多個虛擬機。參見圖2-a和圖2-b,圖2_a和圖2_b是本發(fā)明實施例提出的兩種虛擬化方案的軟硬件體系架構(gòu)示意圖,該體系架構(gòu)主要包括三個層次硬件層、Host和虛擬機(VM)。其中,圖2-a和圖2-b所示硬件層包括1/0設(shè)備,圖2-a所示硬件層還包括I0MMU。其中,Host運行在硬件層之上的、至少一個虛擬機VM運行在Host之上,其中,1/0設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,Host中具有若干個VF軟件實例,每個該VF軟件實例分別對應(yīng)不同的VF設(shè)備;Host中還具有與該1/0設(shè)備類型相同的1/0虛擬設(shè)備的后端實例(BE,Back-End),VM中具有該1/0虛擬設(shè)備的前端實例(FE,F(xiàn)ront-End);其中,Host中的BE與空閑的VF軟件實例綁定。在本發(fā)明實施例的技術(shù)方案中,VM中的BE可以看成是1/0虛擬設(shè)備的前端驅(qū)動程序,而Host中的FE可以看成是1/0虛擬設(shè)備的前端驅(qū)動程序,BE和FE結(jié)合就虛擬出I/O虛擬設(shè)備。本發(fā)明虛擬化處理方法的一個實施例,可應(yīng)用于計算節(jié)點上,其中,該計算節(jié)點包括硬件層、運行在該硬件層之上的宿主機Host、以及運行在該Host之上的至少一個VM,其中,硬件層包括輸入/輸出I/O設(shè)備,該虛擬化處理方法可包括在輸入/輸出I/O設(shè)備的I/O虛擬功能啟動后,宿主機Host中產(chǎn)生若干個虛擬功能(VF,Virtual Function)軟件實例;其中,啟動I/O虛擬功能后的I/O設(shè)備虛擬出對應(yīng)的若干個虛擬功能(VF)設(shè)備;Host中產(chǎn)生的每個上述VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host創(chuàng)建與上述I/O設(shè)備類型相同的I/O虛擬設(shè)備,其中,該I/O虛擬設(shè)備的后端實例BE創(chuàng)建于Host中,該I/O虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的VM中;將BE與空閑的上述VF軟件實例綁定。參見圖3,本發(fā)明實施例提供的一種虛擬化處理方法可包括301、在輸入/輸出1/0設(shè)備的1/0虛擬功能啟動后,宿主機Host中產(chǎn)生若干個虛擬功能VF軟件實例(VF Instance);其中,啟動1/0虛擬功能后的1/0設(shè)備可虛擬出對應(yīng)的若干個VF設(shè)備;Host中產(chǎn)生的每個VF軟件實例分別對應(yīng)不同的VF設(shè)備。其中,例如Host可在啟動時或者啟動后的某時刻使能1/0設(shè)備的1/0虛擬功能,以啟動該1/0設(shè)備的1/0虛擬功能?;蛘撸?/0設(shè)備亦可在設(shè)備上電后自行啟動其1/0虛擬功能,此時則無需Host使能該1/0設(shè)備的1/0虛擬功能。需要說明的是,本發(fā)明實施例中提及的1/0設(shè)備例如可為快速外設(shè)組件互連標準(PCIe,Peripheral Component Interconnect Express)設(shè)備或者其它類型的設(shè)備,例如為網(wǎng)卡等。302、Host創(chuàng)建與上述1/0設(shè)備類型相同的1/0虛擬設(shè)備,其中,該1/0虛擬設(shè)備(vDEV)的后端實例(BE, Back-End)創(chuàng)建于Host中,該1/0虛擬設(shè)備的前端實例(FE,Front-End)創(chuàng)建于啟動后的VM中;303、Host將BE與空閑的上述VF軟件實例綁定。其中,若Host創(chuàng)建了 1/0設(shè)備類型相同的多個1/0虛擬設(shè)備,則每個1/0虛擬設(shè)備的后端實例BE與一個空閑的VF軟件實例綁定,綁定后的BE和VF軟件實例之間提供互訪接口,例如,BE可通過與之綁定的VF軟件實例提供的訪問接口來訪問與該VF軟件實例對應(yīng)的VF設(shè)備等。這樣,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),1/0設(shè)備虛擬出的一個VF設(shè)備和一個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于1/0設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,這就有利于讓該VM獲得接近物理機的性能。VM可基于Host構(gòu)建的該應(yīng)用架構(gòu)來發(fā)送數(shù)據(jù)、接收數(shù)據(jù)或進行其它形式的數(shù)據(jù)處理等等。例如圖2-a和圖2-b,啟動1/0虛擬功能后的1/0設(shè)備(如PCIe設(shè)備)可虛擬出對應(yīng)的若干個VF設(shè)備,還可虛擬出對應(yīng)的物理功能(PF,Physical Function)設(shè)備,Host創(chuàng)建的與該1/0設(shè)備類型相同的若干個1/0虛擬設(shè)備的后端實例BE在Host中,而該每個1/0虛擬設(shè)備的前端實例FE在不同的VM中。其中,Host和VM之間還可配置共享內(nèi)存,I/0虛擬設(shè)備的后端實例BE和前端實例FE例如可通過該共享內(nèi)存來進行數(shù)據(jù)傳遞。由上可見,本實施例中在輸入/輸出1/0設(shè)備的1/0虛擬功能啟動后,宿主機Host中產(chǎn)生若干個VF軟件實例;其中,啟動1/0虛擬功能后的1/0設(shè)備虛擬出對應(yīng)的若干個VF設(shè)備;Host中產(chǎn)生的每個上述VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host創(chuàng)建與上述I/O設(shè)備類型相同的I/O虛擬設(shè)備,其中,該I/O虛擬設(shè)備的后端實例BE創(chuàng)建于Host中,該I/O虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的VM中;將BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),I/O設(shè)備虛擬出的一個VF設(shè)備和一個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于I/O設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可以提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且,由于虛擬設(shè)備前端驅(qū)動(即FE)在VM內(nèi),通過Host內(nèi)的后端驅(qū)動(即BE)傳遞數(shù)據(jù),VM不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。參見圖4,本發(fā)明實施例提供的另一種虛擬化處理方法,可應(yīng)用于計算節(jié)點上,該計算節(jié)點包括硬件層、運行在該硬件層之上的宿主機Host、以及運行在該Host之上的至少一個VM,其中,硬件層包括輸入/輸出I/O設(shè)備,該方法可包括401、Host使能輸入/輸出1/0設(shè)備的1/0虛擬功能;其中,例如Host可在啟動時或者啟動后的某時刻使能1/0設(shè)備的1/0虛擬功能以啟動1/0設(shè)備的1/0虛擬功能。其中,啟動1/0虛擬功能后的該1/0設(shè)備虛擬出對應(yīng)的若干個VF設(shè)備?;蛘?,1/0設(shè)備亦可在設(shè)備上電后自行啟動其1/0虛擬功能,此時則無需Host使能該1/0設(shè)備的1/0虛擬功能。402、Host中產(chǎn)生若干個VF軟件實例;其中,啟動1/0虛擬功能后的1/0設(shè)備可虛擬出對應(yīng)的若干個VF設(shè)備;Host中產(chǎn)生的每個VF軟件實例分別對應(yīng)不同的VF設(shè)備。403、Host創(chuàng)建與上述1/0設(shè)備類型相同的1/0虛擬設(shè)備,其中,該1/0虛擬設(shè)備(vDEV)的后端實例BE創(chuàng)建于Host中,該1/0虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的VM中;404、Host將BE與空閑的上述VF軟件實例綁定。其中,若Host創(chuàng)建了與啟動1/0虛擬功能的1/0設(shè)備類型相同的多個1/0虛擬設(shè)備,則每個1/0虛擬設(shè)備的后端實例BE與一個空閑的VF軟件實例綁定,綁定后的BE和VF軟件實例之間提供互訪接口,例如,BE可通過與之綁定的VF軟件實例提供的訪問接口來訪問與該VF軟件實例對應(yīng)的VF設(shè)備等。這樣,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),1/0設(shè)備虛擬出的一個VF設(shè)備和一個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于1/0設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,這就有利于讓該VM獲得接近物理機的性能。VM可基于Host構(gòu)建的該應(yīng)用架構(gòu)來發(fā)送數(shù)據(jù)、接收數(shù)據(jù)或進行其它形式的數(shù)據(jù)處理等等。例如圖2-a和圖2-b,啟動1/0虛擬功能后的1/0設(shè)備(如PCIe設(shè)備)可虛擬出對應(yīng)的若干個VF設(shè)備,還可虛擬出對應(yīng)的物理功能PF設(shè)備(Host中還可產(chǎn)生與該PF設(shè)備對應(yīng)的PF軟件實例),Host創(chuàng)建的與該1/0設(shè)備類型相同的若干個1/0虛擬設(shè)備的后端實例BE在Host中,而該每個1/0虛擬設(shè)備的前端實例FE在不同的VM中。其中,Host和VM之間還可配置共享內(nèi)存,1/0虛擬設(shè)備的后端實例BE和前端實例FE例如可通過該共享內(nèi)存來進行數(shù)據(jù)傳遞。為便于理解,下面以接收數(shù)據(jù)的舉例過程為例來介紹基于上述機制構(gòu)建起的應(yīng)用架構(gòu)的可選交互方式。在一種應(yīng)用場景下,Host將BE與空閑的VF軟件實例綁定之后,F(xiàn)E可預(yù)分配用于直接內(nèi)存存取(DMA,Direct Memory Access)的緩存;該FE將可該預(yù)分配的用于DMA的緩存對應(yīng)的客戶機物理地址(GPA,Guest Physical Address)寫入Host與VM之間的共享內(nèi)存中;與BE綁定的VF軟件實例可通過該BE的導(dǎo)出程序接口獲取該用于DMA的緩存對應(yīng)的GPA ;該VF軟件實例可將獲取到的該用于DMA的緩存對應(yīng)的GPA寫入該VF軟件實例對應(yīng)的VF設(shè)備的接收隊列中;該VF設(shè)備可在需要接收數(shù)據(jù)時從其接收隊列中選取用于DMA的緩存對應(yīng)的GPA,并可以選取的該GPA作為目的地址發(fā)起DMA寫請求(該DMA寫請求用于向緩存中寫入數(shù)據(jù));輸入輸出內(nèi)存管理單元IOMMU將經(jīng)過的DMA寫請求的目的地址GPA修改為對應(yīng)的Host物理地址HPA (其中,IOMMU中例如設(shè)置有地址轉(zhuǎn)換頁表,其中,該地址轉(zhuǎn)換頁表中記錄HPA和GPA之間的映射對應(yīng)關(guān)系;當DMA寫請求經(jīng)過時,IOMMU可通過查詢地址轉(zhuǎn)換頁表獲得經(jīng)過的該DMA寫請求的目的地址GPA所對應(yīng)的HPA,將該DMA寫請求的目的地址GPA修改為獲得的該ΗΡΑ);該VF設(shè)備可在目的地址修改為HPA的該DMA寫請求執(zhí)行后通知Host中與之對應(yīng)的VF軟件實例,以便于該VF軟件實例觸發(fā)相應(yīng)FE接收寫入該HPA所對應(yīng)緩存中的數(shù)據(jù)。在另一種應(yīng)用場景下,Host將BE與空閑的VF軟件實例綁定之后,F(xiàn)E可預(yù)分配用于DMA的緩存;FE將該預(yù)分配的用于DMA的緩存對應(yīng)的GPA寫入Host與VM之間的共享內(nèi)存中;Host (如Host中的上述BE或者其它模塊)可將該用于DMA的緩存對應(yīng)的GPA修改為對應(yīng)的HPA(例如,Host中設(shè)置有地址轉(zhuǎn)換頁表,該地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系;Host (如Host中的上述BE或其它模塊)可通過查詢地址轉(zhuǎn)換頁表獲得該用于DMA的緩存對應(yīng)的GPA所對應(yīng)的HPA,將該用于DMA的緩存對應(yīng)的GPA修改為獲得的ΗΡΑ) ;Host中與該BE綁定的VF軟件實例可通過該BE的導(dǎo)出程序接口獲取該用于DMA的緩存對應(yīng)的HPA ;將獲取到的該用于DMA的緩存對應(yīng)的HPA寫入該VF軟件實例對應(yīng)的VF設(shè)備的接收隊列中;該VF設(shè)備在需要接收數(shù)據(jù)時從其接收隊列中選取用于DMA的緩存對應(yīng)的ΗΡΑ,并可以選取的該HPA作為目的地址發(fā)起DMA寫請求(該DMA寫請求用于向緩存中寫入數(shù)據(jù));該VF設(shè)備還可在DMA寫請求執(zhí)行后通知Host中與之對應(yīng)的VF軟件實例,以便于該VF軟件實例觸發(fā)相應(yīng)的FE接收寫入該HPA所對應(yīng)緩存中的數(shù)據(jù)。為便于理解,下面以發(fā)送數(shù)據(jù)的舉例過程為例來介紹基于上述機制構(gòu)建起的應(yīng)用架構(gòu)的可選交互方式。在一種應(yīng)用場景下,Host將BE與空閑的VF軟件實例綁定之后,F(xiàn)E可將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入Host與VM之間的共享內(nèi)存中;相應(yīng)BE可調(diào)用與之綁定的VF軟件實例的程序發(fā)送接口,將該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入該VF軟件實例對應(yīng)的VF設(shè)備的發(fā)送隊列;該VF設(shè)備在發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以其發(fā)送隊列中記錄的GPA作為目的地址發(fā)起DMA讀請求(該DMA寫請求用于從緩存中讀取數(shù)據(jù));IOMMU將經(jīng)過的該DMA讀請求的目的地址GPA修改為對應(yīng)的HPA(I0MMU中例如設(shè)置有地址轉(zhuǎn)換頁表,其中該地址轉(zhuǎn)換頁表中記錄HPA和GPA間的映射對應(yīng)關(guān)系;當DMA讀請求經(jīng)過時,IOMMU可通過查詢地址轉(zhuǎn)換頁表獲得經(jīng)過的該DMA讀請求的目的地址GPA所對應(yīng)的HPA,將該DMA讀請求的目的地址GPA修改為獲得的該ΗΡΑ)。進一步的,該VF設(shè)備還可在該DMA讀請求執(zhí)行后通知Host中與之對應(yīng)的VF軟件實例,以便于該VF軟件實例觸發(fā)相應(yīng)FE釋放對應(yīng)緩存。
在另一種應(yīng)用場景下,Host將BE與空閑的VF軟件實例綁定之后,F(xiàn)E可將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入Host與VM之間的共享內(nèi)存中;Host (如Host中的上述BE或者其它模塊)可將該緩存對應(yīng)的GPA修改為對應(yīng)的HPA(例如,Host中設(shè)置有地址轉(zhuǎn)換頁表,其中,該地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系;Host (如Host中的上述BE或其它模塊)可通過查詢地址轉(zhuǎn)換頁表獲得該緩存對應(yīng)的GPA所對應(yīng)的HPA,將該緩存對應(yīng)的GPA修改為獲得的該ΗΡΑ),相應(yīng)BE可調(diào)用與之綁定的VF軟件實例的程序發(fā)送接口將該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的HPA寫入該VF軟件實例對應(yīng)的VF設(shè)備的發(fā)送隊列;該VF設(shè)備在發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以其發(fā)送隊列中記錄的HPA作為目的地址發(fā)起DMA讀請求。進一步的,該VF設(shè)備還可在該DMA讀請求執(zhí)行后通知Host中與之對應(yīng)的VF軟件實例,以便于該VF軟件實例觸發(fā)相應(yīng)FE釋放對應(yīng)緩存。本實施例主要以數(shù)據(jù)發(fā)送和接收的過程為例來介紹基于上述機制構(gòu)建起的應(yīng)用架構(gòu)的交互方式,其它應(yīng)用場景下的交互方式可以此類推。由上可見,本實施例中在輸入/輸出1/0設(shè)備的1/0虛擬功能啟動后,宿主機Host中產(chǎn)生若干個VF軟件實例;其中,啟動1/0虛擬功能后的1/0設(shè)備虛擬出對應(yīng)的若干個VF設(shè)備;Host中產(chǎn)生的每個上述VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host創(chuàng)建與上述1/0設(shè)備類型相同的1/0虛擬設(shè)備,其中,該1/0虛擬設(shè)備的后端實例BE創(chuàng)建于Host中,該1/0虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的VM中;將BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),1/0設(shè)備虛擬出的一個VF設(shè)備和一個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于1/0設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可以提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且,由于虛擬設(shè)備前端驅(qū)動(即FE)在VM內(nèi),通過Host內(nèi)的后端驅(qū)動(即BE)傳遞數(shù)據(jù),VM不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。本發(fā)明實施例還提供一種虛擬化處理方法,可應(yīng)用于計算節(jié)點上,該計算節(jié)點可包括硬件層、運行在該硬件層之上的Host、以及運行在該Host之上的至少一個VM,其中,該硬件層包括輸入/輸出1/0設(shè)備,該1/0設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,該Host中具有若干個VF軟件實例,每個上述VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host中還具有與上述1/0設(shè)備類型相同的1/0虛擬設(shè)備的后端實例BE,VM中具有上述1/0虛擬設(shè)備的前端實例FE ;其中,該Host中的上述BE與空閑的上述VF軟件實例綁定,該方法包括FE預(yù)分配用于直接內(nèi)存存取DMA的緩存;與上述BE綁定的上述VF軟件實例通過上述BE的導(dǎo)出程序接口獲取上述用于DMA的緩存對應(yīng)的地址,將獲取到的上述用于DMA的緩存對應(yīng)的地址寫入上述VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元中;上述VF設(shè)備在需要接收數(shù)據(jù)時從上述第一存儲單元中選取用于DMA的緩存對應(yīng)的地址,以選取的該用于DMA的緩存對應(yīng)的地址作為目的地址發(fā)起DMA寫請求;上述VF設(shè)備在上述DMA寫請求執(zhí)行后通知上述Host中與之對應(yīng)的上述VF軟件實例,以便上述VF軟件實例觸發(fā)上述FE接收寫入上述地址所對應(yīng)緩存中的數(shù)據(jù)。參見圖5,本發(fā)明實施例的另一種虛擬化處理方法的步驟可包括501、FE預(yù)分配用于直接內(nèi)存存取DMA的緩存;
14
502、與BE綁定的上述VF軟件實例通過該BE的導(dǎo)出程序接口獲取上述用于DMA的緩存對應(yīng)的地址(該地址例如為HPA或GPA),該VF軟件實例將獲取到的上述用于DMA的緩存對應(yīng)的地址寫入上述VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元(其中,第一存儲單元例如為VF設(shè)備的接收隊列或接收列表或其它可記錄地址的數(shù)據(jù)存儲結(jié)構(gòu))中;503、上述VF設(shè)備在需要接收數(shù)據(jù)時從上述第一存儲單元中選取用于DMA的緩存對應(yīng)的地址,以選取的該用于DMA的緩存對應(yīng)的地址作為目的地址發(fā)起DMA寫請求;504、上述VF設(shè)備在上述DMA寫請求執(zhí)行后通知上述Host中與之對應(yīng)的上述VF軟件實例,以便上述VF軟件實例觸發(fā)上述FE接收寫入上述地址所對應(yīng)緩存中的數(shù)據(jù)。由上可見,本實施例中計算節(jié)點可包括硬件層、運行在該硬件層之上的Host、以及運行在該Host之上的至少一個VM,其中,該硬件層包括輸入/輸出I/O設(shè)備,該I/O設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,該Host中具有若干個VF軟件實例,每個上述VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host中還具有與上述1/0設(shè)備類型相同的1/0虛擬設(shè)備的后端實例BE,VM中具有上述1/0虛擬設(shè)備的前端實例FE ;其中,該Host中的上述BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),1/0設(shè)備虛擬出的一個VF設(shè)備和一個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于1/0設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可以提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且由于1/0虛擬設(shè)備的前端驅(qū)動(即冊)在VM內(nèi),該FE通過Host內(nèi)的后端驅(qū)動(即BE)來傳遞數(shù)據(jù),VM不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。在本發(fā)明一個實施例中,F(xiàn)E預(yù)分配用于DMA的緩存后,F(xiàn)E可將該預(yù)分配的用于DMA的緩存對應(yīng)的GPA寫入所述Host與VM之間的共享內(nèi)存中;與BE綁定的VF軟件實例則可通過該BE的導(dǎo)出程序接口從共享內(nèi)存中獲取該用于DMA的緩存對應(yīng)的GPA(當然,F(xiàn)E也可將該預(yù)分配的用于DMA的緩存對應(yīng)的GPA通知給對應(yīng)的BE ;而與該BE綁定的VF軟件實例則可通過該BE的導(dǎo)出程序接口獲取該用于DMA的緩存對應(yīng)的GPA),將獲取到的該用于DMA的緩存對應(yīng)的GPA寫入該VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元中;而該VF設(shè)備在需要接收數(shù)據(jù)時可從該第一存儲單元中選取用于DMA的緩存對應(yīng)的GPA,以選取的該用于DMA的緩存對應(yīng)的GPA作為目的地址發(fā)起DMA寫請求;IOMMU可將經(jīng)過的該DMA寫請求的目的地址GPA修改為對應(yīng)的HPA(例如IOMMU中設(shè)置有地址轉(zhuǎn)換頁表,其中,該地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系;IOMMU通過查詢地址轉(zhuǎn)換頁表獲得所述DMA寫請求的目的地址GPA所對應(yīng)的HPA,將該DMA寫請求的目的地址GPA修改為獲得的該ΗΡΑ) ;VF設(shè)備在目的地址GPA被修改為HPA的該DMA寫請求執(zhí)行后可通知Host中與之對應(yīng)的所述VF軟件實例,以便該VF軟件實例觸發(fā)該FE接收寫入上述HPA所對應(yīng)緩存中的數(shù)據(jù)。在本發(fā)明另一個實施例中,F(xiàn)E預(yù)分配用于DMA的緩存后,該FE可將該預(yù)分配的用于DMA的緩存對應(yīng)的GPA寫入Host與VM之間的共享內(nèi)存中;該Host可將該共享內(nèi)存中用于DMA的緩存對應(yīng)的GPA修改為對應(yīng)的HPA (例如,Host中設(shè)置有地址轉(zhuǎn)換頁表,其中,該地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系;Host可通過查詢地址轉(zhuǎn)換頁表獲得共享內(nèi)存中的用于DMA的緩存對應(yīng)的GPA所對應(yīng)的HPA,將共享內(nèi)存中的用于DMA的緩存對應(yīng)的GPA修改為獲得的該ΗΡΑ。當然FE也可將該預(yù)分配的用于DMA的緩存對應(yīng)的GPA通知給對應(yīng)的BE,該Host可將該用于DMA的緩存對應(yīng)的GPA修改為對應(yīng)的ΗΡΑ) ’與BE綁定的VF軟件實例通過所述BE的導(dǎo)出程序接口獲取所述用于DMA的緩存對應(yīng)的HPA ;將獲取到的所述用于DMA的緩存對應(yīng)的HPA寫入VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元中;該VF設(shè)備在需要接收數(shù)據(jù)時從該第一存儲單元中選取用于DMA的緩存對應(yīng)的HPA,以選取的該HPA作為目標地址發(fā)起DMA寫請求。在本發(fā)明一個實施例中,當FE有數(shù)據(jù)需要發(fā)送時,F(xiàn)E可將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入Host與VM之間的共享內(nèi)存中;BE可從該共享內(nèi)存中獲取待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA (當然,F(xiàn)E也可將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA通知給對應(yīng)的BE,BE根據(jù)該通知獲取該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA);該BE調(diào)用與之綁定的VF軟件實例的程序發(fā)送接口,將該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入該VF軟件實例對應(yīng)的VF設(shè)備的第二存儲單元(其中第二存儲單元例如為VF設(shè)備的發(fā)送隊列或發(fā)送列表或其它可記錄地址的數(shù)據(jù)存儲結(jié)構(gòu));該VF設(shè)備在發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以第二存儲單元中記錄的GPA作為目的地址發(fā)起DMA讀請求;IOMMU可將經(jīng)過的該DMA讀請求的目的地址GPA修改為對應(yīng)的HPA (例如IOMMU中設(shè)置有地址轉(zhuǎn)換頁表,其中,該地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系,IOMMU通過查詢地址轉(zhuǎn)換頁表獲得該DMA讀請求的目的地址GPA所對應(yīng)的HPA,將該DMA寫請求的目的地址GPA修改為獲得的該ΗΡΑ)。進一步的,VF設(shè)備還可在DMA讀請求執(zhí)行后通知Host中與之對應(yīng)的VF軟件實例,以便于該VF軟件實例觸發(fā)FE釋放對應(yīng)緩存。在本發(fā)明的另一個實施例中,當FE有數(shù)據(jù)需要發(fā)送時,F(xiàn)E可將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入Host與VM之間的共享內(nèi)存中;Host將該共享內(nèi)存中的該待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA修改為對應(yīng)的HPA (例如Host中設(shè)置有地址轉(zhuǎn)換頁表,其中,該地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系;Host通過查詢地址轉(zhuǎn)換頁表獲得共享內(nèi)存中的該待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA所對應(yīng)的HPA,將該共享內(nèi)存中的該待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA修改為所對應(yīng)的ΗΡΑ。當然,F(xiàn)E也可將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA通知給Host,Host將該待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA修改為對應(yīng)的ΗΡΑ) ;BE獲取該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的ΗΡΑ,調(diào)用與之綁定的VF軟件實例的程序發(fā)送接口,將該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的HPA寫入該VF軟件實例對應(yīng)的VF設(shè)備的第二存儲單元(其中,第二存儲單元例如為VF設(shè)備的發(fā)送隊列或發(fā)送列表或其它可記錄地址的數(shù)據(jù)存儲結(jié)構(gòu));該VF設(shè)備在發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以第二存儲單元中記錄的HPA作為目的地址發(fā)起DMA讀請求。進一步的,VF設(shè)備可在DMA讀請求執(zhí)行后通知Host中與之對應(yīng)的VF軟件實例,以便于該VF軟件實例觸發(fā)FE釋放對應(yīng)緩存。為便于更好的理解和實施本發(fā)明實施例上述方案,下面以數(shù)據(jù)接收和數(shù)據(jù)發(fā)送的幾種具體應(yīng)用場景為例進行進一步介紹。參見圖6_a,本發(fā)明實施例提供的另一種虛擬化處理方法可包括601、Host 使能 IOMMU ;其中,Host可在啟動時或者啟動后的某一時刻使能IOMMU ;IOMMU當然亦可在設(shè)備上電自行啟動相應(yīng)功能,此時則無需Host使能IOMMU ;當然亦可由其它模塊來使能I0MMU。602、Host中安裝1/0設(shè)備(如稱E-1)對應(yīng)的PF設(shè)備和VF設(shè)備的驅(qū)動程序;603、Host使能1/0設(shè)備E-I的1/0虛擬功能;其中,例如Host可在啟動時或者啟動后的某一時刻使能1/0設(shè)備El的1/0虛擬功能。其中,被使能I/O虛擬功能后的I/O設(shè)備E-I可虛擬出對應(yīng)的物理功能PF設(shè)備和若干個虛擬功能VF設(shè)備,當然亦可由其它模塊使能I/O設(shè)備E-I,當然I/O設(shè)備E-I亦可在設(shè)備上電自行啟動其I/O虛擬功能,此時則無需Host或其它模塊使能I/O設(shè)備El的I/O虛擬功能。其中,I/O設(shè)備E-I虛擬出的PF設(shè)備主要負責管理功能,VF設(shè)備主要負責處理功能。604、Host中產(chǎn)生PF軟件實例和若干個VF軟件實例;其中,啟動I/O虛擬功能后的I/O設(shè)備E-I可虛擬出對應(yīng)的PF設(shè)備和若干個VF設(shè)備;Host中產(chǎn)生的每個VF軟件實例分別對應(yīng)不同的VF設(shè)備,Host中還可產(chǎn)生的PF軟件實例對應(yīng)與I/O設(shè)備E-I虛擬出的PF設(shè)備。605、Host中創(chuàng)建與1/0設(shè)備E-I類型相同的1/0虛擬設(shè)備(如稱vE-Ι);其中,該1/0虛擬設(shè)備vE-Ι的后端實例BE(如稱BE-1)創(chuàng)建于Host中,該1/0虛擬設(shè)備vE-Ι的前端實例FE(如稱FE-1)創(chuàng)建于啟動后的VMQ^IVM-l)中。例如可由Host觸發(fā)在啟動后的VM-I中創(chuàng)建1/0虛擬設(shè)備vE-Ι對應(yīng)的前端實例FE-1。其中,可以認為VM-I中創(chuàng)建的FE-I和Host中創(chuàng)建BE-I共同構(gòu)成了 1/0虛擬設(shè)備vE_l的驅(qū)動程序。606、Host將創(chuàng)建的BE-1與1個空閑的VF軟件實例(如稱Vfe_l)綁定;其中,VF軟件實例Vfe-I例如與1/0設(shè)備E_1虛擬出的VF設(shè)備(如稱VF_1)對應(yīng)。其中,所謂空閑的VF軟件實例,即是還未與其它后端實例BE綁定的VF軟件實例。至此,1/0設(shè)備E-I虛擬出的VF設(shè)備VF-I和VM-I中的前端實例FE-I之間的通道打通,這樣FE-I可通過Host中的BE-I來訪問VF設(shè)備VF-I,而VF設(shè)備VF-I是單獨分配給該VM-I使用的,VF設(shè)備VF-I是由1/0設(shè)備E-I虛擬出,可以提供高效的設(shè)備接口,這就有利于VM-I獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且由于虛擬設(shè)備前端驅(qū)動(即FE-1)在VM-I內(nèi),通過Host內(nèi)的后端驅(qū)動(即BE-1)傳遞數(shù)據(jù),VM-I不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享。607、FE-I預(yù)分配用于直接內(nèi)存存取(DMA)的緩存;例如,F(xiàn)E-I預(yù)分配用于DMA的緩存可為[GPAl,Lenl],…[GPAn,Lenn],即可預(yù)分配用于DMA的多段緩存,其中,GPAl表示緩存的GPA起始地址,Lenl表示緩存長度,以此類推。608、FE-I將預(yù)分配的用于DMA的緩存對應(yīng)的GPA寫入Host與VM-I之間的共享內(nèi)存(shared Memory)中,并可通知BE_1 (當然亦可有BE_1自行監(jiān)測后發(fā)現(xiàn)共享內(nèi)存中寫入了用于DMA的緩存對應(yīng)的GPA);609、VF軟件實例Vfe-I通過BE-I的導(dǎo)出程序接口獲取用于DMA的緩存對應(yīng)的GPA,將獲取的該用于DMA的緩存對應(yīng)的GPA寫入與該VF軟件實例Vfe-I對應(yīng)的VF設(shè)備VF-I的接收隊列中;610、VF設(shè)備VF-I在需接收數(shù)據(jù)時從其接收隊列中選取用于DMA的緩存對應(yīng)的GPA,以選取的該GPA作為目的地址發(fā)起DMA寫請求;其中,VF設(shè)備VF-I發(fā)起的DMA寫請求將經(jīng)過IOMMU ;611、IOMMU將經(jīng)過的DMA寫請求的目的地址GPA修改為對應(yīng)的HPA ;其中,例如在IOMMU中設(shè)置地址轉(zhuǎn)換頁表該地址轉(zhuǎn)換頁表中記錄GPA和HPA之間的映射關(guān)系(例如圖6-b所示)。當DMA寫請求經(jīng)過時,IOMMU可通過查詢地址轉(zhuǎn)換頁表獲得經(jīng)過的該DMA寫請求的目的地址GPA所對應(yīng)的HPA,將該DMA寫請求的目的地址GPA修改為獲得的該ΗΡΑ。612、VF設(shè)備VF-I在目的地址修改為HPA的DMA寫請求執(zhí)行后通知Host中與之對應(yīng)的VF軟件實例Vfe-I,以便于該VF軟件實例Vfe-I觸發(fā)VM-I中的前端實例FE-I接收寫入上述HPA所對應(yīng)緩存中的數(shù)據(jù)。VM-I中的前端實例FE-I可在VF軟件實例Vfe-I的觸發(fā)下,讀取寫入到上述HPA所對應(yīng)緩存中的數(shù)據(jù)。由上可見,本實施例中Host使能I/O設(shè)備的I/O虛擬功能啟動后,Host中產(chǎn)生若干個VF軟件實例;其中,啟動I/O虛擬功能后的I/O設(shè)備虛擬出對應(yīng)的若干個VF設(shè)備;Host中產(chǎn)生的每個VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host創(chuàng)建與上述1/0設(shè)備類型相同的1/0虛擬設(shè)備,其中,該1/0虛擬設(shè)備的后端實例BE創(chuàng)建于Host中,該1/0虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的VM中;將BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),1/0設(shè)備虛擬出的1個VF設(shè)備和1個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于I/0設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且,由于虛擬設(shè)備前端驅(qū)動(即FE)在VM內(nèi),通過Host內(nèi)的后端驅(qū)動(即BE)傳遞數(shù)據(jù),VM不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。此外,在DMA寫請求執(zhí)行過程中由硬件模塊IOMMU來完成GPA和HPA之間的轉(zhuǎn)換,有利于減少CPU開銷進而提升性能。參見圖7-a、本發(fā)明實施例提供的另一種虛擬化處理方法可包括701、Host中安裝1/0設(shè)備(稱E_2)對應(yīng)的PF設(shè)備和VF設(shè)備的驅(qū)動程序;702、Host使能1/0設(shè)備E-2的1/0虛擬功能;其中,例如Host可在啟動時或者啟動后的某一時刻使能1/0設(shè)備E-2的1/0虛擬功能。其中,被Host使能1/0虛擬功能后的1/0設(shè)備E-2可虛擬出對應(yīng)的物理功能PF設(shè)備和若干個虛擬功能VF設(shè)備,當然,亦可由其它模塊使能1/0設(shè)備E-2,當然1/0設(shè)備E-2亦可在設(shè)備上電自行啟動其1/0虛擬功能,此時則無需Host或其它模塊使能1/0設(shè)備E-2的1/0虛擬功能。其中,1/0設(shè)備E-2虛擬出的PF設(shè)備主要負責管理功能,VF設(shè)備主要負責處理功能。703,Host中產(chǎn)生PF軟件實例和若干個VF軟件實例;其中,啟動1/0虛擬功能后的1/0設(shè)備E-2可虛擬出對應(yīng)的PF設(shè)備和若干個VF設(shè)備;Host中產(chǎn)生的每個VF軟件實例分別對應(yīng)不同的VF設(shè)備,Host中產(chǎn)生的PF軟件實例對應(yīng)與1/0設(shè)備E-2虛擬出的PF設(shè)備。704、Host創(chuàng)建與1/0設(shè)備E-2類型相同的1/0虛擬設(shè)備(如稱vE-2);其中,該1/0虛擬設(shè)備vE-2的后端實例BE(如稱BE-2)創(chuàng)建于Host中,該1/0虛擬設(shè)備vE-2的前端實例FE (如稱FE-2)創(chuàng)建于啟動后的VM(如稱VM-2)中。例如可由Host觸發(fā)在啟動后的VM-2中創(chuàng)建1/0虛擬設(shè)備vE-2對應(yīng)的前端實例FE-2。其中,可以認為VM-2中創(chuàng)建的FE-2和Host中創(chuàng)建BE-2共同構(gòu)成了 1/0虛擬設(shè)備vE_2的驅(qū)動程序。705、Host將創(chuàng)建的BE-2與1個空閑的VF軟件實例(如稱Vfe_2)綁定;其中,VF軟件實例Vfe-2例如與1/0設(shè)備E_2虛擬出的VF設(shè)備(如稱VF-2)對應(yīng)。其中,所謂空閑的VF軟件實例,即是還未與其它后端實例BE綁定的VF軟件實例。至此,I/O設(shè)備E-2虛擬出的VF設(shè)備VF-2和VM-2中的前端實例FE-2之間的通道打通,這樣FE-2可通過Host中的BE-2來訪問VF設(shè)備VF-2,而VF設(shè)備VF-2是單獨分配給該VM-2使用的,VF設(shè)備VF-2是由I/O設(shè)備E-2虛擬出,可以提供高效的設(shè)備接口,這就有利于VM-2獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且由于虛擬設(shè)備前端驅(qū)動(即FE-2)在VM-2內(nèi),通過Host內(nèi)的后端驅(qū)動(即BE-2)傳遞數(shù)據(jù),VM-2不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享。706、FE_2預(yù)分配用于直接內(nèi)存存取(DMA)的緩存;例如,F(xiàn)E-2預(yù)分配用于DMA的緩存可為[GPAl,Lenl],... [GPAn,Lenn],即可預(yù)分配用于DMA的多段緩存,其中,GPAl表示緩存的GPA起始地址,Lenl表示緩存長度,以此類推。707、FE-2將預(yù)分配的用于DMA的緩存對應(yīng)的GPA寫入Host與VM-2之間的共享內(nèi)存(shared Memory)中,并可通知BE_2 (當然亦可有BE_2自行監(jiān)測后發(fā)現(xiàn)共享內(nèi)存中寫入了用于DMA的緩存對應(yīng)的GPA);708、Host將共享內(nèi)存中用于DMA的緩存對應(yīng)的GPA修改為對應(yīng)的HPA ;其中,例如Host中設(shè)置有地址轉(zhuǎn)換頁表,該地址轉(zhuǎn)換頁表中記錄GPA和HPA之間的映射關(guān)系(例如圖7-b)。其中,Host例如可通過查詢地址轉(zhuǎn)換頁表獲得經(jīng)過的該用于DMA的緩存對應(yīng)的GPA所對應(yīng)的HPA,將該用于DMA的緩存對應(yīng)的GPA修改為獲得的該ΗΡΑ。709、VF軟件實例Vfe-2通過BE-2的導(dǎo)出程序接口獲取用于DMA的緩存對應(yīng)的ΗΡΑ,將獲取的該用于DMA的緩存對應(yīng)的HPA寫入與該VF軟件實例Vfe_2對應(yīng)的VF設(shè)備VF-2的接收隊列中;710、VF設(shè)備VF-2在需接收數(shù)據(jù)時從其接收隊列中選取用于DMA的緩存對應(yīng)的ΗΡΑ,以選取的該HPA作為目的地址發(fā)起DMA寫請求;71UVF設(shè)備VF-2在上述DMA寫請求執(zhí)行后可通知Host中與之對應(yīng)的VF軟件實例Vfe-2,以便于該VF軟件實例Vfe-2觸發(fā)VM-2中的前端實例FE-2接收寫入上述HPA所對應(yīng)緩存中的數(shù)據(jù)。VM-2中的前端實例FE-2可在VF軟件實例Vfe_2的觸發(fā)下,讀取寫入到上述HPA所對應(yīng)緩存中的數(shù)據(jù)。由上可見,本實施例中Host使能1/0設(shè)備的1/0虛擬功能啟動后,Host中產(chǎn)生若干個VF軟件實例;其中,啟動1/0虛擬功能后的1/0設(shè)備虛擬出對應(yīng)的若干個VF設(shè)備;Host中產(chǎn)生的每個VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host創(chuàng)建與上述1/0設(shè)備類型相同的1/0虛擬設(shè)備,其中,該1/0虛擬設(shè)備的后端實例BE創(chuàng)建于Host中,該1/0虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的VM中;將BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),1/0設(shè)備虛擬出的1個VF設(shè)備和1個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于I/0設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且,由于虛擬設(shè)備前端驅(qū)動(即FE)在VM內(nèi),通過Host內(nèi)的后端驅(qū)動(即BE)傳遞數(shù)據(jù),VM不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。
此外,在DMA寫請求執(zhí)行過程中由Host完成GPA和HPA之間的轉(zhuǎn)換,有利于減少硬件資源配置,簡化處理流程。參見圖8_a、本發(fā)明實施例提供的另一種虛擬化處理方法可包括801、Host 使能 IOMMU ;其中,Host可在啟動時或者啟動后的某一時刻使能IOMMU ;IOMMU當然亦可在設(shè)備上電自行啟動相應(yīng)功能,此時則無需Host使能IOMMU ;當然亦可由其它模塊來使能I0MMU。802、Host中安裝1/0設(shè)備(如稱E_3)對應(yīng)的PF設(shè)備和VF設(shè)備的驅(qū)動程序;803、Host使能1/0設(shè)備E-3的1/0虛擬功能;其中,例如Host可在啟動時或者啟動后的某一時刻使能1/0設(shè)備El的1/0虛擬功能。其中,被使能1/0虛擬功能后的1/0設(shè)備E3-3可虛擬出對應(yīng)的物理功能PF設(shè)備和若干個虛擬功能VF設(shè)備,當然亦可由其它模塊使能1/0設(shè)備E-3,當然1/0設(shè)備E-I亦可在設(shè)備上電自行啟動其1/0虛擬功能,此時則無需Host或其它模塊使能1/0設(shè)備El的I/0虛擬功能。其中,1/0設(shè)備E-I虛擬出的PF設(shè)備主要負責管理功能,VF設(shè)備主要負責處理功能。804、Host中產(chǎn)生PF軟件實例和若干個VF軟件實例;其中,啟動1/0虛擬功能后的1/0設(shè)備E-3可虛擬出對應(yīng)的PF設(shè)備和若干個VF設(shè)備;Host中產(chǎn)生的每個VF軟件實例分別對應(yīng)不同的VF設(shè)備,Host中還可產(chǎn)生的PF軟件實例對應(yīng)與1/0設(shè)備E-I虛擬出的PF設(shè)備。805、Host中創(chuàng)建與1/0設(shè)備E-3類型相同的1/0虛擬設(shè)備(如稱vE-3);其中,該1/0虛擬設(shè)備vE-3的后端實例BE(如稱BE-3)創(chuàng)建于Host中,該1/0虛擬設(shè)備vE-3的前端實例FE (如稱FE-3)創(chuàng)建于啟動后的VM(如稱VM-3)中。例如可由Host觸發(fā)在啟動后的VM-3中創(chuàng)建1/0虛擬設(shè)備vE-3對應(yīng)的前端實例FE-3。其中,可以認為VM-3中創(chuàng)建的FE-3和Host中創(chuàng)建BE-3共同構(gòu)成了 1/0虛擬設(shè)備vE_3的驅(qū)動程序。806、Host將創(chuàng)建的BE-3與1個空閑的VF軟件實例(如稱Vfe_3)綁定;其中,VF軟件實例Vfe-3例如與1/0設(shè)備E_3虛擬出的VF設(shè)備(如稱VF-3)對應(yīng)。其中,所謂空閑的VF軟件實例,即是還未與其它后端實例BE綁定的VF軟件實例。至此,1/0設(shè)備E-3虛擬出的VF設(shè)備VF-3和VM-3中的前端實例FE-3之間的通道打通,這樣FE-3可通過Host中的BE-3來訪問VF設(shè)備VF-3,而VF設(shè)備VF-3是單獨分配給該VM-3使用的,VF設(shè)備VF-3是由1/0設(shè)備E-3虛擬出,可以提供高效的設(shè)備接口,這就有利于VM-3獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且由于虛擬設(shè)備前端驅(qū)動(即FE-3)在VM-3內(nèi),通過Host內(nèi)的后端驅(qū)動(即BE-3)傳遞數(shù)據(jù),VM-3不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享。807、前端實例FE-3將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入Host與VM_3之間的共享內(nèi)存中,并可通知BE-3(當然亦可有BE-3自行監(jiān)測后發(fā)現(xiàn)共享內(nèi)存中寫入了待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA);例如待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA為[GPA1,Lenl],…[GPAn,Lenn],即可預(yù)分配用于DMA的多段緩存,其中,GPAl表示緩存的GPA起始地址,Lenl表示緩存長度,以此類推。808、BE-3調(diào)用與之綁定的VF軟件實例Vfe_3的程序發(fā)送接口,將上述待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入與該VF軟件實例Vfe-3對應(yīng)的VF設(shè)備VF-3的發(fā)送隊列中;809、VF設(shè)備VF-3發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以其發(fā)送隊列中記錄的GPA作為目的地址發(fā)起DMA讀請求;其中,VF設(shè)備VF-3例如可定期或不定期檢測其發(fā)送隊列,當發(fā)現(xiàn)其發(fā)送隊列新寫入了 GPA,則認為有數(shù)據(jù)需發(fā)送,或者VF軟件實例Vfe-3可在發(fā)送隊列新寫入了 GPA后通知VF 設(shè)備 VF-3。其中,VF設(shè)備VF-3發(fā)起的DMA讀請求將經(jīng)過IOMMU ;810、IOMMU將經(jīng)過的DMA讀請求的目的地址GPA修改為對應(yīng)的HPA ;其中,例如在IOMMU中設(shè)置地址轉(zhuǎn)換頁表,該地址轉(zhuǎn)換頁表中記錄GPA和HPA之間的映射關(guān)系(例如8-b所示)。其中,當DMA讀請求經(jīng)過時,IOMMU可通過查詢地址轉(zhuǎn)換頁表獲得經(jīng)過的該DMA讀請求的目的地址GPA所對應(yīng)的HPA,將該DMA讀請求的目的地址GPA修改為獲得的該ΗΡΑ。811、VF設(shè)備VF-3在目的地址修改為HPA的DMA讀請求執(zhí)行后通知Host中與之對應(yīng)的VF軟件實例Vfe-3,以便于該VF軟件實例Vfe_3觸發(fā)VM-3中的前端實例FE-3釋放上述HPA所對應(yīng)緩存。VM-3中的前端實例FE-3可在VF軟件實例Vfe_3的觸發(fā)下,釋放上述HPA所對應(yīng)緩存,以便緩存新的數(shù)據(jù)。由上可見,本實施例中Host使能I/O設(shè)備的I/O虛擬功能啟動后,Host中產(chǎn)生若干個VF軟件實例;其中,啟動I/O虛擬功能后的I/O設(shè)備虛擬出對應(yīng)的若干個VF設(shè)備;Host中產(chǎn)生的每個VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host創(chuàng)建與上述1/0設(shè)備類型相同的1/0虛擬設(shè)備,其中,該1/0虛擬設(shè)備的后端實例BE創(chuàng)建于Host中,該1/0虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的VM中;將BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),1/0設(shè)備虛擬出的1個VF設(shè)備和1個VM中的前端實例 之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于I/0設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且,由于虛擬設(shè)備前端驅(qū)動(即FE)在VM內(nèi),通過Host內(nèi)的后端驅(qū)動(即BE)傳遞數(shù)據(jù),VM不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。此外,在DMA讀請求執(zhí)行過程中由硬件模塊IOMMU來完成GPA和HPA之間的轉(zhuǎn)換,有利于減少CPU開銷進而提升性能。參見圖9-a、本發(fā)明實施例提供的另一種虛擬化處理方法可包括901、Host中安裝1/0設(shè)備(稱E_4)對應(yīng)的PF設(shè)備和VF設(shè)備的驅(qū)動程序;902、Host使能1/0設(shè)備E-4的1/0虛擬功能;其中,例如Host可在啟動時或者啟動后的某一時刻使能1/0設(shè)備El的1/0虛擬功能。其中,被使能1/0虛擬功能后的1/0設(shè)備E-4可虛擬出對應(yīng)的物理功能PF設(shè)備和若干個虛擬功能VF設(shè)備,當然亦可由其它模塊使能1/0設(shè)備E-4,當然1/0設(shè)備E-4亦可在設(shè)備上電自行啟動其1/0虛擬功能,此時則無需Host或其它模塊使能1/0設(shè)備E-4的1/0虛擬功能。其中,1/0設(shè)備El虛擬出的PF設(shè)備主要負責管理功能,VF設(shè)備主要負責處理功能。
903,Host中產(chǎn)生PF軟件實例和若干個VF軟件實例;其中,啟動I/O虛擬功能后的I/O設(shè)備E-4可虛擬出對應(yīng)的PF設(shè)備和若干個VF設(shè)備;Host中產(chǎn)生的每個VF軟件實例分別對應(yīng)不同的VF設(shè)備,Host中產(chǎn)生的PF軟件實例對應(yīng)與I/O設(shè)備E-2虛擬出的PF設(shè)備。904、Host創(chuàng)建與I/O設(shè)備E-2類型相同的I/O虛擬設(shè)備(如稱vE-4);其中,該I/O虛擬設(shè)備vE-4的后端實例BE(如稱BE_4)創(chuàng)建于Host中,該1/0虛擬設(shè)備vE-4的前端實例FE (如稱FE-4)創(chuàng)建于啟動后的VM(如稱VM-4)中。例如可由Host觸發(fā)在啟動后的VM-4中創(chuàng)建1/0虛擬設(shè)備vE-4對應(yīng)的前端實例FE-4。其中,可以認為VM-4中創(chuàng)建的FE-4和Host中創(chuàng)建BE-4共同構(gòu)成了 1/0虛擬設(shè)備vE_4的驅(qū)動程序。905、Host將創(chuàng)建的BE-4與1個空閑的VF軟件實例(如稱Vfe_2)綁定;其中,VF軟件實例Vfe-4例如與1/0設(shè)備E-4虛擬出的VF設(shè)備(如稱VF-4)對應(yīng)。其中,所謂空閑的VF軟件實例,即是還未與其它后端實例BE綁定的VF軟件實例。至此,1/0設(shè)備E-4虛擬出的VF設(shè)備VF-4和VM-4中的前端實例FE-4之間的通道打通,這樣FE-4可通過Host中的BE-4來訪問VF設(shè)備VF-4,而VF設(shè)備VF-4是單獨分配給該VM-4使用的,VF設(shè)備VF-4是由1/0設(shè)備E-4虛擬出,可以提供高效的設(shè)備接口,這就有利于VM-4獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且由于虛擬設(shè)備前端驅(qū)動(即FE-4)在VM-4內(nèi),通過Host內(nèi)的后端驅(qū)動(即BE-4)傳遞數(shù)據(jù),VM-4不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享。906、FE-4將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入Host與VM-4之間的共享內(nèi)存中;并可通知BE-4(當然亦可有BE-4自行監(jiān)測后發(fā)現(xiàn)共享內(nèi)存中寫入了用于DMA的緩存對應(yīng)的GPA);907, Host將共享內(nèi)存中的待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA修改為對應(yīng)的HPA ;其中,例如Host中設(shè)置有地址轉(zhuǎn)換頁表;該地址轉(zhuǎn)換頁表中記錄GPA和HPA之間的映射關(guān)系(例如9-b所示)。其中,Host例如可通過查詢地址轉(zhuǎn)換頁表獲得經(jīng)過的該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA所對應(yīng)的HPA,將該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA修改為獲得的該ΗΡΑ。908、BE-4調(diào)用與之綁定的VF軟件實例Vfe_4的程序發(fā)送接口,將上述待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的HPA寫入與該VF軟件實例Vfe-4對應(yīng)的VF設(shè)備VF-4的發(fā)送隊列中;909、VF設(shè)備VF-4發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以其發(fā)送隊列中記錄的HPA作為目的地址發(fā)起DMA讀請求;其中,VF設(shè)備VF-4例如可定期或不定期檢測其發(fā)送隊列,當發(fā)現(xiàn)其發(fā)送隊列新寫入了 HPA,則認為有數(shù)據(jù)需發(fā)送,或者VF軟件實例Vfe-4可在發(fā)送隊列新寫入了 HPA后通知VF 設(shè)備 VF-4。910、VF設(shè)備VF-4在DMA讀請求執(zhí)行后通知Host中與之對應(yīng)的VF軟件實例Vfe-4,以便于該VF軟件實例Vfe-4觸發(fā)VM-4中的前端實例FE-4釋放上述HPA所對應(yīng)緩存。VM-4中的前端實例FE-4可在VF軟件實例Vfe_4的觸發(fā)下,釋放上述HPA所對應(yīng)緩存,以便緩存新的數(shù)據(jù)。由上可見,本實施例中Host使能1/0設(shè)備的1/0虛擬功能后,Host中產(chǎn)生若干個VF軟件實例;其中,啟動1/0虛擬功能后的1/0設(shè)備虛擬出對應(yīng)的若干個VF設(shè)備;Host中產(chǎn)生的每個上述VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host創(chuàng)建與上述I/O設(shè)備類型相同的I/O虛擬設(shè)備,其中,該I/O虛擬設(shè)備的后端實例BE創(chuàng)建于Host中,該I/O虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的VM中;將BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),I/O設(shè)備虛擬出的一個VF設(shè)備和1個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于I/0設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且,由于虛擬設(shè)備前端驅(qū)動(即FE)在VM內(nèi),通過Host內(nèi)的后端驅(qū)動(即BE)傳遞數(shù)據(jù),VM不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。此外,在DMA讀請求執(zhí)行過程中由Host來完成GPA和HPA之間的轉(zhuǎn)換,有利于減少硬件資源配置,簡化處理流程。為便于更好的理解和實施本發(fā)明實施例的上述方法,下面還提供用于實施上述方法的相關(guān)裝置和計算機系統(tǒng)。參見圖10、本發(fā)明實施例提供一種宿主機1000,可包括第一創(chuàng)建模塊1010、第二創(chuàng)建模塊1020和綁定模塊1030 ;第一創(chuàng)建模塊1010,用于在輸入/輸出1/0設(shè)備的1/0虛擬功能啟動后,在Host1000中產(chǎn)生若干個VF軟件實例;其中,啟動1/0虛擬功能后的上述1/0設(shè)備虛擬出對應(yīng)的若干個虛擬功能VF設(shè)備;Host 1000中產(chǎn)生的每個上述VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;第二創(chuàng)建模塊1020,用于創(chuàng)建與1/0設(shè)備類型相同的1/0虛擬設(shè)備,其中,1/0虛擬設(shè)備的后端實例BE創(chuàng)建于Host 1000中,該1/0虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的虛擬機VM中;綁定模塊1030,用于將第二創(chuàng)建模塊1020創(chuàng)建的BE與第一創(chuàng)建模塊1010創(chuàng)建的空閑的VF軟件實例綁定。可以理解的是,本實施例宿主機1000可如上述方法實施例中的Host,其各個功能模塊的功能可以根據(jù)上述方法實施例中的方法具體實現(xiàn),其具體實現(xiàn)過程可以參照上述方法實施例的相關(guān)描述,此處不再贅述。由上可見,本實施例中在1/0設(shè)備的1/0虛擬功能啟動后,Host 1000中產(chǎn)生若干個VF軟件實例;啟動1/0虛擬功能后的1/0設(shè)備虛擬出對應(yīng)的若干個VF設(shè)備;Host 1000中產(chǎn)生的每個VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host創(chuàng)建與1/0設(shè)備類型相同的1/0虛擬設(shè)備,其中,該1/0虛擬設(shè)備的后端實例BE創(chuàng)建于Host 1000中,該1/0虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的VM中;將BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用1個VF設(shè)備的應(yīng)用架構(gòu),1/0設(shè)備虛擬出的1個VF設(shè)備和1個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于1/0設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且,由于虛擬設(shè)備前端驅(qū)動(即FE)在VM內(nèi),通過Host 1000的后端驅(qū)動(即BE)傳遞數(shù)據(jù),VM不感知Host1000實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。參見圖11-a,本發(fā)明實施例提供一種計算節(jié)點1100,可包括,
23
硬件層1110、運行在硬件層1110之上的宿主機Host 1120、以及運行在Hostll20之上的至少一個虛擬機VM 1130 ;其中,硬件層1110包括I/O設(shè)備1111,I/O設(shè)備1111虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備11111,Host 1120中具有若干個VF軟件實例1121,每個VF軟件實例1121分別對應(yīng)不同的VF設(shè)備11111 ;Host 1120中還具有與I/O設(shè)備1111類型相同的I/O虛擬設(shè)備的后端實例BE 1122,VM 1130中具有該I/O虛擬設(shè)備的前端實例FE 1131 ;其中,Host1120中的BE 1122與空閑的VF軟件實例1121綁定。在一種應(yīng)用場景下,F(xiàn)E 1131,用于預(yù)分配用于直接內(nèi)存存取DMA的緩存;與BE 1122綁定的VF軟件實例1121,用于通過該BE 1122的導(dǎo)出程序接口獲取上述用于DMA的緩存對應(yīng)的地址,將獲取到的該用于DMA的緩存對應(yīng)的地址寫入該VF軟件實例1121對應(yīng)的VF設(shè)備11111的第一存儲單元中;VF設(shè)備11111,用于在需要接收數(shù)據(jù)時從第一存儲單元中選取用于DMA的緩存對應(yīng)的地址,以選取的該用于DMA的緩存對應(yīng)的地址作為目的地址發(fā)起DMA寫請求;在上述DMA寫請求執(zhí)行后通知Host 1120中與之對應(yīng)的VF軟件實例1121,以便該VF軟件實例1121觸發(fā)FE 1131接收寫入該地址所對應(yīng)緩存中的數(shù)據(jù)。參見圖11-b,在一種應(yīng)用場景下,F(xiàn)E 1131還可用于,將預(yù)分配的用于DMA的緩存對應(yīng)的客戶機物理地址GPA寫入Host 1120與VM 1130之間的共享內(nèi)存1140中;與上述BE 1122綁定的VF軟件實例1121可具體用于,通過該BE 1122的導(dǎo)出程序接口從共享內(nèi)存1140中獲取該用于DMA的緩存對應(yīng)的GPA,將獲取到的該用于DMA的緩存對應(yīng)的GPA寫入該VF軟件實例1121對應(yīng)的VF設(shè)備11111的第一存儲單元中;此外,F(xiàn)E 1131也可將該預(yù)分配的用于DMA的緩存對應(yīng)的GPA通知給對應(yīng)的BE1122;而與該BE 1122綁定的VF軟件實例1121則可通過該BE BE 1122的導(dǎo)出程序接口獲取該用于DMA的緩存對應(yīng)的GPA。VF設(shè)備11111可具體用于,在需要接收數(shù)據(jù)時從其第一存儲單元中選取用于DMA的緩存對應(yīng)的GPA,以選取的該用于DMA的緩存對應(yīng)的GPA作為目的地址發(fā)起DMA寫請求;在目的地址GPA被修改為對應(yīng)HPA的該DMA寫請求執(zhí)行后通知Host 1120中與之對應(yīng)的VF軟件實例1121,以便該VF軟件實例1121觸發(fā)FE 1131接收寫入該HPA所對應(yīng)緩存中的數(shù)據(jù);計算節(jié)點1100的硬件層1110還可包括輸入輸出內(nèi)存管理單元IOMMU 1112,用于將VF設(shè)備11111發(fā)起的DMA寫請求的目的地址GPA修改為對應(yīng)的Host物理地址ΗΡΑ。例如,IOMMU 1112中設(shè)置有地址轉(zhuǎn)換頁表,其中,該地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系;IOMMU 1112通過查詢地址轉(zhuǎn)換頁表獲得所述DMA寫請求的目的地址GPA所對應(yīng)的HPA,將該DMA寫請求的目的地址GPA修改為獲得的該ΗΡΑ。參見圖11-c,在另一種應(yīng)用場景下,F(xiàn)E 1131還可用于,將預(yù)分配的用于DMA的緩存對應(yīng)的GPA寫入Host 1121與VM 1130之間的共享內(nèi)存1140中;Host 1120可用于,將共享內(nèi)存1140中用于DMA的緩存對應(yīng)的GPA修改為對應(yīng)的HPA ;例如,Host 1120中設(shè)置有地址轉(zhuǎn)換頁表,其中,該地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系;Host 1120可通過查詢地址轉(zhuǎn)換頁表獲得共享內(nèi)存中的用于DMA的緩存對應(yīng)的GPA所對應(yīng)的HPA,將共享內(nèi)存中的用于DMA的緩存對應(yīng)的GPA修改為獲得的該ΗΡΑ。當然FE 1131也可將該預(yù)分配的用于DMA的緩存對應(yīng)的GPA通知給對應(yīng)的BE 1122,該Host 1120可將該用于DMA的緩存對應(yīng)的GPA修改為對應(yīng)的ΗΡΑ。與上述BE 1122綁定的VF軟件實例1121可具體用于,通過該BE 1122的導(dǎo)出程序接口獲取該用于DMA的緩存對應(yīng)的HPA ;將獲取到的該用于DMA的緩存對應(yīng)的HPA寫入與VF軟件實例1121對應(yīng)的VF設(shè)備11111的第一存儲單元中;VF設(shè)備11111具體可用于,在需要接收數(shù)據(jù)時從第一存儲單元中選取用于DMA的緩存對應(yīng)的HPA,以選取的該HPA作為目標地址發(fā)起DMA寫請求,在該DMA寫請求執(zhí)行后通知Host 1120中與之對應(yīng)的VF軟件實例1121,以便該VF軟件實例1121觸發(fā)FE 1131接收寫入該HPA所對應(yīng)緩存中的數(shù)據(jù)。此外,在一種應(yīng)用場景下,F(xiàn)E 1131還可用于,將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入Host 1120與VM 1130之間的共享內(nèi)存1140中;BE 1122還可用于,從共享內(nèi)存1140中獲取待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA ;調(diào)用與之綁定的VF軟件實例1121的程序發(fā)送接口,將該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入該VF軟件實例1121對應(yīng)的VF設(shè)備11111的第二存儲單元。此外,F(xiàn)E 1131也可將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA通知給對應(yīng)的BE1122,該BE1122根據(jù)該通知獲取該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA。VF設(shè)備11111還可用于,在發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以第二存儲單元中記錄的GPA作為目的地址發(fā)起DMA讀請求;此外,該VF設(shè)備11111還可用于,在DMA讀請求執(zhí)行后通知Host 1120中與之對應(yīng)的VF軟件實例1121,以便于該VF軟件實例1121觸發(fā)FE 1131釋放
對應(yīng)緩存。計算節(jié)點1100的硬件層1110還可包括輸入輸出內(nèi)存管理單元IOMMU 1112,用于將VF設(shè)備11111發(fā)起的DMA讀請求的目的地址GPA修改為對應(yīng)的ΗΡΑ。例如IOMMU 1112中設(shè)置有地址轉(zhuǎn)換頁表,其中,該地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系,IOMMU 1112通過查詢地址轉(zhuǎn)換頁表獲得該DMA讀請求的目的地址GPA所對應(yīng)的HPA,將該DMA寫請求的目的地址GPA修改為獲得的該ΗΡΑ。在另一種應(yīng)用場景下,F(xiàn)E 1131還可用于,將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入Host 1120與VM 1130之間的共享內(nèi)存1140中;Host 1120可用于,將共享內(nèi)存1140中的待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA修改為對應(yīng)的HPA ;例如,Host 1120中設(shè)置有地址轉(zhuǎn)換頁表,其中,該地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系;Host 1120通過查詢地址轉(zhuǎn)換頁表獲得共享內(nèi)存中的該待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA所對應(yīng)的HPA,將該共享內(nèi)存中的該待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA修改為所對應(yīng)的ΗΡΑ。當然,F(xiàn)E 1131也可將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA通知給Host 1120,Host 1120將該待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA修改為對應(yīng)的ΗΡΑ。BE 1122還用于,獲取上述待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的ΗΡΑ,調(diào)用與之綁定的VF軟件實例1121的程序發(fā)送接口,將該待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的HPA寫入與該VF軟件實例1121對應(yīng)的VF設(shè)備11111的第二存儲單元;該VF設(shè)備11111還可用于,在發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以第二存儲單元中記錄的HPA作為目的地址發(fā)起DMA讀請求。此外,該VF設(shè)備11111還可用于,在DMA讀請求執(zhí)行后通知Host 1120中與之對應(yīng)的VF軟件實例1121,以便于該VF軟件實例1121觸發(fā) 1131釋放對應(yīng)緩存。其中,第一存儲單元例如為VF設(shè)備的接收隊列或接收列表或其它可記錄地址的數(shù)據(jù)存儲結(jié)構(gòu)。第二存儲單元例如為VF設(shè)備的發(fā)送隊列或發(fā)送列表或其它可記錄地址的數(shù)據(jù)存儲結(jié)構(gòu)。可以理解的是,本實施例的Host 1120可如上述方法實施例中的Host,本實施例計算節(jié)點1100的運行的虛擬化系統(tǒng)的工作機制可如上述方法實施例中描述,各個功能模塊的功能可以根據(jù)上述方法實施例中的方法具體實現(xiàn),其具體實現(xiàn)過程可以參照上述方法實施例的相關(guān)描述,此處不再贅述。由上可見,本發(fā)明實施例中計算節(jié)點1100包括硬件層、運行在該硬件層之上的Host、以及運行在該Host之上的至少一個VM,該硬件層包括輸入/輸出1/0設(shè)備,該1/0設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,該Host中具有若干個VF軟件實例,每個上述VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host中還具有與上述1/0設(shè)備類型相同的1/0虛擬設(shè)備的后端實例BE,VM中具有上述1/0虛擬設(shè)備的前端實例FE ;其中,該Host中的上述BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),1/0設(shè)備虛擬出的一個VF設(shè)備和一個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于1/0設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可以提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且由于1/0虛擬設(shè)備的前端驅(qū)動(即冊)在VM內(nèi),該FE通過Host內(nèi)的后端驅(qū)動(即BE)來傳遞數(shù)據(jù),VM不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。參見圖12,本發(fā)明實施例還提供一種計算機系統(tǒng),可包括至少一個計算節(jié)點1100。需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。綜上,本發(fā)明實施例中計算節(jié)點可包括硬件層、運行在該硬件層之上的Host、以及運行在該Host之上的至少一個VM,該硬件層包括輸入/輸出1/0設(shè)備,該1/0設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,該Host中具有若干個VF軟件實例,每個上述VF軟件實例分別對應(yīng)不同的上述VF設(shè)備;Host中還具有與上述1/0設(shè)備類型相同的1/0虛擬設(shè)備的后端實例BE,VM中具有上述1/0虛擬設(shè)備的前端實例FE ;其中,該Host中的上述BE與空閑的上述VF軟件實例綁定,如此,就建立起了每個VM可獨立使用一個VF設(shè)備的應(yīng)用架構(gòu),I/O設(shè)備虛擬出的一個VF設(shè)備和一個VM中的前端實例FE之間的通道打通,這樣FE可通過Host中的BE來訪問VF設(shè)備,由于I/O設(shè)備虛擬出的該VF設(shè)備是單獨分配給該VM使用的,VF設(shè)備可以提供高效的設(shè)備接口,這就有利于讓該VM獲得接近物理機的性能,延時低且?guī)缀鯖]有額外CPU開銷;并且由于I/O虛擬設(shè)備的前端驅(qū)動(即FE)在VM內(nèi),該FE通過Host內(nèi)的后端驅(qū)動(即BE)來傳遞數(shù)據(jù),VM不感知Host真實物理設(shè)備,這樣易于遷移和實現(xiàn)設(shè)備共享,實現(xiàn)了虛擬化系統(tǒng)兼容性的優(yōu)化。并且,不需要VM中的OS有最新的硬件技術(shù)支持,可適用于各種主流0S,不依賴硬件廠商(IHV)提供VM驅(qū)動;完整保存了虛擬機與物理平臺的隔離、解耦,虛擬機遷移方便;Host仍可能監(jiān)控到VM中的收發(fā)數(shù)據(jù),數(shù)據(jù)過濾、內(nèi)存復(fù)用等高級特性仍可以使用;PV前后端的FE部分可以重用,升級方便。此外,在DMA讀/寫請求執(zhí)行過程中由硬件模塊IOMMU來完成GPA和HPA之間的轉(zhuǎn)換,有利于減少硬件資源配置,簡化處理流程?;蛘?,在DMA讀請求執(zhí)行過程中由Host來完成GPA和HPA之間的轉(zhuǎn)換,有利于減少硬件資源配置,簡化處理流程。本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括只讀存儲器、隨機存儲器、磁盤或光盤等。以上對本發(fā)明實施例所提供的虛擬化處理方法及相關(guān)裝置和計算機系統(tǒng)進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種虛擬化處理方法,其特征在干,包括在輸入/輸出I/O設(shè)備的I/O虛擬功能啟動后,宿主機Host中產(chǎn)生若干個VF軟件實例;其中,啟動I/O虛擬功能后的所述I/O設(shè)備虛擬出對應(yīng)的若干個虛擬功能VF設(shè)備;所述 Host中產(chǎn)生的每個所述VF軟件實例分別對應(yīng)不同的所述VF設(shè)備;所述Host創(chuàng)建與所述I/O設(shè)備類型相同的I/O虛擬設(shè)備,其中,所述I/O虛擬設(shè)備的后端實例BE創(chuàng)建于所述Host中,所述I/O虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的虛擬機VM中;將所述BE與空閑的所述VF軟件實例綁定。
2.一種虛擬化處理方法,其特征在干,應(yīng)用于計算節(jié)點上,所述計算節(jié)點包括硬件層、運行在所述硬件層之上的宿主機Host、以及運行在所述Host之上的至少ー個虛擬機 VM,其中,所述硬件層包括輸入/輸出I/O設(shè)備,所述I/O設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,所述Host中具有若干個VF軟件實例,每個所述VF軟件實例分別對應(yīng)不同的所述VF設(shè)備;所述Host中還具有與所述I/O設(shè)備類型相同的I/O虛擬設(shè)備的后端實例BE, 所述VM中具有所述I/O虛擬設(shè)備的前端實例FE ;其中,所述Host中的所述BE與空閑的所述VF軟件實例綁定;所述方法包括所述FE預(yù)分配用于直接內(nèi)存存取DMA的緩存;與所述BE綁定的所述VF軟件實例通過所述BE的導(dǎo)出程序接ロ獲取所述用于DMA的緩存對應(yīng)的地址,將獲取到的所述用于DMA的緩存對應(yīng)的地址寫入所述VF軟件實例對應(yīng)的 VF設(shè)備的第一存儲單元中;所述VF設(shè)備在需要接收數(shù)據(jù)時從所述第一存儲單元中選取用于DMA的緩存對應(yīng)的地址,以選取的該用于DMA的緩存對應(yīng)的地址作為目的地址發(fā)起DMA 寫請求;所述VF設(shè)備在所述DMA寫請求執(zhí)行后通知所述Host中與之對應(yīng)的所述VF軟件實例,以便所述VF軟件實例觸發(fā)所述FE接收寫入所述地址所對應(yīng)緩存中的數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在干,所述硬件層包括輸入輸出內(nèi)存管理単元I0MMU,所述方法還包括所述FE將所述預(yù)分配的用于DMA的緩存對應(yīng)的客戶機物理地址GPA寫入所述Host與 VM之間的共享內(nèi)存中;所述與所述BE綁定的所述VF軟件實例通過所述BE的導(dǎo)出程序接ロ獲取所述用于DMA 的緩存對應(yīng)的地址,將獲取到的所述用于DMA的緩存對應(yīng)的地址寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元中;所述VF設(shè)備在需要接收數(shù)據(jù)時從所述第一存儲單元中選取用于DMA的緩存對應(yīng)的地址,以選取的該用于DMA的緩存對應(yīng)的地址作為目的地址發(fā)起DMA 寫請求,包括與所述BE綁定的所述VF軟件實例通過該BE的導(dǎo)出程序接ロ從所述共享內(nèi)存中獲取所述用于DMA的緩存對應(yīng)的GPA,將獲取到的所述用于DMA的緩存對應(yīng)的GPA寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元;所述VF設(shè)備在需要接收數(shù)據(jù)時從所述第一存儲單元中選取用于DMA的緩存對應(yīng)的GPA,以選取的該用于DMA的緩存對應(yīng)的GPA作為目的地址發(fā)起DMA寫請求;所述方法還包括所述IOMMU將所述DMA寫請求的目的地址GPA修改為對應(yīng)的Host物理地址HPA ;所述VF設(shè)備在所述DMA寫請求執(zhí)行后通知所述Host中與之對應(yīng)的所述VF軟件實例, 以便所述VF軟件實例觸發(fā)所述FE接收寫入所述地址所對應(yīng)緩存中的數(shù)據(jù),包括所述VF 設(shè)備在目的地址被修改為HPA的所述DMA寫請求執(zhí)行后通知所述Host中與之對應(yīng)的所述 VF軟件實例,以便所述VF軟件實例觸發(fā)所述FE接收寫入所述HPA所對應(yīng)緩存中的數(shù)據(jù)。
4.根據(jù)權(quán)利要求2所述的方法,其特征在干,所述方法還包括所述FE將所述預(yù)分配的用于DMA的緩存對應(yīng)的GPA寫入所述Host與所述VM之間的共享內(nèi)存中;所述Host將所述共享內(nèi)存中用于DMA的緩存對應(yīng)的GPA修改為對應(yīng)的HPA ;所述與所述BE綁定的所述VF軟件實例通過所述BE的導(dǎo)出程序接ロ獲取所述用于DMA 的緩存對應(yīng)的地址,將獲取到的所述用于DMA的緩存對應(yīng)的地址寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元中;所述VF設(shè)備在需要接收數(shù)據(jù)時從所述第一存儲單元中選取用于DMA的緩存對應(yīng)的地址,以選取的該用于DMA的緩存對應(yīng)的地址作為目的地址發(fā)起DMA 寫請求,包括與所述BE綁定的所述VF軟件實例通過所述BE的導(dǎo)出程序接ロ獲取所述用于DMA的緩存對應(yīng)的HPA ;將獲取到的所述用于DMA的緩存對應(yīng)的HPA寫入所述VF軟件實例對應(yīng)的 VF設(shè)備的第一存儲單元中;所述VF設(shè)備在需要接收數(shù)據(jù)時從所述第一存儲單元中選取用于DMA的緩存對應(yīng)的HPA,以選取的該HPA作為目標地址發(fā)起DMA寫請求。
5.根據(jù)權(quán)利要求2所述的方法,其特征在干,所述硬件層還包括輸入輸出內(nèi)存管理単元I0MMU,所述方法還包括所述FE將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入所述Host與VM之間的共享內(nèi)存中;所述BE從所述共享內(nèi)存中獲取待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA ;所述BE調(diào)用與之綁定的所述VF軟件實例的程序發(fā)送接ロ,將所述待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第二存儲單元;所述VF設(shè)備在發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以第二存儲單元中記錄的GPA作為目的地址發(fā)起DMA讀請求;所述IOMMU將所述DMA讀請求的目的地址GPA 修改為對應(yīng)的ΗΡΑ。
6.根據(jù)權(quán)利要求2所述的方法,其特征在干,所述方法還包括所述FE將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入所述Host與所述VM之間的共享內(nèi)存中;所述Host將所述共享內(nèi)存中的所述待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA修改為對應(yīng)的HPA ; 所述BE獲取所述待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的HPA,調(diào)用與之綁定的所述VF軟件實例的程序發(fā)送接ロ,將所述待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的HPA寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第二存儲單元;所述VF設(shè)備在發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以第二存儲單元中記錄的HPA作為目的地址發(fā)起DMA讀請求。
7.根據(jù)權(quán)利要求5或6所述的方法,其特征在干,所述VF設(shè)備在DMA讀請求執(zhí)行后通知Host中與之對應(yīng)的所述VF軟件實例,以便于所述VF軟件實例觸發(fā)所述FE釋放對應(yīng)緩存。
8.根據(jù)權(quán)利要求3或5所述的方法,其特征在干,所述IOMMU中設(shè)置有地址轉(zhuǎn)換頁表,其中,所述地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系;所述IOMMU將所述DMA寫請求的目的地址GPA修改為對應(yīng)的Host物理地址HPA,包括 IOMMU通過查詢地址轉(zhuǎn)換頁表獲得所述DMA寫請求的目的地址GPA所對應(yīng)的HPA,將所述 DMA寫請求的目的地址GPA修改為獲得的該HPA ;或者,所述IOMMU將經(jīng)過的所述DMA讀請求的目的地址GPA修改為對應(yīng)的HPA,包括 IOMMU通過查詢地址轉(zhuǎn)換頁表獲得所述DMA讀請求的目的地址GPA所對應(yīng)的HPA,將所述 DMA寫請求的目的地址GPA修改為獲得的所述ΗΡΑ。
9.根據(jù)權(quán)利要求4或6所述的方法,其特征在干,所述Host中設(shè)置有地址轉(zhuǎn)換頁表,其中,所述地址轉(zhuǎn)換頁表記錄HPA和GPA之間的映射對應(yīng)關(guān)系;所述Host將所述共享內(nèi)存中用于DMA的緩存對應(yīng)的GPA修改為對應(yīng)的HPA,包括所述Host通過查詢地址轉(zhuǎn)換頁表獲得所述共享內(nèi)存中的用于DMA的緩存對應(yīng)的GPA所對應(yīng)的HPA,將所述共享內(nèi)存中的用于DMA的緩存對應(yīng)的GPA修改為獲得的所述HPA ; 或者,所述Host將所述共享內(nèi)存中的所述待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA修改為對應(yīng)的HPA, 包括所述Host通過查詢地址轉(zhuǎn)換頁表獲得所述共享內(nèi)存中的所述待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA所對應(yīng)的HPA,將所述共享內(nèi)存中的所述待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA修改為獲得的所述ΗΡΑ。
10.根據(jù)權(quán)利要求2至6任一項所述的方法,其特征在干, 所述第一存儲單元為接收隊列;和/或,所述第二存儲單元為發(fā)送隊列。
11.ー種宿主機,其特征在干,包括第一創(chuàng)建模塊,用于在輸入/輸出1/0設(shè)備的1/0虛擬功能啟動后,在宿主機Host中產(chǎn)生若干個VF軟件實例;其中,啟動1/0虛擬功能后的所述1/0設(shè)備虛擬出對應(yīng)的若干個虛擬功能VF設(shè)備;所述Host中產(chǎn)生的每個所述VF軟件實例分別對應(yīng)不同的所述VF設(shè)備; 第二創(chuàng)建模塊,用于創(chuàng)建與所述1/0設(shè)備類型相同的1/0虛擬設(shè)備, 其中,所述1/0虛擬設(shè)備的后端實例BE創(chuàng)建于所述Host中,所述1/0虛擬設(shè)備的前端實例FE創(chuàng)建于啟動后的虛擬機VM中;綁定模塊,用于將所述第二創(chuàng)建模塊創(chuàng)建的BE與第一創(chuàng)建模塊創(chuàng)建的空閑的所述VF 軟件實例綁定。
12.—種計算節(jié)點,其特征在干,包括,硬件層、運行在所述硬件層之上的宿主機Host、 以及運行在所述Host之上的至少ー個虛擬機VM,其中,所述硬件層包括輸入/輸出1/0設(shè)備,所述1/0設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,所述Host中具有若干個VF軟件實例,每個所述VF軟件實例分別對應(yīng)不同的所述VF設(shè)備;所述Host中還具有與所述I/ 0設(shè)備類型相同的1/0虛擬設(shè)備的后端實例BE,所述VM中具有所述1/0虛擬設(shè)備的前端實例FE ;其中,所述Host中的所述BE與空閑的所述VF軟件實例綁定。
13.根據(jù)權(quán)利要求12所述的計算節(jié)點,其特征在干, 所述FE,用于預(yù)分配用于直接內(nèi)存存取DMA的緩存;與所述BE綁定的所述VF軟件實例,用于通過所述BE的導(dǎo)出程序接ロ獲取所述用于DMA的緩存對應(yīng)的地址,將獲取到的所述用于DMA的緩存對應(yīng)的地址寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元中;所述VF設(shè)備,用于在需要接收數(shù)據(jù)時從所述第一存儲單元中選取用于DMA的緩存對應(yīng)的地址,以選取的該用于DMA的緩存對應(yīng)的地址作為目的地址發(fā)起DMA寫請求;在所述DMA 寫請求執(zhí)行后通知所述Host中與之對應(yīng)的所述VF軟件實例,以便所述VF軟件實例觸發(fā)所述FE接收寫入所述地址所對應(yīng)緩存中的數(shù)據(jù)。
14.根據(jù)權(quán)利要求13所述的計算節(jié)點,其特征在干,所述FE還用于,將所述預(yù)分配的用于DMA的緩存對應(yīng)的客戶機物理地址GPA寫入所述 Host與VM之間的共享內(nèi)存中;與所述BE綁定的所述VF軟件實例具體用干,通過該BE的導(dǎo)出程序接ロ從所述共享內(nèi)存中獲取所述用于DMA的緩存對應(yīng)的GPA,將獲取到的所述用于DMA的緩存對應(yīng)的GPA寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元中;所述VF設(shè)備具體用干,在需要接收數(shù)據(jù)時從所述第一存儲單元中選取用于DMA的緩存對應(yīng)的GPA,以選取的該用于DMA的緩存對應(yīng)的GPA作為目的地址發(fā)起DMA寫請求;在目的地址GPA被修改為對應(yīng)HPA的所述DMA寫請求執(zhí)行后通知所述Host中與之對應(yīng)的所述VF 軟件實例,以便所述VF軟件實例觸發(fā)所述FE接收寫入所述HPA所對應(yīng)緩存中的數(shù)據(jù); 所述計算節(jié)點的硬件層還包括輸入輸出內(nèi)存管理単元I0MMU,用于將所述DMA寫請求的目的地址GPA修改為對應(yīng)的 Host物理地址ΗΡΑ。
15.根據(jù)權(quán)利要求13所述的計算節(jié)點,其特征在干,所述FE還用干,將所述預(yù)分配的用于DMA的緩存對應(yīng)的GPA寫入所述Host與所述VM 之間的共享內(nèi)存中;所述Host用干,將所述共享內(nèi)存中用于DMA的緩存對應(yīng)的GPA修改為對應(yīng)的HPA ; 所述與所述BE綁定的所述VF軟件實例具體用干,通過所述BE的導(dǎo)出程序接ロ獲取所述用于DMA的緩存對應(yīng)的HPA ;將獲取到的所述用于DMA的緩存對應(yīng)的HPA寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第一存儲單元中;所述VF設(shè)備具體用干,在需要接收數(shù)據(jù)時從第一存儲單元中選取用于DMA的緩存對應(yīng)的HPA,以選取的該HPA作為目標地址發(fā)起DMA寫請求,在所述DMA寫請求執(zhí)行后通知所述 Host中與之對應(yīng)的所述VF軟件實例,以便所述VF軟件實例觸發(fā)所述FE接收寫入所述HPA 所對應(yīng)緩存中的數(shù)據(jù)。
16.根據(jù)權(quán)利要求13所述的計算節(jié)點,其特征在干,所述FE還用干,將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入所述Host與VM之間的共享內(nèi)存中;所述BE還用干,從所述共享內(nèi)存中獲取待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA ;所述BE調(diào)用與之綁定的所述VF軟件實例的程序發(fā)送接ロ,將所述待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第二存儲單元;所述VF設(shè)備還用干,在發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以第二存儲單元中記錄的GPA作為目的地址發(fā)起DMA讀請求;所述計算節(jié)點的硬件層還包括輸入輸出內(nèi)存管理単元I0MMU,用于將所述DMA讀請求的目的地址GPA修改為對應(yīng)的HPA0
17.根據(jù)權(quán)利要求13所述的計算節(jié)點,其特征在干,所述FE還用干,將待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的GPA寫入所述Host與所述VM之間的共享內(nèi)存中;所述Host用干,將所述共享內(nèi)存中的所述待發(fā)送數(shù)據(jù)所緩存對應(yīng)的GPA修改為對應(yīng)的HPA ;所述BE還用干,獲取所述待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的HPA,調(diào)用與之綁定的所述VF軟件實例的程序發(fā)送接ロ,將所述待發(fā)送數(shù)據(jù)所在緩存對應(yīng)的HPA寫入所述VF軟件實例對應(yīng)的VF設(shè)備的第二存儲單元;所述VF設(shè)備還用干,在發(fā)現(xiàn)有數(shù)據(jù)需發(fā)送時以第二存儲單元中記錄的HPA作為目的地址發(fā)起DMA讀請求。
18.根據(jù)權(quán)利要求16或17所述的計算節(jié)點,其特征在干,所述VF設(shè)備還用干,在DMA讀請求執(zhí)行后通知Host中與之對應(yīng)的所述VF軟件實例, 以便于所述VF軟件實例觸發(fā)所述FE釋放對應(yīng)緩存。
19.一種計算機系統(tǒng),其特征在干,包括至少ー個如權(quán)利要求13 18任一項所述的計算節(jié)點。
全文摘要
本發(fā)明實施例公開了虛擬化處理方法及相關(guān)裝置和計算機系統(tǒng)。本發(fā)明實施例的方案中計算節(jié)點包括硬件層、運行在該硬件層之上的Host、以及運行在該Host之上的至少一個虛擬機VM,該硬件層包括I/O設(shè)備,該I/O設(shè)備虛擬出了對應(yīng)的若干個虛擬功能VF設(shè)備,Host中具有若干個VF軟件實例,每個VF軟件實例分別對應(yīng)不同的VF設(shè)備;Host中還具有與I/O設(shè)備類型相同的I/O虛擬設(shè)備的后端實例BE,VM中具有該I/O虛擬設(shè)備的FE;其中,該Host中的上述BE與空閑的上述VF軟件實例綁定。本發(fā)明實施例的方案有利于優(yōu)化虛擬化系統(tǒng)的性能和兼容性。
文檔編號G06F9/455GK102591702SQ20111045834
公開日2012年7月18日 申請日期2011年12月31日 優(yōu)先權(quán)日2011年12月31日
發(fā)明者楊曉偉, 王 鋒 申請人:華為技術(shù)有限公司