System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及openstack云计算,具体提供一种openstack支持多存储后端的方法及装置。
技术介绍
1、openstack是一个开源的云管理平台软件,广泛运用在私用云场景下。通过使用openstack管理公有云、私有云的计算资源,提供虚拟机、虚拟磁盘、虚拟vpc等服务,可以提供数据中心的资源利用率,降低数据中心的管理成本。
2、虚拟磁盘管理服务(cinder),用来管理openstack集群中的虚拟磁盘资源。虚拟磁盘管理服务,提供了在线切换卷类型的服务,即允许卷从一种类型在线修改为另一种卷类型。在一些场景下,比如当前在用的存储池资源不足,且无法进行扩容的情况下,在线切换卷类型可以降低原存储池的资源压力,平衡各存储集群间的容量。
3、虚拟机管理服务(nova),用来管理openstack集群中的虚拟机资源。通过nova服务,用户可以创建、管理虚拟机。在创建虚拟机的过程中,取决于卷类型的不同,nova服务与cinder通信获取到虚拟机使用挂卷所必须的如虚拟磁盘访问的地址、虚拟磁盘的lun等等。
4、不同类型的存储,如常用的分布式存储ceph、集中式存储等,有不同的使用场景,如在强调可扩展性时,常常使用分布式存储存储海量数据;在需要高性能、且存储容量要求不高的情况下,常常使用集中式存储。在私有云环境中,常常会混搭部署多套分布式存储、多套集中式存储或者两者都部署多套。但是由于集中式存储和分布式存储的部署条件不同,集中式存储一般要求计算节点安装有hba卡并配置了光纤交换机;分布式存储则常常要求
5、在这种情况下,不同的计算节点可能不具备访问所用存储类型的能力,这就导致用户在创建虚拟机或者挂载卷时,可能因为虚拟机所调度到的节点不支持挂载某些存储的虚拟磁盘而导致失败。
技术实现思路
1、本专利技术是针对上述现有技术的不足,提供一种实用性强的openstack支持多存储后端的方法。
2、本专利技术进一步的技术任务是提供一种设计合理,安全适用的openstack支持多存储后端的装置。
3、本专利技术解决其技术问题所采用的技术方案是:
4、一种openstack支持多存储后端的方法,首先在nova_api数据库中创建一个名为compute_node_volume_type_relationship数据表,所述数据表描述卷类型和计算节点的绑定关系;
5、所述数据表的结构为:
6、字段名为id,数据类型为integer;
7、字段名为volume_type_uuid,数据类型为varchar(36);
8、字段名为compute_node_uuid,数据类型为varchar;
9、字段名为supported,数据类型为bool。
10、进一步的,在nova-api服务中提供一个新的接口,支持用户创建卷类型与计算节点的映射关系,用户传入字符串类型的卷类型uuid、字符串类型的计算节点uuid和一个布尔类型的supported字段,表明计算节点是否支持挂载拥有所述卷类型的卷;
11、新增一个支持批量的传入卷类型、计算节点的uuid和计算节点是否支持挂载的批量创建接口,用以支持计算节点和卷类型数量多的情况;
12、入参的格式为字典,以卷类型uuid为字典的键,字典的值仍为一个字典,字典的键为true或false,对应的值为以计算节点uuid为值得链表。
13、进一步的,所述新的接口中也需要校验卷类型和计算节点的uuid是否合法,校验的方法为:
14、(1)检查用户传入的uuid是否为标准的格式,若格式不合规,则校验不通过,返回异常;
15、(2)通过用户传入的卷类型的uuid,调用cinder的接口获取卷类型的详细信息,如果返回码为404,则说明卷类型不存在,检验不通过,返回异常;
16、(3)验证用户传入的计算节点的uuid是当前已经注册了的计算节点的uuid,检查时为在数据库中以uuid为查询条件,查询是否存在一个没有标记为删除状态的计算节点;
17、如果没有查询到符合条件的计算节点的信息,则校验不通过,返回异常;
18、如果以上的所有检查均合法,则用户传入的请求正常,则将卷类型和计算节点的关系记录到数据库中。
19、进一步的,支持计算节点和卷类型数量多的情况时,入参的检查方式为:
20、(1)检查用户传入得uuid是否为标准的格式,若格式不合规,则校验不通过,返回异常;
21、(2)调用cinder的卷类型的列表接口,获取到所有的卷类型的信息,若用户传入的卷类型不在cinder查询到的卷类型列表中,则校验失败,返回非法的卷类型给用户;
22、(3)校验计算节点的uuid,校验的方法为:
23、将传入的计算节点的uuid构造为子查询,并查询子查询返回的数据行数,如果子查询返回的行数少于传入的不重复的计算节点uuid数,则说明传入的uuid中有非法的计算节点,则接口直接返回异常,提醒用户传入合法的计算节点uuid;
24、如果用户传入的计算节点uuid已经配置完成,则根据传入的supported值,对数据库的记录进行更新。
25、进一步的,修改nova-scheduler中host_states结构的定义;
26、(1)增加一个支持的卷类型属性,数据类型为列表,元素为卷类型的列表;
27、(2)增加一个不支持的卷类型属性,数据类型为列表,元素为计算节点不支持卷类型的列表;
28、在计算节点的nova-compute服务中,周期性上传节点的host_states到nova-scheduler服务;
29、在异步任务中,增加逻辑为:
30、根据本节点compute_node的uuid信息,查询compute_node_volume_type_relationship数据表,并根据supported字段的值,将卷类型分为支持和不支持两个列表,填充到host_states数据接口中,发送到nova-scheduler服务,nova-scheduler服务在接收到传入的结构后,将记录在内存中,以便在之后的处理中使用。
31、进一步的,在nova-api和nova-scheduler服务的配置项中,增加一个名为default_allowed_volume_types的配置项,配置项的数据类型为以字符串为元素的列表,记录了默认允许所有计算节点挂载的卷类型的列表;
32、但是优先级低于通过api配置的卷类型和计算节点的关系记录。
33、进一步的,在nova-scheduler调度服务中,增加一个名为volumetypefilter的过滤器,通过request_spec信息、计算节点所本文档来自技高网...
【技术保护点】
1.一种OpenStack支持多存储后端的方法,其特征在于,首先在nova_api数据库中创建一个名为compute_node_volume_type_relationship数据表,所述数据表描述卷类型和计算节点的绑定关系;
2.根据权利要求1所述的一种OpenStack支持多存储后端的方法,其特征在于,在nova-api服务中提供一个新的接口,支持用户创建卷类型与计算节点的映射关系,用户传入字符串类型的卷类型UUID、字符串类型的计算节点UUID和一个布尔类型的supported字段,表明计算节点是否支持挂载拥有所述卷类型的卷;
3.根据权利要求2所述的一种OpenStack支持多存储后端的方法,其特征在于,所述新的接口中也需要校验卷类型和计算节点的UUID是否合法,校验的方法为:
4.根据权利要求3所述的一种OpenStack支持多存储后端的方法,其特征在于,支持计算节点和卷类型数量多的情况时,入参的检查方式为:
5.根据权利要求4所述的一种OpenStack支持多存储后端的方法,其特征在于,修改nova-scheduler中
6.根据权利要求5所述的一种OpenStack支持多存储后端的方法,其特征在于,在nova-api和nova-scheduler服务的配置项中,增加一个名为default_allowed_volume_types的配置项,配置项的数据类型为以字符串为元素的列表,记录了默认允许所有计算节点挂载的卷类型的列表;
7.根据权利要求6所述的一种OpenStack支持多存储后端的方法,其特征在于,在nova-scheduler调度服务中,增加一个名为VolumeTypeFilter的过滤器,通过request_spec信息、计算节点所对应的host_states信息进行筛选;
8.根据权利要求7所述的一种OpenStack支持多存储后端的方法,其特征在于,如果VolumeTypeFilter返回值为False,则说明当前传入过滤器的计算节点不能挂载request_spec中指定的卷类型,说明这个计算节点不能被使用;
9.根据权利要求8所述的一种OpenStack支持多存储后端的方法,其特征在于,针对于挂载卷的情况,对nova的API的服务逻辑进行调整,在挂载卷的时候,通过用户传入卷的UUID信息,解析出卷的卷类型UUID;
10.一种OpenStack支持多存储后端的装置,其特征在于,包括:至少一个存储器和至少一个处理器;
...【技术特征摘要】
1.一种openstack支持多存储后端的方法,其特征在于,首先在nova_api数据库中创建一个名为compute_node_volume_type_relationship数据表,所述数据表描述卷类型和计算节点的绑定关系;
2.根据权利要求1所述的一种openstack支持多存储后端的方法,其特征在于,在nova-api服务中提供一个新的接口,支持用户创建卷类型与计算节点的映射关系,用户传入字符串类型的卷类型uuid、字符串类型的计算节点uuid和一个布尔类型的supported字段,表明计算节点是否支持挂载拥有所述卷类型的卷;
3.根据权利要求2所述的一种openstack支持多存储后端的方法,其特征在于,所述新的接口中也需要校验卷类型和计算节点的uuid是否合法,校验的方法为:
4.根据权利要求3所述的一种openstack支持多存储后端的方法,其特征在于,支持计算节点和卷类型数量多的情况时,入参的检查方式为:
5.根据权利要求4所述的一种openstack支持多存储后端的方法,其特征在于,修改nova-scheduler中host_states结构的定义;
6.根据权利要求5所述的一种openstack支持多存储后端的方法,...
【专利技术属性】
技术研发人员:申嘉童,宋伟,宋洪圆,孙兴艳,
申请(专利权)人:浪潮云信息技术股份公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。