專利名稱:用于多根i/o 虛擬化共享系統的i/o 資源管理方法
技術領域:
本發明涉及i/o虛擬化技術,特別是涉及一種用于多根i/o虛擬化共享系統的I/
O資源管理方法。
背景技術:
在傳統數據中心或云計算中心中,每個刀片服務器都擁有獨立的I/O資源,如網卡、HBA適配器等。然而計算與I/O資源的緊密耦合,使得兩類資源的擴展同時受到服務器空間的限制。此外,高性能I/O設備(如IOGigE網卡)僅依附一臺服務器,無疑降低了其利用效率,提高了系統總成本。為解決上述問題,就要解除計算與I/O資源的緊密耦合,其關 鍵就是實現I/O設備在多個服務器之間的共享。近年來,I/O設備的共享技術得到了變革性的發展,行業標準組織PCI特別興趣小組 PCI-SIG 先后制定了 PCI-SIG Single Root I/O Virtualization (SR-IOV :單根 IO 虛擬化)和 PCI-SIG Multi-Root 1/0 Virtualization (MR-I0V :多根 10 虛擬化)規范。具備SR-IOV能力的PCI Express設備能夠被運行在同一宿主機上的不同虛擬機(VM/Guest)所共享,并為虛擬機提供接近本機的1/0性能。目前SR-IOV已得到1/0設備廠商的廣泛支持,如支持SR-IOV的千兆以太網卡、10G以太網卡、HBA適配器等。具備MR-IOV能力的PCI Express設備能夠被多個宿主機上運行的若干虛擬機(VM/Guest)所共享,MR-IOV技術可以完全解除計算與1/0間的緊密耦合。但由于PCI-SIG的MR-IOV協議對原有系統的較大改動(包括對PCIe基本協議、PCIe設備結構和PCIe交換機結構的修改),難以被工業界接受。然而,對于像SR-IOV和多功能設備等本身具備有同時供多個虛擬機直接共享的能力,如果對其提供一系列附加支持,實現1/0資源在多個根節點之間共享是可行的。當一個1/0設備通過PCIe交換機結構被多個根節點共享時,每個根節點在系統啟動后都將嘗試枚舉該設備。這將引起系統競爭,一個根節點對拓撲結構中I/o設備的修改,會影響其他根節點的運行,最終導致系統不能正常工作。
發明內容
為解決上述問題,本發明提供了一種多根1/0虛擬化共享系統中的1/0資源管理方法,用于解決多根10虛擬化共享系統的資源管理和分配的技術問題,避免多根1/0虛擬化共享系統中各根節點的沖突和競爭。本發明公開一種用于多根1/0虛擬化共享系統的1/0資源管理方法,包括步驟I,主控制根節點對系統中的1/0資源枚舉發現和初始化配置;步驟2,主控制根節點通過PCIe管理模塊,輔助管理用戶管理和控制系統中的1/0設備資源,執行管理用戶制定的I/o資源分配策略;步驟3,主控制根節點通過PCIe管理模塊和1/0資源分配表,建立設備功能與其所屬的根節點的映射關系,實現I/o資源動態分配。
用于多根I/O虛擬化共享系統的I/O資源管理方法,所述步驟2包括步驟21,PCIe管理模塊收集系統中所有PCIe組件信息并呈現給管理用戶,輔助管理用戶初始化或者修改資源分配策略;步驟22,PCIe管理模塊根據用戶的I/O資源分配策略,發送設備分配指令,實現I/O資源的分配管理。用于多根I/O虛擬化共享系統的資源管理方法,所述PCIe組件信息包括根節點信息,所述根節點信息,包括根節點的數目、每個根節點擁有的I/O資源以及各根節點的負載狀態;I/O設備信息,所述I/O設備信息,包括設備功能ID號、設備功能描述信息以及設備功能占用情況。
用于多根I/O虛擬化共享系統的I/O資源管理方法,所述I/O資源分配表包括所述資源分配表位于多根I/O虛擬化共享控制器的每個PCIe下游端口中,每個I/O設備對應一張I/O資源分配表;所述資源分配表記錄了設備功能與其所屬的根節點的映射關系;其中,表索引是設備功能在主控制根節點PCIe域中的ID號,表條目內容描述了設備功能所屬的根節點標識ID及其在所屬根節點PCIe域中的ID號。用于多根I/O虛擬化共享系統的I/O資源管理方法,所述步驟3中的I/O資源動態分配包括I/O資源初始化分配,所述I/O資源初始化分配指在系統初始化時,主控制根節點為各從屬根節點分配設備功能,建立初始的PCIe拓撲結構的過程; I/O資源回收,所述I/O資源回收指在不影響其他根節點工作的情況下,主控制根節點在從屬根節點刪除I/o設備功能的過程;I/O資源再分配,所述I/O資源再分配指在不影響其他根節點工作的情況下,主控制根節點向從屬根節點增加I/o設備功能的過程。用于多根I/O虛擬化共享系統的I/O資源管理方法,所述I/O資源初始化分配包括步驟61,管理用戶根據根節點的需求和系統的I/O資源制定初始的分配策略,并通過PCIe管理模塊發送設備分配指令;步驟62,PCIe管理模塊通過發送設備分配事務包,執行管理用戶的資源分配策略;所述設備分配事務包,是PCIe內存寫事務包,所述PCIe內存寫事務包指示了要操作的設備功能ID號,即在主控制根節點PCIe域中的ID號、該設備功能所屬的根節點標識ID以及其在所屬根節點PCIe域中的ID號;其中,所屬根節點ID號為從屬根節點ID號,指示一個設備分配指令;步驟63,PCIe下游端口接收到步驟62中所述設備分配事務包,解析事務包獲取要操作的設備功能ID號、其所屬的根節點標識ID以及其在所屬根節點PCIe域中的ID號;并將由設備功能所屬的根節點標識ID和其在所屬根節點PCIe域中的ID號組成內容,寫入要操作的設備功能ID號指示的I/O資源分配表相應的表項中,進而為各從屬根節點指定了分配的I/O設備功能;步驟64,主控制根節點完成對從屬根節點的I/O設備資源初始化分配后,從屬根節點被引導進行PCIe設備重掃描,發現和初始化配置分配得到的設備功能。
用于多根I/O虛擬化共享系統的I/O資源管理方法,所述I/O資源回收包括步驟71,管理用戶根據需求決定從某個根從屬節點刪除某個設備功能,通過PCIe管理軟件發送設備回收指令;步驟72,PCIe管理模塊通過發送設備分配事務包,執行管理用戶的資源回收指令;所述設備分配事務包,是PCIe內存寫事務包,所述PCIe內存寫事物包指示了要操作的I/O設備功能ID號、該設備功能所屬的根節點ID號以及其在所屬根節點PCIe域中的ID號;其中,功能所屬的根節點標識ID為主控制根節點標識ID,指示一個設備回收指令;步驟73,PCIe下游端口接收設備分配事務包,解析事務包獲取要操作的設備功能ID號、其所屬的根節點標識ID以及其在所屬根節點PCIe域中的ID號;步驟74,所屬根節點標識ID判定;如果配置事務包中指示的所屬根節點標識ID為主控制根節點標識ID,指示一個設備回收指令;步驟75,讀取事務包要操作的設備功能ID號指示的I/O資源分配表對應的表項,·向表項指示的從屬根節點發送一個虛擬熱插拔事件,通知有I/o設備功能將被拔除;步驟76,復位操作的設備功能ID號指示的I/O資源分配表相應的表項;將由主控制根節點標識ID和值為全零的功能ID號組成內容,寫入要操作的設備功能ID號指示的I/O資源分配表相應的表項中;步驟77,目標從屬根節點接收到該熱插拔事件,將該設備從PCIe拓撲結構中移除,并卸載相應的驅動程序。用于多根I/O虛擬化共享系統的I/O資源管理方法,所述I/O資源再分配包括步驟81,管理用戶根據需求決定并指示向某個從屬根節點增加某個設備功備,通過PCIe管理軟件發送設備再分配指令;步驟82,PCIe管理模塊通過發送設備分配事務包,執行管理用戶的資源再分配指令;所述設備分配事務包,是PCIe內存寫事務包,所述PCIe內存寫事務包指示了要操作的I/O設備功能ID號,即在主控制根節點PCIe域中的ID號、該設備功能所屬的根節點標識ID以及其在所屬根節點PCIe域中的ID號;其中,功能所屬的根節點標識ID為從屬根節點標識ID,指示一個設備分配指令;步驟83,PCIe下游端口接收設備分配事務包,解析事務包獲取要操作的設備功能ID號、其所屬的根節點標識ID以及其在所屬根節點PCIe域中的ID號;步驟84,所屬根節點標識ID判定;如果配置事務包中指示的所屬根節點ID為非主控制根節點ID,指示一個設備分配指令;步驟85,向事務包指示的從屬根節點發送一個虛擬熱插拔事件,通知對應的從屬根節點有I/o設備插入其PCIe拓撲結構;同時,將由設備功能所屬的根節點標識ID和其在所屬根節點PCIe域中的ID號組成內容,寫入要操作的設備功能ID號指示的I/O資源分配表相應的表項中,進而為該從屬根節點增加分配一個I/O設備功能;步驟86,目標從屬根節點接收到熱插拔事件,對該設備進行掃描和初始化配置,并加載相應的驅動程序。本發明的有益效果為通過本發明的I/O資源管理方法解決了多根I/O虛擬化共享系統中因一個I/o設備被多個根節點共享而引起的系統競爭和沖突,并能根據系統的需求實現I/o資源在多個根節點之間進行動態分配,同時為管理用戶提供了一個可操作性的平臺。
圖I是多根I/O虛擬化共享系統的結構示意圖;圖2是本發明多根共享一個SR-IOV設備示意圖;圖3是本發明I/O資源分配表示意圖;圖4是本發明I/O資源初始化配置表示意圖;圖5是本發明I/O資源動態回收流程圖;圖6是本發明I/O資源動態再分配流程圖;圖7是本發明I/O資源管理方法示意圖。
具體實施例方式下面給出本發明的具體實施方式
,結合附圖對本發明做出了詳細描述。為避免多個根節點共享一個I/O設備時引起系統沖突和競爭,本發明提供了一種用于多根I/o虛擬化共享系統的I/O資源管理方法。如圖7所示,所述I/O資源管理方法,是指利用一個主控制根節點對多根IO虛擬化共享系統中的所有I/O設備進行集中式的初始化配置和分配管理。它包括以下特征a)只有主控制根節點能夠枚舉發現和初始化配置I/O設備資源。系統上電,啟動的根節點首先利用現成的標準的系統初始化軟件對系統中的所有PCIe設備進行搜索發現,只有主控制根節點能夠枚舉發現各I/O設備,并為各I/O設備初始化配置相應的I/O地址空間、內存地址空間和中斷等資源。b)主控制根節點通過PCIe管理模塊,輔助管理用戶管理和控制系統中的I/O設備資源,執行管理用戶制定的I/O資源分配策略。c)主控制根節點通過PCIe管理模塊和I/O資源分配表,建立設備功能與其所屬的根節點的映射關系,實現I/o資源動態分配。所述PCIe管理模塊,其特征在于它收集系統中所有PCIe組件信息并呈現給管理用戶,輔助管理用戶制定或者修改資源分配策略。同時,PCIe管理模塊根據用戶的資源分配策略,發送設備分配指令,改寫I/O資源分配表,實現I/O資源的分配管理。所述PCIe組件包括但不限于系統中所有的根節點和所有的I/O設備。所述根節點信息包括但不限于根節點的數目、每個根節點擁有的I/o資源以及各根節點的負載狀態。所述I/o設備信息包括但不限于設備功能ID標識符(如B/D/F)、設備功能描述信息(包括廠商ID,設備ID,版本ID等)以及設備功能占用情況等。所述I/O資源分配表,其特征在于所述資源分配表位于多根I/O虛擬化共享控制器的每個PCIe下游端口中,每個I/O設備對應一張I/O資源分配表;所述資源分配表記錄了設備功能與其所屬的根節點的映射關系。其中,表索引是設備功能在主控制根節點PCIe域中的ID號(如功能號),表條目內容描述了設備功能所屬的根節點標識ID及其在所屬根節點PCIe域中的ID號(如總線號Bus/設備號Device/功能號Function)。圖I描繪了多根I/O虛擬化共享系統的結構示意圖。多根I/O虛擬化共享系統主要包括三個部分根節點子系統、I/o設備子系統和多根I/O虛擬化共享控制器。多根IO虛擬化共享控制器通過PCIe接口協議將根節點子系統和I/O設備子系統耦合在一起,實現一個I/O設備資源被多個根節點直接共享。多根I/O虛擬化共享系統中的根節點子系統包含多個根節點,每個根節點由根聯合體(Root Complex, RC)及其連接的CPU組(CPU set)和內存(Mem)組成。其中,運行有PCIe管理相關軟件的根節點稱之為主控制根節點(Master Root Node, mRN),主控制根節點只有一個(下文使用mRNO標識),包含一組PCIe管理軟件;它對系統中的所有I/O設備資源具有絕對的管理控制權,并根據用戶制定的資源分配策略,將系統中I/O設備的硬件資源以設備功能為單位,動態地分配給其他根節點。其他根節點稱為從屬根節點(Slave RootNode, sRN),從屬根節點可以有多個(下文使用sRNl,sRN2,…,sRNn標識),并根據主控制根節點的分配,擁有一定I/O資源的獨立使用權,能且僅能使用主控根節點分配給它的I/O設備資源。根節點上可以運行多個同構或者異構虛擬機(Virtual Machine,VM),虛擬機管理程序(Virtual Machine Manager, VMM)負責調度主控制根節點分配的I/O資源為各VM所用。多根1/0虛擬化共享系統中的1/0設備子系統包含多個1/0設備,它們具備同時 為多個虛擬機提供服務的能力,可以是包含一個物理功能(Physical Function, PF)及其對應的多個虛擬功能(Virtual Function,VF)的SR-IOV設備或者包含多個PF及其對應的多個VF的SR-IOV設備,也可以是多功能1/0設備等。多根1/0虛擬化共享系統中的多根1/0虛擬化共享控制器包由若干個PCIe上游端口(PCIe Upstream Port)、PCIe 多根交換機和若干個 PCIe 下游端口(PCIe DownstreamPort)三個部分組成。其中,PCIe上游端口包含符合PCI-Express基本規范中的PCIe端口類型定義的PCIe控制器,它負責與根節點子系統的互連,以及事務包在PCIe單根環境和PCIe多根環境之間的轉換;PCIe多根交換機,實質是由多個PCI橋建立的N+M個端口的交換機,通過為每個根節點建立一個1+M端口的虛擬PCIe交換機,實現各根節點與M個1/0設備的邏輯連接;PCIe下游端口,包含符合PCI-Express基本規范中的PCIe端口類型定義的PCIe控制器和直接1/0虛擬化接口設備兩個功能部分,負責與1/0設備子系統的互連,以及事務包在PCIe單根環境和PCIe多根環境之間的轉換,實現各根節點直接訪問物理I/O設備功能。圖2描述了多個根節點共享一個SR-IOV設備的示意圖。多個根節點通過PCIe多根交換機共享連接在PCIe下游端口的SR-IOV設備資源。在系統啟動時,每個根節點都將嘗試枚舉PCIe多根交換機下連接的1/0設備,實質是枚舉PCIe下游端口下連接的同一 1/0設備。這將引起系統競爭,一個根節點對SR-IOV設備的修改,會影響其他根節點的運行,最終導致系統不能正常工作。因此,為了避免各系統的沖突和競爭,同時實現一個SR-IOV設備資源能被多個根節點所共享,本發明利用一個主控制根節點mRNO對SR-IOV設備進行控制和管理,并通過設備1/0資源分配表為從屬根節點分配設備。1/0資源分配表位于多根1/0虛擬化共享控制器的每個PCIe下游端口中,每個1/0設備對應一張1/0資源分配表。從屬根節點只能發現和使用設備10資源分配表中記錄的分配給它的設備功能。1/0資源分配表如圖3所示,表項記錄了設備功能與其所屬的根節點的映射關系。多根I/o虛擬化共享系統的每個設備對應一張1/0資源分配表,其中表索引是設備功能在主控制根節點PCIe域的標識符(如功能號),表條目內容描述了設備功能所屬的根節點標識ID及其在從屬根節點PCIe域中的標識。通過配置I/O資源分配表,將一個設備的I/O資源以設備功能為單位掛載到各根節點,進而為各根節點建立了相應的獨立的PCIe拓撲結構,實現了多個根節點對設備I/O資源的共享。如圖2所示,根節點子系統上電時,根節點啟動并利用現成的標準的系統初始化軟件對SR-IOV設備進行搜索發現和初始化配置。然而,由于此時設備IO資源分配表沒有記錄任何設備功能的分配信息,除了主控制根節點mRNO,所有從屬根節點(sRNl,sRN2,…,sRNn)都不能發現SR-IOV設備中功能。系統啟動完成之后,主控制根節點mRNO根據用戶資源分配策略,通過配置設備IO資源分配表記錄設備功能分配信息,將SR-IOV設備硬件資源以設備功能為單位(一個虛擬功能)分配給從屬根節點。在設備初始化分配完成后,從屬根節點被引導進行PCIe設備重掃描。通過設備I/O資源分配表,從屬根節點才能夠發現分配得到的SR-IOV設備中的虛擬功能。當從屬根節點完成PCIe設備重掃描,加載相應的虛擬功能VF驅動,即可以使用特定的虛擬功能,進而實現SR-IOV設備資源的多根共享。本發明提供的一種用于多根I/O虛擬化共享系統的I/O資源管理方法,能夠根據用戶制定的資源分配策略,實現I/o資源在多個根節點之間的動態分配。所述I/O資源動態分配包括I/o資源初始化分配,I/O資源回收和I/O資源再分配。圖4描述了利用主控制根節點對I/O資源初始化配置的流程圖。所述I/O資源初始化配置,指在系統啟動時,主控制根節點枚舉發現和初始化配置系統中所有I/o設備,并根據管理用戶制定的I/o資源分配策略,為各從屬根節點分配設備功能,建立初始的PCIe拓撲結構的過程,它包括以下步驟首先,根節點子系統上電,啟動的根節點首先利用現成的標準的系統初始化軟件對系統中的所有PCIe設備進行搜索發現和初始化配置。設備初始化期間,系統配置軟件訪問設備中每個功能的配置空間,分配功能在系統中的ID號,同時根據其資源需求為其分配相應的I/O地址空間、內存地址空間和中斷等資源。在系統上電啟動初期,只有主控制根節點能夠發現和初始化配置I/O子系統中各I/O設備,并為每個I/O設備對應的I/O資源分配表配置內存地址。主控制根節點初始化軟件完成設備發現和配置后,其上運行的PCIe管理軟件收集系統中所有PCIe組件信息并呈現給管理用戶,輔助管理用戶進行資源分配策略的制定。所述收集的PCIe組件包括但不限于系統中所有的根節點和所有的I/O設備。所述根節點信息包括但不限于根節點的數目、每個根節點擁有的I/O資源以及各根節點的負載狀態。所述I/O設備信息包括但不限于設備功能ID標識符(如B/D/F)、設備功能描述信息(包括廠商ID,設備ID,版本ID等)、設備的屬性(如多功能設備或者SR-IOV設備等)以及設 備功能占用情況等。然后,管理用戶根據各根節點的需求和現有的I/O資源制定初始的分配策略,并通過PCIe管理軟件發送設備分配指令。PCIe管理軟件接收到指令后,通過發送設備分配事務包執行管理用戶的資源分配策略。所述設備分配事務包,是PCIe內存寫事務包,它指示了要操作的設備功能ID號(在主控制根節點PCIe域中的ID號)、該設備功能所屬的根節點ID號以及其在所屬根節點PCIe域中的ID號。其中,所屬根節點ID號為從屬根節點ID號,指示一個設備分配指令。PCIe下游端口接收到上述設備分配事務包,解析事務包獲取要操作的設備功能ID號、其所屬的根節點ID號以及其在所屬根節點PCIe域中的ID號;并將由設備功能所屬的根節點ID號和其在所屬根節點PCIe域中的ID號組成內容,寫入要分配的設備功能ID號指示的I/O資源分配表相應的表項中,進而為各從屬根節點指定了分配的I/O設備功能。主控制根節點完成對從屬根節點的I/O設備資源初始化分配后,各從屬根節點被引導進行PCIe設備重掃描。各從屬根節點根據I/O資源分配表,可以發現分配得到的設備功能,并根據其資源需求為其分配在本地PCIe域中的ID號、IO地址空間、內存地址空間和中斷等資源。多根I/O虛擬化共享系統在工作過程中,可以在不影響其他根節點工作的情況下,動態地進行系統設備更新升級,以及對現有的I/o資源進行重新分配。無論是設備更新升級還是現有設備資源的重新分配,實質都是從根節點刪除相應設備功能和向根節點增加相應設備功能的過程。本發明提供了一種I/o資源動態分配方法,能夠在不影響其他根節點工作的情況下,從從屬根節點刪除I/o設備功能或者向從屬根節點增加I/O設備功能。從 從屬根節點刪除I/o設備功能稱之為I/O資源回收,向從屬根節點增加I/O設備功能的過程稱之為I/o資源再分配。圖5描述了 I/O資源回收的流程圖,其過程如下所述首先,管理用戶根據需求決定從某個從屬根節點刪除某個設備功備,并通過PCIe管理軟件發送設備回收指令。然后PCIe管理軟件通過發送設備分配事務包,執行管理用戶的資源回收指令。所述設備分配事務包,是PCIe內存寫事務包,它指示了要操作的I/O設備功能ID號(在主控制根節點PCIe域中的ID號)、該設備功能所屬的根節點ID號以及其在所屬根節點PCIe域中的ID號。其中,功能所屬的根節點ID號為主控制根節點ID號,指示一個設備回收指令。當PCIe下游端口接收設備分配事務包,解析事務包獲取要操作的設備功能ID號、其所屬的根節點ID號以及其在所屬根節點PCIe域中的ID號。并對所屬根節點ID進行判定,如果配置事務包中指示的所屬根節點ID為主控制根節點ID,指示一個設備回收指令。然后,讀取事務包要操作的設備功能ID號指示的I/O資源分配表對應的表項,并向表項指示的從屬根節點發送一個虛擬熱插拔事件,通知有I/O設備功能將被拔除。同時,將由主控制根節點ID號和值為全零的功能ID號組成內容,寫入要操作的設備功能ID號指示的I/O資源分配表相應的表項中。當目標從屬根節點接收到上述虛擬熱插拔事件后,根據系統運行狀態決定該請求的生效時間,然后將該設備功能從系統中移除,并卸載相關的驅動程序,終止所有未完成的事務及要生成的事務。圖6描述了 I/O資源再分配的流程圖,其過程如下所述首先管理用戶根據需求決定向某個從屬根節點增加某個設備功能,并通過PCIe管理軟件發送設備回收指令然后PCIe管理軟件通過發送設備分配事務包,執行管理用戶的資源再分配指令。所述設備分配事務包,是PCIe內存寫事務包,它指示了要操作的I/O設備功能ID號(在主控制根節點PCIe域中的ID號)、該設備功能所屬的根節點ID號以及其在所屬根節點PCIe域中的ID號。其中,功能所屬的根節點ID號為從屬根節點ID號,指示一個設備分配指令。當PCIe下游端口接收設備分配事務包,解析事務包獲取要操作的設備功能ID號、其所屬的根節點ID號以及其在所屬根節點PCIe域中的ID號。并對所屬根節點ID進行判定,如果配置事務包中指示的所屬根節點ID不是主控制根節點ID,指示一個設備回收指令。然后,向事務包指示的從屬根節點發送一個虛擬熱插拔事件,通知對應的從屬根節點有I/O設備插入其PCIe拓撲結構。同時,將由設備功能所屬的根節點ID號和其在所屬根節點PCIe域中的ID號組成內容,寫入要操作的設備功能ID號指示的I/O資源分配表相應的表項中,進而為該從屬根節點增加分配一個I/O設備功能。當目標從屬根節點接收到上述虛擬熱插拔事件后,根據系統運行狀態決定該請求的生效時間,然后對該設備進行掃描和初始化配置,并加載相應的驅動程序。本領域的技術人員在不脫離權利要求書確定的本發明的精神和范圍的條件下,還 可以對以上內容進行各種各樣的修改。因此本發明的范圍并不僅限于以上的說明,而是由權利要求書的范圍來確定的。
權利要求
1.一種用于多根I/o虛擬化共享系統的I/O資源管理方法,其特征在于,包括 步驟I,主控制根節點對系統中的I/O資源枚舉發現和初始化配置; 步驟2,主控制根節點通過PCIe管理模塊,輔助管理用戶管理和控制系統中的I/O設備資源,執行管理用戶制定的I/O資源分配策略; 步驟3,主控制根節點通過PCIe管理模塊和I/O資源分配表,建立設備功能與其所屬的根節點的映射關系,實現I/O資源動態分配。
2.如權利要求I所述的用于多根I/O虛擬化共享系統的I/O資源管理方法,其特征在于,所述步驟2包括 步驟21,PCIe管理模塊收集系統中所有PCIe組件信息并呈現給管理用戶,輔助管理用戶初始化或者修改資源分配策略; 步驟22,PCIe管理模塊根據用戶的資源分配策略,發送設備分配指令,實現I/O資源的分配管理。
3.如權利要求2所述的用于多根I/O虛擬化共享系統的I/O資源管理方法,其特征在于,所述PCIe組件信息包括 根節點信息,所述根節點信息,包括根節點的數目、每個根節點擁有的I/O資源以及各根節點的負載狀態; I/O設備信息,所述I/O設備信息,包括設備功能ID號、設備功能描述信息以及設備功能占用情況。
4.如權利要求I所述的用于多根I/O虛擬化共享系統的I/O資源管理方法,其特征在于,所述I/O資源分配表包括 所述資源分配表位于多根I/O虛擬化共享控制器的每個PCIe下游端口中,每個I/O設備對應一張I/O資源分配表;所述資源分配表記錄了設備功能與其所屬的根節點的映射關系;其中,表索引是設備功能在主控制根節點PCIe域中的ID號,表條目內容描述了設備功能所屬的根節點標識ID及其在所屬根節點PCIe域中的ID號。
5.如權利要求I所述的用于多根I/O虛擬化共享系統的I/O資源管理方法,其特征在于,所述步驟3中的I/O資源動態分配包括 I/O資源初始化分配,所述I/O資源初始化分配指在系統初始化時,主控制根節點為各從屬根節點分配設備功能,建立初始的PCIe拓撲結構的過程; I/O資源回收,所述I/O資源回收指在不影響其他根節點工作的情況下,主控制根節點在從屬根節點刪除I/O設備功能的過程; I/O資源再分配,所述I/O資源再分配指在不影響其他根節點工作的情況下,主控制根節點向從屬根節點增加I/O設備功能的過程。
6.如權利要求5所述的用于多根I/O虛擬化共享系統的I/O資源管理方法,其特征在于,所述I/o資源初始化分配包括 步驟61,管理用戶根據根節點的需求和系統的I/O資源制定初始的分配策略,并通過PCIe管理模塊發送設備分配指令; 步驟62,PCIe管理模塊通過發送設備分配事務包,執行管理用戶的資源分配策略;所述設備分配事務包,是PCIe內存寫事務包,所述PCIe內存寫事務包指示了要操作的設備功能ID號,即在主控制根節點PCIe域中的ID號、該設備功能所屬的根節點標識ID以及其在所屬根節點PCIe域中的ID號;其中,所屬根節點ID號為從屬根節點ID號,指示一個設備分配指令; 步驟63,PCIe下游端口接收到步驟62中所述設備分配事務包,解析事務包獲取要操作的設備功能ID號、其所屬的根節點標識ID以及其在所屬根節點PCIe域中的ID號;并將由設備功能所屬的根節點標識ID和其在所屬根節點PCIe域中的ID號組成內容,寫入要操作的設備功能ID號指示的I/O資源分配表相應的表項中,進而為各從屬根節點指定了分配的I/O設備功能; 步驟64,主控制根節點完成對從屬根節點的I/O設備資源初始化分配后,從屬根節點被引導進行PCIe設備重掃描,發現和初始化配置分配得到的設備功能。
7.如權利要求5所述的用于多根I/O虛擬化共享系統的I/O資源管理方法,其特征在于,所述I/o資源回收包括 步驟71,管理用戶根據需求決定從某個根從屬節點刪除某個設備功能,通過PCIe管理軟件發送設備回收指令; 步驟72,PCIe管理模塊通過發送設備分配事務包,執行管理用戶的資源回收指令;所述設備分配事務包,是PCIe內存寫事務包,所述PCIe內存寫事物包指示了要操作的I/O設備功能ID號、該設備功能所屬的根節點ID號以及其在所屬根節點PCIe域中的ID號;其中,功能所屬的根節點標識ID為主控制根節點標識ID,指示一個設備回收指令; 步驟73,PCIe下游端口接收設備分配事務包,解析事務包獲取要操作的設備功能ID號、其所屬的根節點標識ID以及其在所屬根節點PCIe域中的ID號; 步驟74,所屬根節點標識ID判定;如果配置事務包中指示的所屬根節點標識ID為主控制根節點標識ID,指示一個設備回收指令; 步驟75,讀取事務包要操作的設備功能ID號指示的I/O資源分配表對應的表項,向表項指示的從屬根節點發送一個虛擬熱插拔事件,通知有I/O設備功能將被拔除; 步驟76,復位操作的設備功能ID號指示的I/O資源分配表相應的表項;將由主控制根節點標識ID和值為全零的功能ID號組成內容,寫入要操作的設備功能ID號指示的I/O資源分配表相應的表項中; 步驟77,目標從屬根節點接收到該熱插拔事件,將該設備從PCIe拓撲結構中移除,并卸載相應的驅動程序。
8.如權利要求5所述的用于多根I/O虛擬化共享系統的I/O資源管理方法,其特征在于,所述I/O資源再分配包括 步驟81,管理用戶根據需求決定并指示向某個從屬根節點增加某個設備功備,通過PCIe管理軟件發送設備再分配指令; 步驟82,PCIe管理模塊通過發送設備分配事務包,執行管理用戶的資源再分配指令;所述設備分配事務包,是PCIe內存寫事務包,所述PCIe內存寫事務包指示了要操作的I/O設備功能ID號,即在主控制根節點PCI e域中的ID號、該設備功能所屬的根節點標識ID以及其在所屬根節點PCIe域中的ID號;其中,功能所屬的根節點標識ID為從屬根節點標識ID,指示一個設備分配指令; 步驟83,PCIe下游端口接收設備分配事務包,解析事務包獲取要操作的設備功能ID號、其所屬的根節點標識ID以及其在所屬根節點PCIe域中的ID號;步驟84,所屬根節點標識ID判定;如果配置事務包中指示的所屬根節點ID為非主控制根節點ID,指示一個設備分配指令; 步驟85,向事務包指示的從屬根節點發送一個虛擬熱插拔事件,通知對應的從屬根節點有I/O設備插入其PCIe拓撲結構;同時,將由設備功能所屬的根節點標識ID和其在所屬根節點PCIe域中的ID號組成內容,寫入要操作的設備功能ID號指示的I/O資源分配表相應的表項中,進而為該從屬根節點增加分配一個I/O設備功能; 步驟86,目標從屬根節點接收到熱插拔事件,對該設備進行掃描和初始化配置,并加載相應的驅動程序。·
全文摘要
本發明公開一種用于多根I/O虛擬化共享系統的I/O資源管理方法,所述方法是指利用一個主控制根節點對多根I/O虛擬化共享系統中的所有I/O設備進行集中式的初始化配置和分配管理,包括步驟1,主控制根節點對系統中的I/O資源枚舉發現和初始化配置;步驟2,主控制根節點通過PCIe管理模塊,輔助管理用戶管理和控制系統中的I/O設備資源,執行管理用戶制定的I/O資源分配策略;步驟3,主控制根節點通過PCIe管理模塊和I/O資源分配表,建立設備功能與其所屬的根節點的映射關系,實現I/O資源動態分配。
文檔編號G06F9/455GK102722414SQ20121016059
公開日2012年10月10日 申請日期2012年5月22日 優先權日2012年5月22日
發明者劉小麗, 孫凝暉, 安學軍, 張佩珩, 曹政, 王展, 蘇勇 申請人:中國科學院計算技術研究所