使能單根i/o設備多根共享的適配裝置、系統(tǒng)及方法
【技術領域】
[0001]本發(fā)明涉及I/O虛擬化技術,具體地說,本發(fā)明涉及一種單根I/O設備多根共享的方法和系統(tǒng)。
【背景技術】
[0002]在傳統(tǒng)數(shù)據(jù)中心或云計算中心中,每個刀片服務器都擁有獨立的I/O設備,如網(wǎng)卡、HBA適配器等。然而計算設備與I/O設備的緊密耦合,使得兩類設備的擴展同時受到服務器空間的限制。另一方面,當前的網(wǎng)絡設備帶寬在快速提升:網(wǎng)絡設備如Infiniband的HCA卡在2014年將推出最高300Gb/s帶寬的產(chǎn)品,以太網(wǎng)的100Gb/s已有驗證產(chǎn)品,400Gb/s的規(guī)范也在制定之中。如此高性能I/O設備僅依附一臺服務器,無疑降低了其利用效率,提高了系統(tǒng)總成本。
[0003]眾所周知,在傳統(tǒng)的服務器中,各個服務器需要單獨配置I/O設備。而隨著虛擬機技術發(fā)展和應用,單個服務器上可以運行多個虛擬機(即VM)以及更多的應用(即APP),隨之也需要更多種類和更多數(shù)量的I/O設備。在這一背景下,行業(yè)標準組織PCI特別興趣小組(PC1-SIG)先后制定了 PC1-SIG Single Root I/O Virtualizat1n (SR-10V:單根 1/0虛擬化)和 PC1-SIG Mult1-Root 1/0 Virtualizat1n (MR-10V:多根 1/0 虛擬化)協(xié)議。目前SR-10V協(xié)議已得到1/0設備廠商的廣泛支持,如支持SR-10V的千兆以太網(wǎng)卡、10G以太網(wǎng)卡、HBA適配器等。但這些兼容SR-10V協(xié)議的1/0設備僅能夠被運行在同一宿主機上的不同虛擬機(VM/Guest)所共享,而無法被多個宿主機上運行的若干虛擬機(VM/Guest)所共享。而另一方面,由于MR-10V協(xié)議對原有系統(tǒng)的較大改動(包括對PCIe基本協(xié)議、PCIe設備結構和PCIe交換機結構的修改),難以被工業(yè)界接受。這就導致目前市場上的大部分1/0設備都是單根1/0設備,即不支持被多個根節(jié)點共享的設備,也就是說目前市場上的單根1/0設備無法被多個宿主機上運行的若干虛擬機(VM/Guest)所共享。
[0004]因此,當前迫切需要一種使單根1/0設備(不支持被多個根節(jié)點共享的設備)能夠被多個根節(jié)點共享的解決方案。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的任務是提供一種使單根1/0設備(不支持被多個根節(jié)點共享的設備)能夠被多個根節(jié)點共享的解決方案。
[0006]根據(jù)本發(fā)明的一個方面,提供了一種使能單根1/0設備多根共享的適配裝置,包括:
[0007]主機接口,用于耦合實體單根1/0設備到一個主控制根節(jié)點PCIe域,將實體單根1/0設備邏輯虛擬化為多個虛擬1/0功能鏡像;
[0008]動態(tài)重映射模塊,用于建立和維護虛擬1/0功能鏡像和實體單根1/0設備間的映射關系;根據(jù)所述映射關系,將用戶根節(jié)點PCIe域的下行事務包重定向至對應的主控制根節(jié)點PCIe域,以及將實體單根1/0設備發(fā)送至用戶根節(jié)點的主控制根節(jié)點PCIe域的上行事務包重定向至對應的用戶根節(jié)點PCIe域;以及
[0009]I/O接口,用于與實體單根I/O設備連接。
[0010]其中,所述主機接口還用于提供主控制根節(jié)點控制接口,主控制根節(jié)點通過該接口可配置及控制所述適配裝置;以及提供至少一個用于連接用戶根節(jié)點的虛擬I/o功能鏡像,所述虛擬I/o功能鏡像是對I/O設備功能的實體抽象,并能夠進行I/O設備功能的行為模擬。
[0011]其中,所述動態(tài)重映射模塊中,在建立和維護虛擬I/O功能鏡像和實體單根I/O設備間的映射關系時,允許多個虛擬I/o功能鏡像復用實體單根I/O設備的同一物理資源;
[0012]所述I/O接口還用于將多個用戶根節(jié)點發(fā)來的事務包按需緩存,然后有序地調(diào)度發(fā)送給實體單根I/o設備,以避免對應于實體單根I/O設備的同一物理資源的來自于不同根節(jié)點的多個事務包引發(fā)I/o訪問沖突。
[0013]其中,所述主機接口包括用于連接主控制根節(jié)點的系統(tǒng)控制接口,用于向多個用戶根節(jié)點透明地呈現(xiàn)多個虛擬I/o功能鏡像的虛擬配置空間寄存器。
[0014]其中,所述主機接口還用于將來自于根節(jié)點的下行事務包進行分發(fā)處理:將來自主控制根節(jié)點的下行事務包給系統(tǒng)控制接口進行處理,將來自于用戶根節(jié)點的下行事務包分發(fā)給虛擬配置空間寄存器進行處理;將來自于系統(tǒng)控制接口的上行事務包向主控制根節(jié)點傳輸,以及將來自于虛擬配置空間寄存器的上行事務包向用戶根節(jié)點傳輸。
[0015]其中,所述動態(tài)重映射模塊包括I/O重映射模塊,用于進行事務包在用戶根節(jié)點PCIe域和主控制根節(jié)點PCIe域之間的重映射;以及虛擬熱插拔模塊,用于在不影響根節(jié)點其他工作的情況下,實現(xiàn)向根節(jié)點動態(tài)刪除或增加I/O設備功能。
[0016]其中,所述適配裝置支持PCIe協(xié)議,所述主機接口、動態(tài)重映射模塊和I/O接口均在PCIe協(xié)議的事務層實現(xiàn)。
[0017]根據(jù)本發(fā)明的另一方面,還提供了一種使能單根I/O設備多根共享的系統(tǒng),包括:主控制根節(jié)點、至少一個用戶根節(jié)點、權利要求1?6中任意一項所述的適配裝置,連接所述主控制根節(jié)點、至少一個用戶根節(jié)點,以及所述適配裝置的PCIe互連控制系統(tǒng),以及與所述適配裝置連接的實體單根I/O設備。
[0018]根據(jù)本發(fā)明的又一個方面,還提供了一種使能單根I/O設備多根共享的適配方法,包括下列步驟:
[0019]1)耦合實體單根I/O設備到一個主控制根節(jié)點PCIe ±或,虛擬化I/O設備建立多個邏輯虛擬化功能鏡像;
[0020]2)建立和維護虛擬I/O功能鏡像和實體單根I/O設備間的映射關系;
[0021]3)使至少一個用于連接用戶根節(jié)點與所述虛擬I/O功能鏡像連接,將所述虛擬1/0功能鏡像的虛擬配置寄存器資源和虛擬物理寄存器資源內(nèi)存映射至所述用戶根節(jié)點;
[0022]4)根據(jù)所述映射關系,將用戶根節(jié)點PCIe域的下行事務包重定向至對應的主控制根節(jié)點PCIe域,以及將實體單根I/O設備發(fā)送至用戶根節(jié)點的主控制根節(jié)點PCIe域的上行事務包重定向至對應的用戶根節(jié)點PCIe域;將重定向后的下行事務包發(fā)送給實體單根I/O設備,將重定向后的上行事務包發(fā)送給相應的用戶根節(jié)點。
[0023]其中,所述步驟1)包括下列子步驟:
[0024]11)使主控制根節(jié)點與實體單根I/O設備連接,將實體單根I/O設備的配置寄存器資源和物理寄存器資源內(nèi)存映射至所述主控制根節(jié)點;
[0025]12)提供至少一個用于連接用戶根節(jié)點的虛擬I/O功能鏡像,所述虛擬I/O功能鏡像是對I/O設備功能的實體抽象,并能夠進行I/O設備功能的行為模擬。
[0026]與現(xiàn)有技術相比,本發(fā)明具有下列技術效果:
[0027]1、本發(fā)明能夠使能單根I/O設備被多個根節(jié)點共享。
[0028]2、本發(fā)明能夠支持任意數(shù)目的根節(jié)點共享任意數(shù)目的單根I/O設備。
[0029]3、本發(fā)明能夠最大程度地提高I/O資源的利用效率,從而降低系統(tǒng)成本。
[0030]4、本發(fā)明對現(xiàn)有的根節(jié)點(例如服務器)和單根I/O設備是透明的,不需要對現(xiàn)有的根節(jié)點和單根I/O設備進行改造,兼容性好,易于推廣。
[0031]5、本發(fā)明能夠支持虛擬PCIe設備熱插拔,便于在I/O設備共享系統(tǒng)中按需分配和回收I/O資源。
【附圖說明】
[0032]以下,結合附圖來詳細說明本發(fā)明的實施例,其中:
[0033]圖1示出了根據(jù)本發(fā)明的一個實施例所提供的單根I/O設備多根共享系統(tǒng)的示意圖;
[0034]圖2示出了根據(jù)本發(fā)明的另一個實施例所提供的單根I/O設備多根共享系統(tǒng)的示意圖;
[0035]圖3示出了本實施例的I/O多根共享適配裝置及其與根節(jié)點和單根I/O設備的邏輯連接關系;
[0036]圖4示出了一種基于圖3的I/O設備多根共享適配裝置的單根I/O設備多根共享方法;
[0037]圖5示出了本發(fā)明一個實施例中的虛擬I/O功能鏡像vRID和實體I/O設備功能mRID的映射表,以及每個虛擬I/O功能物理資源與實體I/O功能物理資源映射表的示例;
[0038]圖6示出了本發(fā)明一個實施例中虛擬I/O設備鏡像與實體單根I/O設備的物理資源的映射關系;
[0039]圖7示出了本發(fā)明一個實施例中多個根節(jié)點共享一個實體單根I/O設備的單一DMA緩沖區(qū)的示意圖;
[0040]圖8示出了本發(fā)明一個實施例中的一種具有全局標識的多根共享系統(tǒng)。
【具體實施方式】
[0041]為了使本發(fā)明的目的、技術方案更加清楚明白,以下結合附圖及實施例對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0042]圖1示出了根據(jù)本發(fā)明的一個實施例所提供的單根I/O設備多根共享系統(tǒng)的示意圖。參考圖1,該共享系統(tǒng)包括:多個根節(jié)點,PCIe互連控制器,與PCIe互連控制器通過PCIe連接的I/O多根共享適配裝置,以及與I/O多根共享適配裝置連接的多個單根I/O設備。其中,根節(jié)點用RN標識,它指具有單個根復合體(Root Complex,根復合體