本发明涉及云计算,具体为一种云管平台割接gpu节点的方法。
背景技术:
1、随着全球信息化的普及应用及人工智能领域的发展,人们对于gpu设备的需求急剧增长,各大公有云及私有云厂商推出了各类的gpu云服务器,用于支撑客户在深度学习训练、科学计算、图形图像处理、视频编解码等高性能计算和专业图像处理等场景的需求。
2、现有技术中,当前以openstack为代表的开源云计算虚拟化平台对于gpu设备的管理存在两种方式,一种是通过计算服务nova管理直通gpu和vgpu设备,另一种是通过加速设备管理服务cyborg管理直通gpu和vgpu设备。首先,由于cyborg组件在queens版本才在openstack社区孵化,故对于queens版本前部署的openstack云平台均使用nova组件管理gpu设备。由于nova主要的功能是云平台提供计算服务,故对于gpu设备的支持较为单一,且支持的加速设备类型有限。随着人们对于云平台性能要求的不断提升以及各类硬件加速设备的发展,nova组件对于gpu等硬件加速设备支持不够完善的劣势愈发凸显,催生了硬件加速组件cyborg的诞生及发展。
3、但是,由于cyborg孵化及完善的时间较晚,对于大多数云厂商来说,已经部署交付的云平台仍旧使用nova组件管理gpu加速设备,为了使存量环境更好的管理加速设备,满足租户日益增长的需求,如何在不影响平台业务的情况下平稳快速的将gpu设备割接到cyborg组件管理,已经成为当前亟待解决的问题。
技术实现思路
1、本发明的目的在于提供一种云管平台割接gpu节点的方法,以解决上述背景技术中提出的问题。
2、为实现上述目的,本发明提供如下技术方案:一种云管平台割接gpu节点的方法,所述方法包括以下步骤:
3、通过openstack-helm完成对nova组件的升级;
4、通过openstack-helm完成对cyborg组件的部署;
5、读取配置中执行gpu割接的标识,执行gpu割接job;
6、读取配置中执行gpu割接的标识,执行gpu割接结果验证job。
7、优选的,gpu割接job包含下面模块:
8、客户端模块,用于初始化割接时所需的nova、placement、cyborg客户端,并封装所需api接口;
9、数据库模块,用于初始化nova、nova-api、placement、cyborg数据库,并封装所需数据库增、删、改、查接口;
10、pgpu割接模块,用于实现云平台内存量直通gpu节点割接为cyborg管理相关工作;
11、vgpu割接模块,用于实现云平台内存量vgpu节点割接为cyborg管理相关工作。
12、优选的,客户端模块中,定义了客户端基类,并在基类中定义get、post、patch、delete方法用于封装restful api对应get、post、patch、delete请求;定义nova、placement、cyborg客户端对应的类,并继承基类,并在各自类中封装割接时客户端所需要的api接口。
13、优选的,数据库模块中,定义了数据库基类,并在基类中定义connect、close、commit、rollback、execute方法用于封装对数据库的基本操作;定义nova、nova-api、placement、cyborg数据库对应的类,并继承基类,并在各自类中封装割接时所需要的对数据库增、删、改、查的操作。
14、优选的,pgpu割接模块,通过nova数据库类封装的接口根据nova库pci_devices表获取环境中虚机对应直通gpu信息,并根据nova库instances表补充虚机节点信息,根据nova库instance_extra表补充flavor信息,同时根据pci_requests获取alias_name、product_id、pgpu_number生成dp_name;
15、获取基本信息后,通过nova数据库类封装的接口依次更新nova库instance_extra表的flavor、pci_requests,nova库pci_devices表status、instance_uuid;通过nova_api数据库类封装的接口依次更新nova_api库request_specs表spec,nova_api库flavor_extra_specs表key、value;通过placement数据库类封装的接口更新placement库allocations表新增直通gpu虚机资源记录;最后通过cyborg客户端类封装的接口根据dp_name创建arq并根据hostname、instance_uuid、arq_uuids、rp_uuids绑定arq,完成直通gpu节点割接。
16、优选的,vgpu割接模块,通过placement数据库类封装的接口根据placement库allocations表及resource_providers表获取resource_class_id是10的记录,即获取了挂载vgpu的consumer及resource_provider信息,根据placement库inventories表及resource_providers表获取resource_class_id是10的记录,即所有vgpu的resource_provider信息,根据placement库traits表及resource_provider_traits表获取指定resource_provider的trait_name,根据三个数据构造vgpu虚机及resource_provider相关信息的映射关系;并根据nova库instances表补充虚机节点信息,根据nova库instance_extra表补充flavor信息,通过trait_name生成dp_name;
17、获取基本信息后,通过nova数据库类封装的接口依次更新nova库instance_extra表的flavor、pci_requests,通过nova_api数据库类封装的接口依次更新nova_api库request_specs表spec,nova_api库flavor_extra_specs表key、value;通过placement数据库类封装的接口更新placement库allocations表中vgpu资源的resourceprovideruuid为cyborg创建的;通过cyborg客户端类封装的接口根据dp_name及trait_name创建device_profile,然后根据dp_name创建arq;最后根据libvirt接口获取vgpu虚机xml,拿到mdev设备uuid,通过cyborg数据库类封装的接口更新cyborg库attach_handles表uuid和in_use字段,并更新cyborg库extended_accelerator_requests表中hostname、device_rp_uuid、attach_handle_id、instance_uuid、state字段,实现arq的绑定,最终完成vgpu节点的割接工作。
18、优选的,gpu割接结果验证job包含下面模块:
19、数据库信息校验模块,用于校验割接后直通gpu虚拟机及vgpu虚拟机在cyborg数据库及placement数据库中的数据一致性;
20、功能验证模块,用于在环境允许的条件下使用割接后的虚拟机规格创建测试直通gpu虚拟机及vgpu虚拟机,验证gpu云服务器基本功能可用性。
21、与现有技术相比,本发明的有益效果是:
22、本发明提出的云管平台割接gpu节点的方法,1、在不影响租户业务的前提下完成云管平台存量gpu节点由nova组件管理割接为由cyborg组件管理;割接完成后,存量gpu节点由cyborg组件管理,具备cyborg管理的加速设备的全部能力,相比nova管理的gpu设备,cyborg纳管gpu节点后支持通过api获取gpu资源使用量;同时,cyborg提供了gpu加速设备的全生命周期管理的功能,包括上报、注册、监控和移除。简化了gpu加速设备的管理方式,支持在不中断运行工作负载的情况下添加、删除或更新设备;割接完成后,云管平台将使用cyborg管理加速设备,支持fpga,gpu,arm soc,nvme ssd,ccix based caches等一系列硬件加速设备及dpdk/spdk,pmem软件加速,大幅提升云平台的适用性。
1.一种云管平台割接gpu节点的方法,其特征在于:所述方法包括以下步骤:
2.根据权利要求1所述的一种云管平台割接gpu节点的方法,其特征在于:gpu割接job包含下面模块:
3.根据权利要求2所述的一种云管平台割接gpu节点的方法,其特征在于:客户端模块中,定义了客户端基类,并在基类中定义get、post、patch、delete方法用于封装restfulapi对应get、post、patch、delete请求;定义nova、placement、cyborg客户端对应的类,并继承基类,并在各自类中封装割接时客户端所需要的api接口。
4.根据权利要求2所述的一种云管平台割接gpu节点的方法,其特征在于:数据库模块中,定义了数据库基类,并在基类中定义connect、close、commit、rollback、execute方法用于封装对数据库的基本操作;定义nova、nova-api、placement、cyborg数据库对应的类,并继承基类,并在各自类中封装割接时所需要的对数据库增、删、改、查的操作。
5.根据权利要求2所述的一种云管平台割接gpu节点的方法,其特征在于:pgpu割接模块,通过nova数据库类封装的接口根据nova库pci_devices表获取环境中虚机对应直通gpu信息,并根据nova库instances表补充虚机节点信息,根据nova库instance_extra表补充flavor信息,同时根据pci_requests获取alias_name、product_id、pgpu_number生成dp_name;
6.根据权利要求2所述的一种云管平台割接gpu节点的方法,其特征在于:vgpu割接模块,通过placement数据库类封装的接口根据placement库allocations表及resource_providers表获取resource_class_id是10的记录,即获取了挂载vgpu的consumer及resource_provider信息,根据placement库inventories表及resource_providers表获取resource_class_id是10的记录,即所有vgpu的resource_provider信息,根据placement库traits表及resource_provider_traits表获取指定resource_provider的trait_name,根据三个数据构造vgpu虚机及resource_provider相关信息的映射关系;并根据nova库instances表补充虚机节点信息,根据nova库instance_extra表补充flavor信息,通过trait_name生成dp_name;
7.根据权利要求2所述的一种云管平台割接gpu节点的方法,其特征在于:gpu割接结果验证job包含下面模块: