一種應(yīng)用于虛擬機(jī)的設(shè)備直通方法
【專利摘要】提出一種應(yīng)用于虛擬機(jī)的設(shè)備直通方法,通過PCI穿透機(jī)制為虛擬機(jī)提供連接物理設(shè)備的虛擬接口,使用IOMMU機(jī)制將PCI設(shè)備的物理頁面映射到虛擬機(jī)內(nèi)存頁面相應(yīng)的IO頁面中,使得物理設(shè)備能夠直接被上層虛擬機(jī)識(shí)別。所述方法能夠避免虛擬機(jī)的操作性能受到虛擬接口的限制,并提供更強(qiáng)大的硬件性能。
【專利說明】一種應(yīng)用于虛擬機(jī)的設(shè)備直通方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)虛擬化【技術(shù)領(lǐng)域】,具體涉及一種應(yīng)用于虛擬機(jī)的設(shè)備直通方法。
【背景技術(shù)】
[0002]計(jì)算機(jī)虛擬化技術(shù)是指計(jì)算機(jī)元件在虛擬的基礎(chǔ)上而不是真實(shí)的基礎(chǔ)上運(yùn)行。計(jì)算機(jī)虛擬化技術(shù)可以擴(kuò)大硬件的容量,簡化軟件的重新配置過程。CPU的虛擬化技術(shù)可以實(shí)現(xiàn)單CPU模擬多CPU并行處理,允許一個(gè)平臺(tái)同時(shí)運(yùn)行多個(gè)操作系統(tǒng),并且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響,從而顯著提高計(jì)算機(jī)的工作效率。
[0003]全虛擬化也稱為原始虛擬化技術(shù),是比較通用的作法。如圖1所示,虛擬層中間件軟件Supervisor安裝物理設(shè)備的驅(qū)動(dòng)程序識(shí)別到實(shí)際的物理設(shè)備,并映射到IO堆棧,在IO堆棧中,實(shí)際物理設(shè)備通過地址映射成為模擬設(shè)備,模擬設(shè)備被虛擬機(jī)(guest OS)上的虛擬設(shè)備驅(qū)動(dòng)識(shí)別。其方案使得所有的虛擬機(jī)(guest OS)完全不會(huì)看到實(shí)際的硬件為何,只能使用由虛擬機(jī)與物理計(jì)算機(jī)之間的中間件軟件Supervisor所提供的虛擬硬件。因此,使用全虛擬化技術(shù)的缺陷是,虛擬機(jī)的操作性能受到虛擬接口的限制,并且因?yàn)樵O(shè)備完全仿真的原因,不能及時(shí)支持新的技術(shù)。
【發(fā)明內(nèi)容】
[0004]針對(duì)以上缺陷,本發(fā)明提出一種應(yīng)用于虛擬機(jī)的設(shè)備直通方法,使得物理設(shè)備直接被上層虛擬機(jī)所識(shí)別,提供更強(qiáng)大的硬件性能。所述方法包括:
[0005]S1:采用PCI穿透機(jī)制為虛擬機(jī)提供連接物理設(shè)備的虛擬接口,該虛擬接口代表一個(gè)連接PCI設(shè)備的軟件接口 ;
[0006]S2:使用IOMMU單元將PCI設(shè)備的物理頁面映射到虛擬機(jī)內(nèi)存頁面相應(yīng)的IO頁面中,在由虛擬機(jī)向物理設(shè)備傳輸數(shù)據(jù)時(shí),虛擬機(jī)向物理設(shè)備驅(qū)動(dòng)返回某一內(nèi)核空間地址,所述內(nèi)核空間地址由所述IOMMU單元轉(zhuǎn)換為物理地址。
[0007]特別地,所述虛擬機(jī)還能夠?qū)⑺鲇成浔Wo(hù)起來,防止其他虛擬機(jī)使用該P(yáng)CI設(shè)備。
[0008]本發(fā)明的有益效果是:上層虛擬機(jī)能夠直接識(shí)別安裝的物理設(shè)備,避免虛擬機(jī)的操作性能受到虛擬接口的限制,能夠提供更強(qiáng)大的硬件性能。
【專利附圖】
【附圖說明】
[0009]圖1為基于全虛擬化技術(shù)的虛擬機(jī)使用虛擬化設(shè)備的方案。
[0010]圖2為本發(fā)明提出的虛擬機(jī)采用直通方式使用物理設(shè)備的方案。
【具體實(shí)施方式】
[0011]結(jié)合附圖2對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明。[0012]參見附圖2,本發(fā)明提出的應(yīng)用于虛擬機(jī)的設(shè)備直通方案,采用PCI穿透機(jī)制為虛擬機(jī)提供連接物理設(shè)備的虛擬接口,該虛擬接口代表著一個(gè)連接PCI設(shè)備的軟件接口,使得實(shí)際物理設(shè)備可以由虛擬機(jī)(guest OS)獨(dú)立訪問。
[0013]在正常情況下,PCI設(shè)備作為總線主設(shè)備,處理直接內(nèi)存訪問(DMA)的傳輸,PCIDMA默認(rèn)處理物理地址,但是虛擬機(jī)不知道PCI設(shè)備的物理地址,因此,只使用PCI穿透機(jī)制,PCI DMA將無法正常工作。這里采用的解決方法是加入地址轉(zhuǎn)換機(jī)制,即使用I/Omemory management unit (IOMMU)模塊將PCI設(shè)備的物理頁面映射到虛擬機(jī)內(nèi)存頁面相應(yīng)的IO頁面中,實(shí)現(xiàn)虛擬機(jī)對(duì)實(shí)際物理設(shè)備的直接識(shí)別。采用地址轉(zhuǎn)換機(jī)制后,虛擬機(jī)返回給物理設(shè)備驅(qū)動(dòng)的不是物理地址,而是內(nèi)核空間的某個(gè)地址,即物理內(nèi)存的某個(gè)頁面,在由虛擬機(jī)向物理設(shè)備傳輸數(shù)據(jù)的時(shí)候,這個(gè)內(nèi)核空間地址會(huì)經(jīng)由IOMMU模塊轉(zhuǎn)換為物理地址。虛擬機(jī)還能夠?qū)⑺鲇成浔Wo(hù)起來,防止其他虛擬機(jī)使用該P(yáng)CI設(shè)備。
[0014]當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。
【權(quán)利要求】
1.一種應(yīng)用于虛擬機(jī)的設(shè)備直通方法,使得物理設(shè)備直接被上層虛擬機(jī)識(shí)別,其特征在于: 所述方法包括: S1:采用PCI穿透機(jī)制為虛擬機(jī)提供連接物理設(shè)備的虛擬接口,該虛擬接口代表一個(gè)連接PCI設(shè)備的軟件接口 ; S2:使用IOMMU單元將PCI設(shè)備的物理頁面映射到虛擬機(jī)內(nèi)存頁面相應(yīng)的IO頁面中,在由虛擬機(jī)向物理設(shè)備傳輸數(shù)據(jù)時(shí),虛擬機(jī)向物理設(shè)備驅(qū)動(dòng)返回某一內(nèi)核空間地址,所述內(nèi)核空間地址由所述IOMMU單元轉(zhuǎn)換為物理地址。
2.如權(quán)利要求1所述的方法,其特征在于: 所述虛擬機(jī)還能夠?qū)⑺鲇成浔Wo(hù)起來,防止其他虛擬機(jī)使用該物理設(shè)備。
【文檔編號(hào)】G06F9/455GK103577250SQ201310574693
【公開日】2014年2月12日 申請日期:2013年11月15日 優(yōu)先權(quán)日:2013年11月15日
【發(fā)明者】王渭巍 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司