一种数据平衡方法、装置及分布式存储系统中的管理设备与流程

文档序号:14410273阅读:172来源:国知局
一种数据平衡方法、装置及分布式存储系统中的管理设备与流程

本发明涉及数据存储技术领域,尤其涉及一种数据平衡方法、装置及分布式存储系统中的管理设备。



背景技术:

目前,使用分布式存储系统进行数据存储的平台,使用一段时间后,由于热点数据、热点应用等原因,导致数据在各个服务器之间出现数据不平衡的情况,数据不平衡会导致io出现瓶颈。

现有技术中,为了解决数据不平衡问题,运维人员需要定时去查询服务集群中各个服务器的数据情况,当服务器出现数据不平衡时,运维人员会手动执行平衡数据的操作。

然而,运维人员手动进行数据平衡的方式存在一定的问题:开始平衡操作时,运维人员无法获知服务集群的运行状况,如果服务集群有任务在进行,平衡操作经常会失败或者占用任务的io资源;当服务器中的数据量比较大,且各个服务器之间的数据量差距比较大时,平衡的时间比较长。



技术实现要素:

有鉴于此,本发明提供了一种数据平衡方法、装置及分布式存储系统中的管理设备,用以解决现有技术中的平衡方法会存在平衡操作失败、平衡时间比较长的问题,其技术方案如下:

一种数据平衡方法,应用于分布式存储系统中的管理节点,所述方法包括:

当接收到来自客户端的数据写请求时,从多个存储节点中确定目标存储节点,以使所述客户端将所述数据写请求对应的目标数据写入所述目标存储节点,其中,所述管理节点可与所述多个存储节点通信;

基于各存储节点中的存储数据量,从所述多个存储节点中不同于所述目标存储节点的剩余存储节点中确定至少一个备份存储节点,其中,所述存储数据量为已存储数据的数据量;

将所述至少一个备份存储节点的标识信息发送至所述目标存储节点,以使所述目标存储节点将所述目标数据分别写入所述至少一个备份存储节点。

其中,所述从多个存储节点中确定目标存储节点,包括:

从所述多个存储节点中确定存储数据量最小的存储节点;

将所述存储数据量最小的存储节点确定为所述目标存储节点。

其中,所述从多个存储节点中确定目标存储节点,包括:

判断是否存在与所述客户端处于同一服务器上的存储节点;

若存在与所述客户端处于同一服务器上的存储节点,则将与所述客户端处于同一服务器上的存储节点确定为所述目标存储节点;

若不存在与所述客户端处于同一服务器上的存储节点,则从所述多个存储节点中确定存储数据量最小的存储节点,将所述存储数据量最小的存储节点确定为所述目标存储节点。

其中,所述基于各存储节点中的存储数据量,从所述多个存储节点中不同于所述目标存储节点的剩余存储节点中确定至少一个备份存储节点,包括:

若所述剩余存储节点中存在与所述目标存储节点属于不同组的存储节点,则基于存储数据量从与所述目标存储节点属于不同组的存储节点中确定所述至少一个备份存储节点,其中,所述至少一个备份存储节点的存储数据量均小于与所述目标存储节点属于不同组的存储节点中不同于所述至少一个备份存储节点的存储节点的存储数据量;

若所述剩余存储节点与所述目标存储节点属于同一组,则基于存储数据量从所述剩余存储节点中确定所述至少一个备份存储节点,其中,所述至少一个备份存储节点的存储数据量均小于所述剩余存储节点中不同于所述至少一个备份存储节点的存储节点的存储数据量。

所述数据平衡方法还包括:

实时检测所述管理节点和所述多个存储节点的资源使用率;

若所述管理节点和所述多个存储节点的资源使用率小于设定阈值,则将存储数据量大于第一预设值的存储节点的部分数据迁移至存储数据量小于第二预设值的存储节点。

所述数据平衡方法还包括:

判断所述管理节点是否在预设时间段内未接收到数据操作请求;

若所述管理节点在所述预设时间段内未接收到所述数据操作请求,则将存储数据量大于第一预设值的存储节点的部分数据迁移至存储数据量小于第二预设值的存储节点。

一种数据平衡装置,应用于分布式存储系统中的管理节点,所述装置包括:第一确定模块、第二确定模块和发送模块;

所述第一确定模块,用于当接收到来自客户端的数据写请求时,从多个存储节点中确定目标存储节点,以使所述客户端将所述数据写请求对应的目标数据写入所述目标存储节点,其中,所述管理节点可与所述多个存储节点通信;

所述第二确定模块,用于基于各存储节点中的存储数据量,从所述多个存储节点中不同于所述目标存储节点的剩余存储节点中确定至少一个备份存储节点,其中,所述存储数据量为已存储数据的数据量;

所述发送模块,用于将所述至少一个备份存储节点的标识信息发送至所述目标存储节点,以使所述目标存储节点将所述目标数据分别写入所述至少一个备份存储节点。

其中,所述第一确定模块包括:判断子模块、第一确定子模块和第二确定子模块;

所述判断子模块,用于判断是否存在与所述客户端处于同一服务器上的存储节点;

所述第一确定子模块,用于当存在与所述客户端处于同一服务器上的存储节点时,将与所述客户端处于同一服务器上的存储节点确定为所述目标存储节点;

所述第二确定子模块,用于从所述多个存储节点中确定存储数据量最小的存储节点,将所述存储数据量最小的存储节点确定为所述目标存储节点。

所述数据平衡装置还包括:判断模块和数据迁移模块;

所述判断模块,用于判断所述管理节点是否在预设时间段内未接收到数据操作请求;

所述数据迁移模块,用于当所述管理节点在所述预设时间段内未接收到所述数据操作请求时,将存储数据量大于第一预设值的存储节点的部分数据迁移至存储数据量小于第二预设值的存储节点。

一种分布式存储系统中的管理设备,包括:通信接口和处理器;

所述通信接口,用于接收客户端的数据写请求;

所述处理器,用于在所述通信接口接收到所述客户端的数据写请求时,从多个存储节点中确定目标存储节点,以使所述客户端将所述数据写请求对应的目标数据写入所述目标存储节点;基于各存储节点中的存储数据量,从所述多个存储节点中不同于所述目标存储节点的剩余存储节点中确定至少一个备份存储节点,其中,所述管理设备可与所述多个存储节点通信,所述存储数据量为已存储数据的数据量;

所述通信接口,还用于将所述至少一个备份存储节点的标识信息发送至所述目标存储节点,以使所述目标存储节点将所述目标数据分别写入所述至少一个备份存储节点。

上述技术方案具有如下有益效果:

本发明提供的数据平衡方法、装置及分布式存储系统中的管理设备,在接收到数据写请求时,首先从多个存储节点中确定目标存储节点,接着基于各存储节点的存储数据量在剩余存储节点中确定至少一个备份存储节点,从而使客户端将数据写请求对应的目标数据写入目标存储节点,使目标存储节点将目标数据分别写入至少一个备份存储节点,由上述过程可知,本发明提供的数据平衡方法、装置及分布式存储系统中的管理设备,在数据写入的时候就考虑了数据平衡的问题,即在数据写入时,基于存储数据量确定需要写入目标数据的存储节点,这使得数据不平衡的情况大为减少,从根源上避免了后续可能出现的一些数据不平衡问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的数据平衡方法的流程示意图;

图2为本发明实施例提供的数据平衡装置的结构示意图;

图3为本发明实施例提供的分布式存储系统中的管理设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种数据平衡方法,该方法应用于分布式存储系统中的管理节点,请参阅图1,示出了该数据平衡方法的流程示意图,该方法可以包括:

步骤s101:当接收到来自客户端的数据写请求时,从多个存储节点中确定目标存储节点,以使客户端将数据写请求对应的目标数据写入目标存储节点。

其中,管理节点可与多个存储节点通信。

步骤s102:基于各存储节点中的存储数据量,从多个存储节点中不同于目标存储节点的剩余存储节点中确定至少一个备份存储节点。

其中,存储数据量为已存储数据的数据量。

步骤s103:将至少一个备份存储节点的标识信息发送至目标存储节点,以使目标存储节点将目标数据分别写入至少一个备份存储节点。

本发明实施例提供的数据平衡方法,在接收到数据写请求时,首先从多个存储节点中确定目标存储节点,接着基于各存储节点的存储数据量在剩余存储节点中确定至少一个备份存储节点,从而使客户端将数据写请求对应的目标数据写入目标存储节点,使目标存储节点将目标数据分别写入至少一个备份存储节点,由上述过程可知,本发明实施例提供的数据平衡方法,在数据写入的时候就考虑了数据平衡的问题,即在数据写入时,基于存储数据量确定需要写入目标数据的存储节点,这使得数据不平衡的情况大为减少。

以下对上述实施例提供的数据平衡方法中,步骤s101从多个存储节点中确定目标存储节点的具体实现过程进行说明。

从多个存储节点中确定目标存储节点的实现方式有多种。在一种可能的实现方式中,从多个存储节点中确定目标存储节点的过程可以包括:从多个存储节点中确定存储数据量最小的存储节点,将存储数据量最小的存储节点确定为目标存储节点。

需要说明的是,分布式存储系统存储数据的过程为:管理节点首先确定目标存储节点,然后确定备份存储节点,由客户端向目标存储节点存储数据,由目标存储节点向备份存储节点存储备份数据。

可以理解的是,如果客户端与目标存储节点处于同一服务器上,那么存储数据的速度较快,而如果客户端与目标存储节点处于不同服务器上,那么,存储数据的速度相对较慢。

在上述第一种可能的实现方式中,从多个存储节点中确定存储数据量最小的存储节点作为目标存储节点时,可能存在存储数据量最小的存储节点与客户端位于不同服务器的情况。

为了提高数据的存储速度,本发明实施例提供了另外一种可能的实现方式,在该实现方式中,从多个存储节点中确定目标存储节点的过程可以包括:判断是否存在与客户端处于同一服务器上的存储节点;若存在与客户端处于同一服务器上的存储节点,则将与客户端处于同一服务器上的存储节点确定为目标存储节点;若不存在与客户端处于同一服务器上的存储节点,则从多个存储节点中确定存储数据量最小的存储节点,将存储数据量最小的存储节点确定为目标存储节点。

需要说明的是,在上述第二种可能的实现方式中,首先需要判断是否存在与客户端处于同一服务器上的存储节点,在本实施例中,可将各个存储节点的标识与客户端的标识进行比较,如果存在存储节点的标识与客户端的标识相同,则表明该存储节点与客户端处于同一服务上,即存在与客户端处于同一服务器上的存储节点。其中,标识可以但不限为ip地址。

在确定出目标存储节点后,需要进一步确定备份存储节点。以下对基于各存储节点中的存储数据量,从多个存储节点中不同于目标存储节点的剩余存储节点中确定至少一个备份存储节点的具体实现过程进行说明。

以下分两种情况对基于各存储节点中的存储数据量,从多个存储节点中不同于目标存储节点的剩余存储节点中确定至少一个备份存储节点的具体实现过程进行说明。

第一种情况为剩余存储节点中存在与目标存储节点属于不同组的存储节点:

需要说明的是,两个存储节点属于不同组,指的是,两个存储节点部署在不同组的服务器上,可以理解的是,实际应用时,服务器集群会被分成多个组,同一组的服务器设置在一个机架上,设置在同一机架上的服务器共用一个电源和一个网络入口,可以想象的是,一旦电源故障或者网络接口故障,整个机架上的所有服务器均无法工作,即部署在这些服务器上的存储节点也就无法存取数据。为了避免上述情况的发生,本实施例优先从与目标存储节点属于不同组的存储节点中确定备份存储节点。

具体地,基于存储数据量从与目标存储节点属于不同组的存储节点中确定至少一个备份存储节点。其中,至少一个备份存储节点的存储数据量均小于与目标存储节点属于不同组的存储节点中不同于至少一个备份存储节点的存储节点的存储数据量。

示例性地,备份数量为3,即,需要确定3个备份存储节点,目标存储节点为a,剩余存储节点中与目标存储节点属于不同组的存储节点包括b、c、d和e,假设存储节点b、c、d和e中的存储数据量分别为sb、sc、sd、se,且sc<sd<sb<se,由于存储数据量前三小的存储节点为c、d和b,因此,将存储节点c、d和b确定为备份存储节点。

第二种情况为剩余存储节点与目标存储节点属于同一组:

在这种情况下,基于存储数据量从剩余存储节点中确定至少一个备份存储节点。其中,至少一个备份存储节点的存储数据量均小于剩余存储节点中不同于至少一个备份存储节点的存储节点的存储数据量。

示例性地,备份数量为3,即,需要确定3个备份存储节点,目标存储节点为a,剩余存储节点包括b、c、d、e、f、g,假设存储节点b、c、d、e、f、g中的存储数据量分别为sb、sc、sd、se、sf、sg,且sc<sd<sg<se<sf,由于存储数据量前三小的存储节点为c、d和g,因此,将存储节点c、d和g确定为备份存储节点。

上述从多个存储节点中确定目标存储节点的第二种可能的实现方式中,如果存在与客户端处于同一服务器上的存储节点,则将与客户端处于同一服务器上的存储节点确定为目标存储节点,以使客户端将目标数据存储至目标存储节点,即客户端每次需要写数据时,都会优先向与其处于同一服务器的目标存储节点中写入,这就可能导致大量的数据写入目标存储节点,从而引起数据不平衡。针对这种情况,本发明实施例进一步提供如下解决方案:当分布式存储系统的系统资源比较空闲的时候,进行数据平衡。

具体地,实时检测管理节点和多个存储节点的资源使用率,若管理节点和多个存储节点的资源使用率小于设定阈值,则将存储数据量大于第一预设值的存储节点的部分数据迁移至存储数据量小于第二预设值的存储节点。其中,资源使用率用于表征cpu、内存、io等的使用情况。

上述实现过程中,检测管理节点和多个存储节点的资源使用率的目的在于确定系统资源是否空闲,除了这种方式外,本发明实施例还提供另外一种方式确定系统资源是否空闲,即,判断管理节点是否在预设时间段内未接收到数据操作请求,若管理节点在预设时间段内未接收到数据操作请求,则将存储数据量大于第一预设值的存储节点的部分数据迁移至存储数据量小于第二预设值的存储节点。

可以理解的是,如果管理节点长时间没有接收到数据写请求或数据读请求,则表明管理节点比较空闲,即,系统资源比较空闲。

需要说明的是,在进行数据平衡的过程中,仍会实时监测系统资源情况,一旦系统资源比较繁忙,即停止数据平衡操作。

本发明实施例提供的数据平衡方法,一方面在数据写入的时候,就考虑平衡问题,将数据写入存储数据量较小的存储节点,这使得数据不平衡的情况大大减少,另一方面,在系统资源比较空闲的时候,自动进行数据平衡,而不需要人为干预,由于系统资源比较空闲,因此,数据平衡操作不会失败,且数据平衡效率较高,即数据平衡时间较短。

与上述方法相对应,本发明实施例还提供了一种数据平衡装置,该数据平衡装置应用于分布式存储系统中的管理节点,请参阅图2,示出了该数据平衡装置的结构示意图,可以包括:第一确定模块201、第二确定模块202和发送模块203。

第一确定模块201,用于当接收到来自客户端的数据写请求时,从多个存储节点中确定目标存储节点,以使客户端将数据写请求对应的目标数据写入目标存储节点。

其中,管理节点可与多个存储节点通信。

第二确定模块202,用于基于各存储节点中的存储数据量,从多个存储节点中不同于目标存储节点的剩余存储节点中确定至少一个备份存储节点。

其中,存储数据量为已存储数据的数据量。

发送模块203,用于将至少一个备份存储节点的标识信息发送至目标存储节点,以使目标存储节点将目标数据分别写入至少一个备份存储节点。

本发明实施例提供的数据平衡装置,在接收到数据写请求时,首先从多个存储节点中确定目标存储节点,接着基于各存储节点的存储数据量在剩余存储节点中确定至少一个备份存储节点,从而使客户端将数据写请求对应的目标数据写入目标存储节点,使目标存储节点将目标数据分别写入至少一个备份存储节点,由上述过程可知,本发明实施例提供的数据平衡装置,在数据写入的时候就考虑了数据平衡的问题,即在数据写入时,基于存储数据量确定需要写入目标数据的存储节点,这使得数据不平衡的情况大为减少。

在上述实施例提供的数据平衡装置中,第一确定模块201的实现方式有多种。

在一种可能的实现方式中,第一确定模块201可以包括:第一确定子模块和第二确定子模块。

第一确定子模块,用于从多个存储节点中确定存储数据量最小的存储节点。

第二确定子模块,用于将存储数据量最小的存储节点确定为目标存储节点。

在另一种可能的实现方式中,第一确定模块201可以包括:判断子模块、第一确定子模块和第二确定子模块。

判断子模块,用于判断是否存在与客户端处于同一服务器上的存储节点。

第一确定子模块,用于当存在与客户端处于同一服务器上的存储节点时,将与客户端处于同一服务器上的存储节点确定为目标存储节点。

第二确定子模块,用于从多个存储节点中确定存储数据量最小的存储节点,将存储数据量最小的存储节点确定为目标存储节点。

在上述实施例提供的数据平衡装置中,第二确定模块202可以包括:第一确定子模块和第二确定子模块。

第一确定子模块,用于当剩余存储节点中存在与目标存储节点属于不同组的存储节点时,基于存储数据量从与目标存储节点属于不同组的存储节点中确定至少一个备份存储节点。

其中,至少一个备份存储节点的存储数据量均小于与目标存储节点属于不同组的存储节点中不同于至少一个备份存储节点的存储节点的存储数据量。

第二确定子模块,用于当剩余存储节点与目标存储节点属于同一组时,基于存储数据量从剩余存储节点中确定至少一个备份存储节点。

其中,至少一个备份存储节点的存储数据量均小于剩余存储节点中不同于至少一个备份存储节点的存储节点的存储数据量。

优选地,在一种可能的实现方式中,上述实施例提供的数据平衡装置还可以包括:检测模块和数据迁移模块。其中:

检测模块,用于实时检测所述管理节点和多个存储节点的资源使用率。

数据迁移模块,用于当管理节点和多个存储节点的资源使用率小于设定阈值时,将存储数据量大于第一预设值的存储节点的部分数据迁移至存储数据量小于第二预设值的存储节点。

优选地,在另一种可能的实现方式中,上述实施例提供的数据平衡装置还可以包括:判断模块和数据迁移模块。其中:

判断模块,用于判断管理节点是否在预设时间段内未接收到数据操作请求。

数据迁移模块,用于当管理节点在预设时间段内未接收到数据操作请求时,将存储数据量大于第一预设值的存储节点的部分数据迁移至存储数据量小于第二预设值的存储节点。

本发明实施例还提供了一种分布式存储系统中的管理设备,请参阅图3,示出了该管理设备的结构示意图,该管理设备可以包括:通信接口301和处理器302。

通信接口301,用于接收客户端的数据写请求。

处理器302,用于在通信接口301接收到客户端的数据写请求时,从多个存储节点中确定目标存储节点,以使客户端将数据写请求对应的目标数据写入目标存储节点;基于各存储节点中的存储数据量,从多个存储节点中不同于目标存储节点的剩余存储节点中确定至少一个备份存储节点,其中,管理设备可与多个存储节点通信,存储数据量为已存储数据的数据量。

通信接口301,还用于将至少一个备份存储节点的标识信息发送至目标存储节点,以使目标存储节点将目标数据分别写入至少一个备份存储节点。

本发明实施例提供的分布式存储系统中的管理设备,在接收到数据写请求时,首先从多个存储节点中确定目标存储节点,接着基于各存储节点的存储数据量在剩余存储节点中确定至少一个备份存储节点,从而使客户端将数据写请求对应的目标数据写入目标存储节点,使目标存储节点将目标数据分别写入至少一个备份存储节点,由上述过程可知,本发明实施例提供的管理设备,在数据写入的时候就考虑了数据平衡的问题,即在数据写入时,基于存储数据量确定需要写入目标数据的存储节点,这使得数据不平衡的情况大为减少。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1