本发明涉及存储资源分配技术领域,具体涉及一种存储资源分组方法、系统、终端及存储介质。
背景技术:
iscsi主要是通过过tcp/ip的技术,将储存设备(rbd)端透过iscsitarget(iscsi目标)功能,做成可以提供磁盘的服务器端,再透过iscsiinitiator(iscsi初始化用户)功能,做成能够挂载使用iscsitarget的客户端,如此便能透过iscsi协议来进行磁盘的应用了。
客户机可通过以上途径与tgt建立连接访问底层的librbd(librbd是ceph提供块存储的库),实现对块存储的操作,一个target上可以映射多个块设备,同时一个tgt上可以创建多个target,客户机可以连接tgt上其中一个或多个target分别进行访问,iscsitarget均可将本地磁盘映射为一个块设备为iscsiinitiator提供硬盘。
在存储集群规模很大时,在使用iscsi方式使用块设备时,会在存储集群所有节点提供块设备导出服务,对块设备性能存在影响,且当上层应用使用时会因为提供路径太多导致客户端使用困难。
技术实现要素:
针对现有技术的上述不足,本发明提供一种存储资源分组方法、系统、终端及存储介质,以解决上述技术问题。
第一方面,本发明提供一种存储资源分组方法,包括:
设置分组的组内节点数量;
接收到客户端发送的分组创建请求之后,在默认存储池查询当前节点使用信息;
根据所述使用信息判断是否存在满足所述组内节点数量的空闲节点:
若是,则选出所述组内节点数量的空闲节点建立分组,并将分组信息作为目标节点组信息输出;
若否,则查询现有节点组中连接客户端最少的现有节点组,并将查询到的现有节点组信息作为目标节点组信息输出。
进一步的,所述方法还包括:
在所述目标节点组中创建存储资源;
将发送请求的客户端使用的块设备映射为所述目标节点组的卷。
进一步的,所述方法还包括:
获取发送请求的客户端的使用策略;
若所述使用策略为多路径方式,则将所述目标节点组信息返回至所述发送请求的客户端,所述目标节点组信息包括节点ip,目标节点组id和卷id;
若所述使用策略为虚拟ip高可用方式,则根据所述目标节点组创建轻量级集群组并为所述轻量级集群组配置虚拟ip,将所述虚拟ip和所述目标节点组信息返回至所述发送请求的客户端。
进一步的,所述方法还包括:
将所述目标节点组信息以键值对的形式保存至默认存储池中对象的记录数据库中。
第二方面,本发明提供一种存储资源分组系统,包括:
数量设置单元,配置用于设置分组的组内节点数量;
节点查询单元,配置用于接收到客户端发送的分组创建请求之后,在默认存储池查询当前节点使用信息;
空闲判断单元,配置用于根据所述使用信息判断是否存在满足所述组内节点数量的空闲节点;
空闲分组单元,配置用于若存在满足所述组内节点数量的空闲节点,则选出所述组内节点数量的空闲节点建立分组,并将分组信息作为目标节点组信息输出;
现有查询单元,配置用于若不存在满足所述组内节点数量的空闲节点,则查询现有节点组中连接客户端最少的现有节点组,并将查询到的现有节点组信息作为目标节点组信息输出。
进一步的,所述系统还包括:
资源创建单元,配置用于在所述目标节点组中创建存储资源;
映射更新单元,配置用于将发送请求的客户端使用的块设备映射为所述目标节点组的卷。
进一步的,所述系统还包括:
策略获取单元,配置用于获取发送请求的客户端的使用策略;
第一处理单元,配置用于若所述使用策略为多路径方式,则将所述目标节点组信息返回至所述发送请求的客户端,所述目标节点组信息包括节点ip,目标节点组id和卷id;
第二处理单元,配置用于若所述使用策略为虚拟ip高可用方式,则根据所述目标节点组创建轻量级集群组并为所述轻量级集群组配置虚拟ip,将所述虚拟ip和所述目标节点组信息返回至所述发送请求的客户端。
进一步的,所述系统还包括:
信息保存单元,配置用于将所述目标节点组信息以键值对的形式保存至默认存储池中对象的记录数据库中。
第三方面,提供一种终端,包括:
处理器、存储器,其中,
该存储器用于存储计算机程序,
该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。
第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本发明的有益效果在于,
本发明提供的存储资源分组方法、系统、终端及存储介质,以组的形式对tgt服务进行管理与使用,在大规模集群场景下极大程度的减少了target和块设备映射的创建,节约了集群系统资源。同时减少了块设备导出的冗余路径,减少客户端使用的压力。根据目前负载情况自动规划tgt组,保持业务压力均衡,保证了核心业务的稳定性,也迎合了当前快速存储、高效存储的理念。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的系统的示意性框图。
图3为本发明实施例提供的一种终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
下面对本发明中出现的关键术语进行解释。
thin-provisionimage精简卷
rados全称reliableautonomicdistributedobjectstore分布式对象存储
rbdradosblockdevicerados块设备
tgtiscsitarget储存设备端,存放磁盘或raid的设备
图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种存储资源分组系统。
如图1所示,该方法包括:
步骤110,设置分组的组内节点数量;
步骤120,接收到客户端发送的分组创建请求之后,在默认存储池查询当前节点使用信息;
步骤130,根据所述使用信息判断是否存在满足所述组内节点数量的空闲节点:
步骤140,若是,则选出所述组内节点数量的空闲节点建立分组,并将分组信息作为目标节点组信息输出;
步骤150,若否,则查询现有节点组中连接客户端最少的现有节点组,并将查询到的现有节点组信息作为目标节点组信息输出。
具体的,所述存储资源分组方法包括:
首先判断客户端使用策略是多路径方式或是使用虚拟ip保证高可用
多路径方式:
(1)当客户端发出创建分组使用卷的请求,在默认存储池中查询目前已经链接的客户端和正在使用的节点。
(2)判断节点列表中是否有足够的节点提供给客户端使用(8个);若存在足够的未使用节点,选取8个还未使用的节点,并将节点ip记录下来;若不存在足够的节点则查询所有节点组中已连接客户端最少的一组节点,并将节点ip记录下来
(3)在(2)中选出的节点中创建分组,并将客户端需要使用的块设备映射为该组的卷(lun)
(4)将节点ip,节点组id(target_id)和卷id(lun_id)记录到默认存储池中对象的omap中
(5)给客户端返回节点ip、节点组id和卷id
虚拟ip高可用方式
(1)当客户端发出创建分组使用卷的请求,在默认存储池中查询目前已经链接的客户端和正在使用的节点。
(2)判断节点列表中是否有足够的节点提供给客户端使用(8个);若存在足够的未使用节点,选取8个还未使用的节点,并将节点ip记录下来;若不存在足够的节点则查询所有节点组中已连接客户端最少的一组节点,并将节点ip进行记录
(3)根据(2)中选取的节点,建立ctdb组(集群数据库)并配置虚拟ip。
(4)在(2)中选出的节点中创建分组,并将客户端需要使用的块设备映射为该节点组的卷
(5)将该组的序号,节点ip,节点组id和卷id记录到默认存储池中对象的omap中
(6)给客户端返回虚拟ip、节点组id和卷id
在节点异常的情况下:
多路径方式
该方式使用tgt服务时,客户端通过多个节点链接到同一个块设备,在客户端侧通过multipath等方式使用块设备,若提供该块设备导出服务的一组节点其中的一个节点出现故障,无法提供服务。仍存在7条可以链接到该块设备的路径,以保障用户业务正常进行。
虚拟ip高可用方式
该方式通过ctdb提供虚拟ip给用户使用,用户通过虚拟ip链接到提供该块设备导出服务的一组节点中的一个;当该节点发生故障时,ctdb检测到节点故障,将虚拟ip迁移到该ctdb组的另一个节点上继续提供服务。
大规模集群节点tgt管理
展示/查询:在进行使用时将tgt组的序号,组内节点ip、节点组id和卷id都以key-value键值对的形式记录到了默认存储池对象的omap中。在查询时直接读取该数据,可以展示集群中一共存在多少个tgt组,每个组由哪些节点组成,提供哪些块设备的导出服务。
管理:在对tgt组进行管理的时候根据组序号,在组内所有节点进行统一操作,包括创建/删除块设备;创建/删除组;绑定chap用户、绑定客户端ip等。
如图2所示,该系统200包括:
数量设置单元210,配置用于设置分组的组内节点数量;
节点查询单元220,配置用于接收到客户端发送的分组创建请求之后,在默认存储池查询当前节点使用信息;
空闲判断单元230,配置用于根据所述使用信息判断是否存在满足所述组内节点数量的空闲节点;
空闲分组单元240,配置用于若存在满足所述组内节点数量的空闲节点,则选出所述组内节点数量的空闲节点建立分组,并将分组信息作为目标节点组信息输出;
现有查询单元250,配置用于若不存在满足所述组内节点数量的空闲节点,则查询现有节点组中连接客户端最少的现有节点组,并将查询到的现有节点组信息作为目标节点组信息输出。
可选地,作为本发明一个实施例,所述系统还包括:
资源创建单元,配置用于在所述目标节点组中创建存储资源;
映射更新单元,配置用于将发送请求的客户端使用的块设备映射为所述目标节点组的卷。
可选地,作为本发明一个实施例,所述系统还包括:
策略获取单元,配置用于获取发送请求的客户端的使用策略;
第一处理单元,配置用于若所述使用策略为多路径方式,则将所述目标节点组信息返回至所述发送请求的客户端,所述目标节点组信息包括节点ip,目标节点组id和卷id;
第二处理单元,配置用于若所述使用策略为虚拟ip高可用方式,则根据所述目标节点组创建轻量级集群组并为所述轻量级集群组配置虚拟ip,将所述虚拟ip和所述目标节点组信息返回至所述发送请求的客户端。
可选地,作为本发明一个实施例,所述系统还包括:
信息保存单元,配置用于将所述目标节点组信息以键值对的形式保存至默认存储池中对象的记录数据库中。
图3为本发明实施例提供的一种终端300的结构示意图,该终端300可以用于执行本发明实施例提供的存储资源分组方法。
其中,该终端300可以包括:处理器310、存储器320及通信单元330。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,该存储器320可以用于存储处理器310的执行指令,存储器320可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器320中的执行指令由处理器310执行时,使得终端300能够执行以下上述方法实施例中的部分或全部步骤。
处理器310为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integratedcircuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器310可以仅包括中央处理器(centralprocessingunit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。
通信单元330,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。
因此,本发明以组的形式对tgt服务进行管理与使用,在大规模集群场景下极大程度的减少了target和块设备映射的创建,节约了集群系统资源。同时减少了块设备导出的冗余路径,减少客户端使用的压力。根据目前负载情况自动规划tgt组,保持业务压力均衡,保证了核心业务的稳定性,也迎合了当前快速存储、高效存储的理念,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
1.一种存储资源分组方法,其特征在于,包括:
设置分组的组内节点数量;
接收到客户端发送的分组创建请求之后,在默认存储池查询当前节点使用信息;
根据所述使用信息判断是否存在满足所述组内节点数量的空闲节点:
若是,则选出所述组内节点数量的空闲节点建立分组,并将分组信息作为目标节点组信息输出;
若否,则查询现有节点组中连接客户端最少的现有节点组,并将查询到的现有节点组信息作为目标节点组信息输出。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述目标节点组中创建存储资源;
将发送请求的客户端使用的块设备映射为所述目标节点组的卷。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取发送请求的客户端的使用策略;
若所述使用策略为多路径方式,则将所述目标节点组信息返回至所述发送请求的客户端,所述目标节点组信息包括节点ip,目标节点组id和卷id;
若所述使用策略为虚拟ip高可用方式,则根据所述目标节点组创建轻量级集群组并为所述轻量级集群组配置虚拟ip,将所述虚拟ip和所述目标节点组信息返回至所述发送请求的客户端。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述目标节点组信息以键值对的形式保存至默认存储池中对象的记录数据库中。
5.一种存储资源分组系统,其特征在于,包括:
数量设置单元,配置用于设置分组的组内节点数量;
节点查询单元,配置用于接收到客户端发送的分组创建请求之后,在默认存储池查询当前节点使用信息;
空闲判断单元,配置用于根据所述使用信息判断是否存在满足所述组内节点数量的空闲节点;
空闲分组单元,配置用于若存在满足所述组内节点数量的空闲节点,则选出所述组内节点数量的空闲节点建立分组,并将分组信息作为目标节点组信息输出;
现有查询单元,配置用于若不存在满足所述组内节点数量的空闲节点,则查询现有节点组中连接客户端最少的现有节点组,并将查询到的现有节点组信息作为目标节点组信息输出。
6.根据权利要求5所述的系统,其特征在于,所述系统还包括:
资源创建单元,配置用于在所述目标节点组中创建存储资源;
映射更新单元,配置用于将发送请求的客户端使用的块设备映射为所述目标节点组的卷。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括:
策略获取单元,配置用于获取发送请求的客户端的使用策略;
第一处理单元,配置用于若所述使用策略为多路径方式,则将所述目标节点组信息返回至所述发送请求的客户端,所述目标节点组信息包括节点ip,目标节点组id和卷id;
第二处理单元,配置用于若所述使用策略为虚拟ip高可用方式,则根据所述目标节点组创建轻量级集群组并为所述轻量级集群组配置虚拟ip,将所述虚拟ip和所述目标节点组信息返回至所述发送请求的客户端。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括:
信息保存单元,配置用于将所述目标节点组信息以键值对的形式保存至默认存储池中对象的记录数据库中。
9.一种终端,其特征在于,包括:
处理器;
用于存储处理器的执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-4任一项所述的方法。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述的方法。
技术总结