CN102722414B - 用于多根i/o 虚拟化共享***的i/o 资源管理方法 - Google Patents
用于多根i/o 虚拟化共享***的i/o 资源管理方法 Download PDFInfo
- Publication number
- CN102722414B CN102722414B CN201210160593.9A CN201210160593A CN102722414B CN 102722414 B CN102722414 B CN 102722414B CN 201210160593 A CN201210160593 A CN 201210160593A CN 102722414 B CN102722414 B CN 102722414B
- Authority
- CN
- China
- Prior art keywords
- root node
- pcie
- equipments
- functions
- resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种用于多根I/O虚拟化共享***的I/O资源管理方法,所述方法是指利用一个主控制根节点对多根I/O虚拟化共享***中的所有I/O设备进行集中式的初始化配置和分配管理,包括:步骤1,主控制根节点对***中的I/O资源枚举发现和初始化配置;步骤2,主控制根节点通过PCIe管理模块,辅助管理用户管理和控制***中的I/O设备资源,执行管理用户制定的I/O资源分配策略;步骤3,主控制根节点通过PCIe管理模块和I/O资源分配表,建立设备功能与其所属的根节点的映射关系,实现I/O资源动态分配。
Description
技术领域
本发明涉及I/O虚拟化技术,特别是涉及一种用于多根I/O虚拟化共享***的I/O资源管理方法。
背景技术
在传统数据中心或云计算中心中,每个刀片服务器都拥有独立的I/O资源,如网卡、HBA适配器等。然而计算与I/O资源的紧密耦合,使得两类资源的扩展同时受到服务器空间的限制。此外,高性能I/O设备(如10GigE网卡)仅依附一台服务器,无疑降低了其利用效率,提高了***总成本。为解决上述问题,就要解除计算与I/O资源的紧密耦合,其关键就是实现I/O设备在多个服务器之间的共享。
近年来,I/O设备的共享技术得到了变革性的发展,行业标准组织PCI特别兴趣小组PCI-SIG先后制定了PCI-SIG Single Root I/O Virtualization(SR-IOV:单根IO虚拟化)和PCI-SIG Multi-Root I/O Virtualization(MR-IOV:多根IO虚拟化)规范。具备SR-IOV能力的PCI Express设备能够被运行在同一宿主机上的不同虚拟机(VM/Guest)所共享,并为虚拟机提供接近本机的I/O性能。目前SR-IOV已得到I/O设备厂商的广泛支持,如支持SR-IOV的千兆以太网卡、10G以太网卡、HBA适配器等。
具备MR-IOV能力的PCI Express设备能够被多个宿主机上运行的若干虚拟机(VM/Guest)所共享,MR-IOV技术可以完全解除计算与I/O间的紧密耦合。但由于PCI-SIG的MR-IOV协议对原有***的较大改动(包括对PCIe基本协议、PCIe设备结构和PCIe交换机结构的修改),难以被工业界接受。然而,对于像SR-IOV和多功能设备等本身具备有同时供多个虚拟机直接共享的能力,如果对其提供一系列附加支持,实现I/O资源在多个根节点之间共享是可行的。
当一个I/O设备通过PCIe交换机结构被多个根节点共享时,每个根节点在***启动后都将尝试枚举该设备。这将引起***竞争,一个根节点对拓扑结构中I/O设备的修改,会影响其他根节点的运行,最终导致***不能正常工作。
发明内容
为解决上述问题,本发明提供了一种多根I/O虚拟化共享***中的I/O资源管理方法,用于解决多根IO虚拟化共享***的资源管理和分配的技术问题,避免多根I/O虚拟化共享***中各根节点的冲突和竞争。
本发明公开一种用于多根I/O虚拟化共享***的I/O资源管理方法,包括:
步骤1,主控制根节点对***中的I/O资源枚举发现和初始化配置;
步骤2,主控制根节点通过PCIe管理模块,辅助管理用户管理和控制***中的I/O设备资源,执行管理用户制定的I/O资源分配策略;
步骤3,主控制根节点通过PCIe管理模块和I/O资源分配表,建立设备功能与其所属的根节点的映射关系,实现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资源在多个根节点之间进行动态分配,同时为管理用户提供了一个可操作性的平台。
附图说明
图1是多根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)。
图1描绘了多根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 RootNode,mRN),主控制根节点只有一个(下文使用mRN0标识),包含一组PCIe管理软件;它对***中的所有I/O设备资源具有绝对的管理控制权,并根据用户制定的资源分配策略,将***中I/O设备的硬件资源以设备功能为单位,动态地分配给其他根节点。其他根节点称为从属根节点(Slave Root Node,sRN),从属根节点可以有多个(下文使用sRN1,sRN2,…,sRNn标识),并根据主控制根节点的分配,拥有一定I/O资源的独立使用权,能且仅能使用主控根节点分配给它的I/O设备资源。根节点上可以运行多个同构或者异构虚拟机(VirtualMachine,VM),虚拟机管理程序(Virtual Machine Manager,VMM)负责调度主控制根节点分配的I/O资源为各VM所用。
多根I/O虚拟化共享***中的I/O设备子***包含多个I/O设备,它们具备同时为多个虚拟机提供服务的能力,可以是包含一个物理功能(PhysicalFunction,PF)及其对应的多个虚拟功能(Virtual Function,VF)的SR-IOV设备或者包含多个PF及其对应的多个VF的SR-IOV设备,也可以是多功能I/O设备等。
多根I/O虚拟化共享***中的多根I/O虚拟化共享控制器包由若干个PCIe上游端口(PCIe Upstream Port)、PCIe多根交换机和若干个PCIe下游端口(PCIe Downstream Port)三个部分组成。其中,PCIe上游端口包含符合PCI-Express基本规范中的PCIe端口类型定义的PCIe控制器,它负责与根节点子***的互连,以及事务包在PCIe单根环境和PCIe多根环境之间的转换;PCIe多根交换机,实质是由多个PCI桥建立的N+M个端口的交换机,通过为每个根节点建立一个1+M端口的虚拟PCIe交换机,实现各根节点与M个I/O设备的逻辑连接;PCIe下游端口,包含符合PCI-Express基本规范中的PCIe端口类型定义的PCIe控制器和直接I/O虚拟化接口设备两个功能部分,负责与I/O设备子***的互连,以及事务包在PCIe单根环境和PCIe多根环境之间的转换,实现各根节点直接访问物理I/O设备功能。
图2描述了多个根节点共享一个SR-IOV设备的示意图。多个根节点通过PCIe多根交换机共享连接在PCIe下游端口的SR-IOV设备资源。在***启动时,每个根节点都将尝试枚举PCIe多根交换机下连接的I/O设备,实质是枚举PCIe下游端口下连接的同一I/O设备。这将引起***竞争,一个根节点对SR-IOV设备的修改,会影响其他根节点的运行,最终导致***不能正常工作。因此,为了避免各***的冲突和竞争,同时实现一个SR-IOV设备资源能被多个根节点所共享,本发明利用一个主控制根节点mRN0对SR-IOV设备进行控制和管理,并通过设备I/O资源分配表为从属根节点分配设备。I/O资源分配表位于多根I/O虚拟化共享控制器的每个PCIe下游端口中,每个I/O设备对应一张I/O资源分配表。从属根节点只能发现和使用设备IO资源分配表中记录的分配给它的设备功能。
I/O资源分配表如图3所示,表项记录了设备功能与其所属的根节点的映射关系。多根I/O虚拟化共享***的每个设备对应一张I/O资源分配表,其中表索引是设备功能在主控制根节点PCIe域的标识符(如功能号),表条目内容描述了设备功能所属的根节点标识ID及其在从属根节点PCIe域中的标识。通过配置I/O资源分配表,将一个设备的I/O资源以设备功能为单位挂载到各根节点,进而为各根节点建立了相应的独立的PCIe拓扑结构,实现了多个根节点对设备I/O资源的共享。
如图2所示,根节点子***上电时,根节点启动并利用现成的标准的***初始化软件对SR-IOV设备进行搜索发现和初始化配置。然而,由于此时设备IO资源分配表没有记录任何设备功能的分配信息,除了主控制根节点mRN0,所有从属根节点(sRN1,sRN2,…,sRNn)都不能发现SR-IOV设备中功能。***启动完成之后,主控制根节点mRN0根据用户资源分配策略,通过配置设备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设备功能。
当目标从属根节点接收到上述虚拟热插拔事件后,根据***运行状态决定该请求的生效时间,然后对该设备进行扫描和初始化配置,并加载相应的驱动程序。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (7)
1.一种用于多根I/O虚拟化共享***的I/O资源管理方法,其特征在于,包括:
步骤1,主控制根节点对***中的I/O资源枚举发现和初始化配置;
步骤2,主控制根节点通过PCIe管理模块,辅助管理用户管理和控制***中的I/O设备资源,执行管理用户制定的I/O资源分配策略;
步骤3,主控制根节点通过PCIe管理模块和I/O资源分配表,建立设备功能与其所属的根节点的映射关系,实现I/O资源动态分配;其中,I/O资源动态分配包括:I/O资源初始化分配,所述I/O资源初始化分配指在***初始化时,主控制根节点为各从属根节点分配设备功能,建立初始的PCIe拓扑结构的过程;I/O资源回收,所述I/O资源回收指在不影响其他根节点工作的情况下,主控制根节点在从属根节点删除I/O设备功能的过程;I/O资源再分配,所述I/O资源再分配指在不影响其他根节点工作的情况下,主控制根节点向从属根节点增加I/O设备功能的过程。
2.如权利要求1所述的用于多根I/O虚拟化共享***的I/O资源管理方法,其特征在于,所述步骤2包括:
步骤21,PCIe管理模块收集***中所有PCIe组件信息并呈现给管理用户,辅助管理用户初始化或者修改资源分配策略;其中,所述PCIe组件包括***中所有的根节点和所有的I/O设备;
步骤22,PCIe管理模块根据用户的资源分配策略,发送设备分配指令,实现I/O资源的分配管理。
3.如权利要求2所述的用于多根I/O虚拟化共享***的I/O资源管理方法,其特征在于,所述PCIe组件信息包括:
根节点信息,所述根节点信息,包括根节点的数目、每个根节点拥有的I/O资源以及各根节点的负载状态;
I/O设备信息,所述I/O设备信息,包括设备功能ID号、设备功能描述信息以及设备功能占用情况。
4.如权利要求1所述的用于多根I/O虚拟化共享***的I/O资源管理方法,其特征在于,所述I/O资源分配表包括:
所述资源分配表位于多根I/O虚拟化共享控制器的每个PCIe下游端口中,每个I/O设备对应一张I/O资源分配表;所述资源分配表记录了设备功能与其所属的根节点的映射关系;其中,表索引是设备功能在主控制根节点PCIe域中的ID号,表条目内容描述了设备功能所属的根节点标识ID及其在所属根节点PCIe域中的ID号。
5.如权利要求1所述的用于多根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设备重扫描,发现和初始化配置分配得到的设备功能。
6.如权利要求1所述的用于多根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拓扑结构中移除,并卸载相应的驱动程序。
7.如权利要求1所述的用于多根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,目标从属根节点接收到热插拔事件,对该设备进行扫描和初始化配置,并加载相应的驱动程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210160593.9A CN102722414B (zh) | 2012-05-22 | 2012-05-22 | 用于多根i/o 虚拟化共享***的i/o 资源管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210160593.9A CN102722414B (zh) | 2012-05-22 | 2012-05-22 | 用于多根i/o 虚拟化共享***的i/o 资源管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102722414A CN102722414A (zh) | 2012-10-10 |
CN102722414B true CN102722414B (zh) | 2014-04-02 |
Family
ID=46948191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210160593.9A Active CN102722414B (zh) | 2012-05-22 | 2012-05-22 | 用于多根i/o 虚拟化共享***的i/o 资源管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102722414B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140258577A1 (en) * | 2013-03-11 | 2014-09-11 | Futurewei Technologies, Inc. | Wire Level Virtualization Over PCI-Express |
US9734096B2 (en) * | 2013-05-06 | 2017-08-15 | Industrial Technology Research Institute | Method and system for single root input/output virtualization virtual functions sharing on multi-hosts |
US9672167B2 (en) * | 2013-07-22 | 2017-06-06 | Futurewei Technologies, Inc. | Resource management for peripheral component interconnect-express domains |
CN103701881B (zh) * | 2013-12-18 | 2017-03-22 | 中国科学院计算技术研究所 | 一种支持i/o功能动态分配的虚拟热插拔***及其工作方法 |
KR102209525B1 (ko) * | 2014-01-06 | 2021-01-29 | 삼성전자주식회사 | 마이크로 서버, mac 주소 할당 방법 및 컴퓨터 판독가능 기록매체 |
TWI556174B (zh) * | 2014-03-05 | 2016-11-01 | 威盛電子股份有限公司 | 虛擬功能分配系統、方法及其管理主機 |
CN104123173B (zh) * | 2014-07-22 | 2017-08-25 | 华为技术有限公司 | 一种实现虚拟机间通信的方法及装置 |
CN105446433A (zh) * | 2014-08-22 | 2016-03-30 | 北京计算机技术及应用研究所 | Pci-e板卡共享箱及其实现方法 |
CN104601684A (zh) * | 2014-12-31 | 2015-05-06 | 曙光云计算技术有限公司 | 云服务器*** |
CN106033399B (zh) * | 2015-03-20 | 2020-05-15 | 中兴通讯股份有限公司 | PCIe设备和PCIe总线的管理方法及装置 |
CN106302322B (zh) * | 2015-05-19 | 2020-05-26 | 腾讯科技(深圳)有限公司 | 一种虚拟机数据流管理方法和*** |
CN105721357B (zh) | 2016-01-13 | 2019-09-03 | 华为技术有限公司 | 交换设备、***部件互连高速***及其初始化方法 |
CN107145378A (zh) * | 2016-03-01 | 2017-09-08 | 中兴通讯股份有限公司 | 一种资源管理方法和装置 |
TWI616759B (zh) * | 2016-08-10 | 2018-03-01 | 創義達科技股份有限公司 | 設備分配控制器以及設備分配方法 |
CN108958884B (zh) * | 2018-06-22 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种虚拟机管理的方法及相关装置 |
CN109190420B (zh) * | 2018-09-11 | 2020-08-25 | 网御安全技术(深圳)有限公司 | 一种服务器加解密刀片、***、及加解密方法 |
CN111158849A (zh) * | 2019-12-09 | 2020-05-15 | 中国船舶重工集团公司第七一六研究所 | 支持虚拟机共享io设备的多机计算装置及其io设备共享方法 |
CN113297124B (zh) * | 2020-04-08 | 2022-05-06 | 阿里巴巴集团控股有限公司 | 设备枚举方法、设备、***及存储介质 |
CN111522692B (zh) * | 2020-04-20 | 2023-05-30 | 浙江大学 | 一种基于虚拟机的多操作***输入及输出设备冗余保障*** |
CN112149396B (zh) * | 2020-09-29 | 2024-05-03 | 浙江中控技术股份有限公司 | 一种基于io点的信息处理方法及装置 |
CN113296884B (zh) * | 2021-02-26 | 2022-04-22 | 阿里巴巴集团控股有限公司 | 虚拟化方法、装置、电子设备、介质及资源虚拟化*** |
CN117236965A (zh) * | 2021-03-09 | 2023-12-15 | 支付宝(中国)网络技术有限公司 | 支付处理方法和*** |
CN114428757B (zh) * | 2021-12-06 | 2024-05-17 | 中国船舶集团有限公司第七一六研究所 | 一种架构可重构的计算装置及其重构方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100502370C (zh) * | 2006-07-25 | 2009-06-17 | 中山大学 | 一种在不同传输信道上的媒体传输优化***及优化方法 |
CN101419561A (zh) * | 2007-10-26 | 2009-04-29 | 中兴通讯股份有限公司 | 一种异构多核体系中的资源管理方法及*** |
-
2012
- 2012-05-22 CN CN201210160593.9A patent/CN102722414B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102722414A (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102722414B (zh) | 用于多根i/o 虚拟化共享***的i/o 资源管理方法 | |
CN102707991B (zh) | 多根i/o虚拟化共享方法和*** | |
CN102819447B (zh) | 一种用于多根共享***的直接i/o虚拟化方法和装置 | |
JP5266590B2 (ja) | 計算機システムの管理方法、計算機システム及びプログラム | |
US8386654B2 (en) | System and method for transforming PCIe SR-IOV functions to appear as legacy functions | |
CN100573481C (zh) | 可配置的PCI Express开关及其控制方法 | |
US8683110B2 (en) | I/O system and I/O control method | |
US20090113422A1 (en) | Dynamic allocation of virtual machine devices | |
US20180189109A1 (en) | Management system and management method for computer system | |
CN104285218A (zh) | 一种扩展PCIe总线域的方法和装置 | |
CN104767838B (zh) | 微服务器、分配mac地址的方法、以及计算机可读记录介质 | |
US20110029693A1 (en) | Reserving pci memory space for pci devices | |
CN103353861B (zh) | 实现分布式i/o资源池化的方法及装置 | |
CN104615572B (zh) | 热插拔处理***及方法 | |
KR20070003954A (ko) | 집적 종단점 장치와, 집적 pci 익스프레스 종단점 장치및 pci 익스프레스 통신 시스템 | |
CN105320628A (zh) | 使能单根i/o设备多根共享的适配装置、***及方法 | |
CN102722458A (zh) | 一种用于多根共享***的i/o重映射方法和装置 | |
CN105302248A (zh) | 芯片组以及服务器*** | |
US10318460B2 (en) | UMA-aware root bus selection | |
CN104021047A (zh) | 虚拟功能分配***、方法及其管理主机 | |
TWI616759B (zh) | 設備分配控制器以及設備分配方法 | |
CN109656675A (zh) | 总线设备、计算机设备及实现物理主机云存储的方法 | |
CN101779196A (zh) | Pci设备的i/o空间请求抑制方法 | |
CN100447714C (zh) | 多任务式计算机周边装置联机切换接口 | |
CN106034142B (zh) | 一种信息处理方法及服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |