使能單根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ā)明內容】
[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ā)來的事務包按需緩存,然后有序地調度發(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功能鏡像的虛擬配置寄存器資源和虛擬物理寄存器資源內存映射至所述用戶根節(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設備的配置寄存器資源和物理寄存器資源內存映射至所述主控制根節(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,根復合體