著录项信息
专利名称 | 一种支持I/O功能动态分配的虚拟热插拔系统及其工作方法 |
申请号 | CN201310697592.2 | 申请日期 | 2013-12-18 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-04-02 | 公开/公告号 | CN103701881A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/08 | IPC分类号 | H;0;4;L;2;9;/;0;8;;;G;0;6;F;1;3;/;2;4查看分类表>
|
申请人 | 中国科学院计算技术研究所 | 申请人地址 | 北京市海淀区中关村科学院南路6号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国科学院计算技术研究所 | 当前权利人 | 中国科学院计算技术研究所 |
发明人 | 曹政;臧大伟;王展;刘小丽;安学军;张佩珩 |
代理机构 | 北京律诚同业知识产权代理有限公司 | 代理人 | 祁建国;梁挥 |
摘要
本发明公开了一种支持I/O功能动态分配的虚拟热插拔系统及其工作方法,该系统包括:多根交换机(160),与I/O端点设备(170)、主控服务器(110)、虚拟热插拔控制器(180)、从属服务器(120)连接;该I/O端点设备,具有I/O功能;该主控服务器,包括多根交换机控制模块(140)和虚拟热插拔控制器控制模块(150),可配置该多根交换机,并控制该虚拟热插拔控制器进行该I/O功能分配或回收的动作;该虚拟热插拔控制器,用于向该从属服务器发出I/O功能的分配或回收的通知;该从属服务器,包括虚拟热插拔驱动模块(130),用于识别该通知,并为该I/O功能在该从属服务器的操作系统中分配或回收资源。由此,该系统能够实现在线I/O功能的分配和回收,在不停机情况下进行I/O功能虚拟热插拔。
一种支持I/O功能动态分配的虚拟热插拔系统及其工作方法\n技术领域\n[0001] 本发明涉及计算机I/O虚拟化领域,涉及多个服务器间I/O功能动态共享技术,尤其涉及一种支持I/O功能动态分配的虚拟热插拔系统及其工作方法。\n背景技术\n[0002] 在现在的数据中心中广泛采用虚拟化技术进行服务器的整合,它将多台服务器上的系统整合为一台物理服务器上运行的多个虚拟机,不仅提高了资源的利用率而且降低了管理的难度。\n[0003] 为了提高虚拟机系统的I/O性能,特别是网络系统的性能,通常采用直通方式将PCI设备直接分配给虚拟机独占使用。对于运行多个虚拟机的物理服务器,如果直接为其安装多个PCI板卡,不仅增加硬件成本,并且降低了I/O资源的利用率。因此工业界设计了单根虚拟化(SR-IOV)设备和多根虚拟化(MR-IOV)设备。\n[0004] 其中单根虚拟化设备是面向于单服务器内共享的,它将单个物理PCI功能虚拟为若干虚拟PCI功能,供本操作系统内的虚拟机使用。通过PCI设备在硬件层被多个虚拟机共享,来提高资源的利用率。\n[0005] 而多根虚拟化设备可以连接多个根联合体,面向于多服务器共享,它同时拥有多个PCI物理功能,每个物理功能又可以虚拟出多个虚拟PCI功能。通过一定的配置,可以分别将虚功能分配给不同的物理服务器,这种方式可以实现更大程度上对设备共享。\n[0006] 当前的多根虚拟化系统中,存在一台或多台主控服务器,负责系统I/O设备资源的管理,其它服务器则作为从属服务器,仅使用分配给它们的I/O设备(可能是虚拟I/O设备)。\n多根虚拟化系统的服务器和设备间由一个多根交换机互连。多根交换机可以通过层级互连构成网络,该网络的最下游端口可挂载单根虚拟化设备、多根虚拟化设备、标准PCI设备等端点设备。主控服务器通过对多根虚拟化交换机的配置,即实现挂载设备(包括物理功能和虚功能)在从属服务器间的分配。但是这种分配属于静态分配,即分配仅在相关服务器重新启动后生效,这种方式中断了应用程序的正常运行。\n[0007] 综上,当前的多根虚拟化系统亟需实现一种在线I/O功能分配方法,实现不停机情况下的I/O功能虚拟热插拔。具体的说,即:主控服务器对多根交换机配置之后,能够通知对应的从属服务器,从属服务器能在不重新启动的情况下,在其操作系统中实现对应I/O功能的发现和资源分配。\n发明内容\n[0008] 为了解决上述问题,本发明的目的在于提供一种面向多根虚拟化系统的、支持I/O功能动态分配的支持I/O功能动态分配的虚拟热插拔系统及其工作方法,其中I/O功能是指PCI(包括PCI,PCIx,PCIe)端点设备的虚功能或者物理功能,该支持I/O功能动态分配的虚拟热插拔系统能在服务器不停机情况下,实现I/O功能在物理服务器间的动态分配或者回收,且不涉及对传统多根交换机内部结构的修改,即可以兼容已有系统。为简洁起见,本发明中出现的I/O功能,无特殊说明情况下,指PCI端点设备中的虚功能或者物理功能。\n[0009] 为实现上述目的,本发明所提出的支持I/O功能动态分配的虚拟热插拔系统,其特征在于,该系统包括:\n[0010] 多根交换机,与I/O端点设备、主控服务器、虚拟热插拔控制器、从属服务器连接;\n[0011] 该I/O端点设备,具有I/O功能;\n[0012] 该主控服务器,包括多根交换机控制模块和虚拟热插拔控制器控制模块,该多根交换机控制模块用于配置该多根交换机,并将该I/O功能置入或移出该从属服务器的PCI层次结构,该虚拟热插拔控制器控制模块用于向该虚拟热插拔控制器发出进行I/O功能分配或回收的命令;\n[0013] 该虚拟热插拔控制器,用于接收该命令,并向该从属服务器发出I/O功能的分配或回收的通知;\n[0014] 该从属服务器,包括虚拟热插拔驱动模块,该虚拟热插拔驱动模块用于识别该通知,以及负责为该I/O功能在该从属服务器的操作系统中分配或回收资源。\n[0015] 本发明的支持I/O功能动态分配的虚拟热插拔系统,其特征在于,[0016] 该虚拟热插拔控制器由多个虚拟热插拔虚功能设备以及控制逻辑组成,其中,该虚拟热插拔虚功能设备是该虚拟热插拔控制器自身的PCI虚功能,每个该PCI虚功能可被独立分配给该主控服务器和该从属服务器,每个该虚拟热插拔虚功能设备中还包括有一个虚拟热插拔标示寄存器,该控制逻辑用于解析并执行该主控服务器发出的命令,并与该从属服务器通信,该虚拟热插拔控制器通过将该虚拟热插拔虚功能设备分配给该主控服务器和该从属服务器,使该虚拟热插拔控制器被共享。\n[0017] 本发明的支持I/O功能动态分配的虚拟热插拔系统,其特征在于,[0018] 该虚拟热插拔驱动模块可以配置成轮询模式和中断模式,如果配置成轮询模式,则该虚拟热插拔驱动模块每隔一段时间查询一次对应该从属服务器的虚拟热插拔虚功能设备中定义的该虚拟热插拔标示寄存器,根据该寄存器的值来判断是进行I/O功能的分配还是回收;如果配置成中断模式,则根据中断值来判断是进行I/O功能的分配还是回收。\n[0019] 本发明还涉及一种支持I/O功能动态分配的虚拟热插拔系统的工作方法,其特征在于,该工作方法包括系统初始化方法和系统工作方法,其中该系统初始化方法包括下列步骤:\n[0020] 步骤S310,启动该主控服务器,在该主控服务器上运行该多根交换机控制模块和该虚拟热插拔控制器控制模块,\n[0021] 步骤S320,该多根交换机控制模块对该多根交换机进行配置,并根据所配置的信息,将该虚拟热插拔控制器中的该虚拟热插拔虚功能设备分配给该主控服务器和该从属服务器,\n[0022] 步骤S330,启动该从属服务器,在该从属服务器上加载该虚拟热插拔驱动模块;\n[0023] 该系统工作方法包括下列步骤:\n[0024] 步骤S410,该虚拟热插拔控制器控制模块通知该虚拟热插拔控制器进行I/O功能分配或回收,该多根交换机控制模块对该多根交换机进行配置,将待分配或回收的I/O功能置入或移出该从属服务器的PCI层次结构;\n[0025] 步骤S420,该虚拟热插拔控制器通知该从属服务器,该虚拟热插拔驱动模块通过选择配置成轮询模式或中断模式来为该I/O功能在该从属服务器的操作系统中分配或回收资源。\n[0026] 本发明的支持I/O功能动态分配的虚拟热插拔系统的工作方法,其特征在于,在步骤S420中,如果该虚拟热插拔驱动模块选择配置成该轮询模式,则执行如下步骤:\n[0027] 步骤S430,该虚拟热插拔驱动模块定时查询该虚拟热插拔控制器中的对应该从属服务器的虚拟热插拔标示寄存器,根据该虚拟热插拔标示寄存器的值判断进行虚拟热插入还是虚拟热拔出,如果进行虚拟热插入,则询问待分配I/O功能的编号,然后为该待分配I/O功能在操作系统中分配相应的内存空间,将其加入到设备列表中,并加载驱动进行使用;如果进行该虚拟热拔出,则询问待回收I/O功能的编号,然后停止使用该待I/O功能,卸载该I/O功能的驱动程序,释放在操作系统中的内存空间,完成该I/O功能的回收。\n[0028] 本发明的支持I/O功能动态分配的虚拟热插拔系统的工作方法,其特征在于,在步骤S420中,如果该虚拟热插拔驱动模块选择配置成该中断模式,则执行如下步骤:\n[0029] 步骤S440,当该虚拟热插拔驱动模块收到该虚拟热插拔控制器发出的虚拟热插拔中断,根据该中断的中断值判断进行虚拟热插入还是虚拟热拔出,如果进行虚拟热插入,则询问待分配I/O功能的编号,然后为该待分配I/O功能在操作系统中分配相应的内存空间,将其加入到设备列表中;如果进行虚拟热拔出,则询问待回收I/O功能的编号,然后停止使用该I/O功能,卸载其驱动程序,释放在操作系统中的内存空间,完成该I/O功能的回收。\n[0030] 本发明的支持I/O功能动态分配的虚拟热插拔系统的工作方法,其特征在于,该I/O功能分配的方法包括:\n[0031] 步骤S510,配置该虚拟热插拔控制器和该虚拟热插拔驱动模块为相同的模式;\n[0032] 步骤S520,该主控服务器中的该虚拟热插拔控制器控制模块向该虚拟热插拔控制器发出该I/O功能分配的命令;\n[0033] 步骤S530,该虚拟热插拔控制器对命令进行判断,并对命令进行解析执行,根据配置模式通知该从属服务器;\n[0034] 步骤S540,该从属服务器收到通知后向该虚拟热插拔控制器查询命令的具体信息;\n[0035] 步骤S550,该从属服务器中的该虚拟热插拔驱动模块为该I/O功能分配操作系统资源;\n[0036] 步骤S560,为新分配的该I/O功能加载驱动或者分配给虚拟机使用。\n[0037] 本发明的支持I/O功能动态分配的虚拟热插拔系统的工作方法,其特征在于,该I/O功能回收的方法包括:\n[0038] 步骤S610,配置该虚拟热插拔控制器和该虚拟热插拔驱动模块为相同的模式;\n[0039] 步骤S620,该主控服务器中的该虚拟热插拔控制器控制模块向该虚拟热插拔控制器发出该I/O功能回收的命令;\n[0040] 步骤S630,该虚拟热插拔控制器对命令进行合法性判断并对命令进行解析执行,根据配置模式通知该从属服务器;\n[0041] 步骤S640,该从属服务器收到通知后向该虚拟热插拔控制器查询命令的具体信息;\n[0042] 步骤S650,该从属服务器中的该虚拟热插拔驱动模块卸载相应的该I/O功能的驱动程序,并停止该I/O功能的运行,释放其在该从属服务器操作系统中占有的资源,完成后通知该虚拟热插拔控制器资源释放完毕;\n[0043] 步骤S660,该虚拟热插拔控制器将完成的信息通知该主控服务器,该多根交换机控制模块对该多根交换机重新配置。\n[0044] 因此,在本发明中,主控服务器对多根交换机配置完成后,能够通知对应的从属服务器,从属服务器能在不重新启动的情况下,在其操作系统中实现对应I/O功能的发现和资源分配,即本发明能够实现在线I/O功能的分配和回收,在实现不停机情况下实现I/O功能虚拟热插拔。\n附图说明\n[0045] 图1是本发明实施例的虚拟热插拔系统的示意图;\n[0046] 图2是本发明实施例的虚拟热插拔控制器示意图;\n[0047] 图3是本发明实施例的系统初始化方法流程图;\n[0048] 图4是本发明实施例的系统工作方法流程图;\n[0049] 图5是本发明实施例的I/O功能动态分配方法流程图;\n[0050] 图6是本发明实施例的I/O功能动态回收方法流程图。\n[0051] 附图标记说明\n[0052] 110:主控服务器;\n[0053] 120:从属服务器;\n[0054] 130:虚拟热插拔驱动模块;\n[0055] 140:多根交换机控制模块;\n[0056] 150:虚拟热插拔控制器控制模块;\n[0057] 160:多根交换机;\n[0058] 170:I/O端点设备\n[0059] 180:虚拟热插拔控制器。\n具体实施方式\n[0060] 本发明设计了一种面向多根虚拟化系统中,在多服务器间动态分配、回收I/O功能的虚拟热插拔方法和装置,并根据此方法设计了相应的硬件和模块来实现这种方法。以下将结合附图对本发明的具体实施例进行详细描述。\n[0061] 在该实施例中,本发明的支持I/O功能动态分配的虚拟热插拔系统如图1所示。110主控服务器和120从属服务器与160多根交换机相连,I/O端点设备和180虚拟热插拔控制器作为设备连接在160多根交换机上。其中140多根交换机控制模块和150虚拟热插拔控制器控制模块运行于110主控服务器上;130虚拟热插拔驱动模块运行于120从属服务器中。\n[0062] 运行于从属服务器的130虚拟热插拔驱动模块与180虚拟热插拔控制器进行交互,并负责120从属服务器中资源的分配和回收操作,它可以配置成轮询和中断两种模式。如果配置成轮询模式,则它每隔一段时间查询一次180虚拟热插拔控制器中的虚拟热插拔标示寄存器,根据该寄存器的值来判断是分配请求还是回收请求;如果配置成中断模式,则根据中断值来判断是分配请求还是回收请求。\n[0063] 180虚拟热插拔控制器是这个系统的通信桥梁,它主要由若干虚拟热插拔虚功能设备以及控制逻辑组成,如图2所示,虚拟热插拔控制器中的210虚拟热插拔虚功能设备,是虚拟热插拔控制器自身的PCI虚功能,每个虚功能可被独立分配给服务器;虚拟热插拔控制器中的220控制逻辑,对主控服务器发出的命令进行解析执行,并与从属服务器进行交互通信。\n[0064] 包括虚拟热插拔系统的工作方法,该方法包括系统初始化方法和系统工作方法。\n[0065] 如图3所示,系统初始化方法包括下列步骤:\n[0066] 步骤S310:首先启动主控服务器,在主控服务器上运行多根交换机控制模块和虚拟热插拔控制器控制模块;\n[0067] 步骤S320:多根交换机控制模块对多根交换机进行配置,并根据配置信息,将虚拟热插拔控制器中的虚拟热插拔虚功能设备分别分配给其他的从属服务器;\n[0068] 步骤S330:启动从属服务器,扫描到虚拟热插拔控制器的一个功能,在该从属服务器上加载虚拟热插拔驱动模块。\n[0069] 其中系统工作方法包括下列步骤:\n[0070] 步骤S410:有I/O功能需要分配或者回收时,由运行于主控服务器的虚拟热插拔控制器控制模块将从属服务器号、挂载总线号、功能号等信息写入虚拟热插拔控制器,通知虚拟热插拔控制器进行功能分配或者回收的动作。同时多根交换机控制模块对多根交换机进行配置,将待分配或回收的物理功能或虚拟功能,置入或移出从属服务器系统的PCI层次结构中;\n[0071] 步骤S420:当虚拟热插拔控制器收到分配或者回收功能的命令后,通知对应的服务器,如果服务器上运行的虚拟热插拔驱动模块以轮询模式获取该通知,跳转至步骤530,如果服务器上运行的虚拟热插拔驱动模块以中断模式获取该通知,跳转至步骤540;\n[0072] 步骤S430:虚拟热插拔驱动模块定时查询虚拟热插拔控制器上对应该服务器的虚拟热插拔指示寄存器,如果检测到虚拟热插拔标志位置位,则根据标志位的位置判断是虚拟热插入动作还是虚拟热拔出动作。如果是虚拟热插入动作,则虚拟热插拔驱动模块向虚拟热插拔控制器询问待分配的I/O功能的编号,然后为待分配的I/O功能在操作系统中分配相应的内存空间等资源,将其加入到设备列表中,并加载驱动进行使用;如果是虚拟热拔出动作,则虚拟热插拔驱动模块向虚拟热插拔控制器询问待回收的I/O功能的编号,然后停止使用待回收的I/O功能,卸载其驱动程序,释放在操作系统中的内存空间等资源,完成功能的回收。\n[0073] 步骤S440:当虚拟热插拔驱动模块收到虚拟热插拔控制器发出的虚拟热插拔中断,根据中断值判断是虚拟热插入动作还是虚拟热拔出动作。如果是虚拟热插入动作,则虚拟热插拔驱动模块向虚拟热插拔控制器询问待分配I/O功能的编号,然后为待分配的I/O功能在操作系统中分配相应的内存空间等资源,将其加入到设备列表中;如果是虚拟热拔出动作,则虚拟热插拔驱动模块向虚拟热插拔控制器询问待回收的I/O功能的编号,然后停止使用该待回收的I/O功能,释放在操作系统中的内存空间等资源,完成功能的回收。\n[0074] 由于I/O功能的分配和回收需要不同的操作,因此需要为其设计不同的机制和方法,因此本发明给出步骤S430和步骤S440中I/O功能分配和回收的方法。其中图5展示出了根据本发明实施例的I/O功能动态分配示意图,图6展示了根据本发明实施例的I/O功能动态回收示意图。\n[0075] 如图5所示,本发明提供的I/O功能的动态分配的方法包括:\n[0076] 步骤S510:通过主控服务器对虚拟热插拔控制器进行配置,从轮询通知和中断通知中选择一种,作为通知从属服务器的方式;同时配置运行于从属服务器上的虚拟热插拔驱动模块为相应的轮询或中断方式。\n[0077] 步骤S520:主控服务器中的虚拟热插拔控制器控制模块向虚拟热插拔控制器发出I/O功能分配的命令,同时多根交换机控制模块对多根交换机进行重新配置,将要分配的功能增加到对应从属服务器的PCI层次结构中;\n[0078] 步骤S530:虚拟热插拔控制器对命令进行合法性判断,并对命令进行解析执行,根据配置模式通知从属服务器。\n[0079] 步骤S540:从属服务器收到通知后向虚拟热插拔控制器查询命令的具体信息,包括待分配的I/O功能编号等信息。\n[0080] 步骤S550:从属服务器中的虚拟热插拔驱动模块为I/O功能分配操作系统资源,包括内存空间、中断等,至此I/O功能被操作系统正确识别。\n[0081] 步骤S560:根据不同的用途为待分配的I/O功能加载驱动或者分配给虚拟机使用,完成整个I/O功能分配的流程。\n[0082] I/O功能动态回收的机制和方法与分配有较大的差异,如图6所示,本发明提供的I/O功能的动态回收的方法包括:\n[0083] 步骤S610:通过主控服务器对虚拟热插拔控制器进行配置,从轮询通知和中断通知中选择一种,作为通知从属服务器的方式;同时配置运行于从属服务器上的虚拟热插拔驱动模块为相同的方式。\n[0084] 步骤S620:主控服务器中的虚拟热插拔控制器控制模块向虚拟热插拔控制器发出I/O功能回收的命令。\n[0085] 步骤S630:虚拟热插拔控制器对命令进行合法性判断并对命令进行解析执行,根据配置模式通知从属服务器。\n[0086] 步骤S640:从属服务器收到通知后向虚拟热插拔控制器查询命令的具体信息,包括待回收的I/O功能编号等信息。\n[0087] 步骤S650:从属服务器中的虚拟热插拔驱动模块会卸载相应的I/O功能的驱动模块,并停止I/O功能的运行,释放其中从属服务器操作系统中占有的资源,完成后通知虚拟热插拔控制器资源释放完毕。\n[0088] 步骤S660:虚拟热插拔控制器将完成的信息通知主控服务器,多根交换机控制模块对多根交换机重新配置,将回收的I/O功能从从属服务器的PCI层次结构中移除。\n[0089] 以上的所有描述都是以服务器为对象进行,但是本发明不只适用于服务器系统,而适用与一切与之类似的计算机系统。同时,本领域技术人员应当理解,对于上述本发明所提出的虚拟热插拔系统及其工作方法还可以在不脱离本发明内容的基础上做出各种改进。\n因此,本发明的保护范围应当由所附的权利要求书的内容确定。
法律信息
- 2017-03-22
- 2014-04-30
实质审查的生效
IPC(主分类): H04L 29/08
专利申请号: 201310697592.2
申请日: 2013.12.18
- 2014-04-02
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-01-13
|
2009-08-20
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |