一种数据动态迁移方法及装置与流程

文档序号:14880093发布日期:2018-07-07 09:32阅读:209来源:国知局

本发明涉及数据存储技术领域,具体涉及一种数据动态迁移方法及装置。



背景技术:

随着互联网的高速发展,当今社会所产生的数据量在急速增长。在互联网中的信息数据大多是以高频率的小文件形式表现出来的,且在一般用户的信息存储访问中对小文件的存储访问的操作相对较多。

在云存储系统中,海量的数据存储、高性能、高扩展性是其主要特点,但是当小文件的数量达到一定程度之后,存储海量小文件会对数据节点带来巨大的内存空间的压力,对海量小文件的频繁且重复的访问也会给数据节点带来性能及负载均衡方面的影响。

在云存储系统中,当各数据节点在经过一段时间的运行之后,小文件的频繁访问会导致数据节点的负载出现不均衡的情况。并且,当云存储系统中存储了海量小文件时,对各数据节点进行负载均衡时需要对大量小文件执行迁移操作,如果迁移的目标选择不合理的时候,大规模的小文件迁移操作将会导致更多的网络带宽消耗。



技术实现要素:

本发明提供一种数据动态迁移方法及装置,以解决现有技术中海量小文件的频繁访问会导致数据节点的负载出现不均衡,且在迁移操作时会导致更多的网络带宽消耗的问题。

第一方面,本发明实施例提供一种数据动态迁移方法,包括:

获取至少一个数据节点的相对负载值,以及所有数据节点的平均负载值;

若所述数据节点的相对负载值不小于所述平均负载值,确定所述数据节点为重负载节点并按照降序排列方式加入重负载节点集合中;否则,确定所述数据节点为轻负载节点并按照升序排列方式加入轻负载节点集合中;

将所述重负载节点集合中各所述重负载节点中的数据迁移到所述轻负载节点集合中各所述轻负载节点上。

作为本发明第一方面的优选方式,所述将所述重负载节点集合中各所述重负载节点中的数据迁移到所述轻负载节点集合中各所述轻负载节点上包括:

读取所述重负载节点集合中排在前面的重负载节点,并将所述排在前面的重负载节点中的数据块按照负载值降序排列的方式加入数据块队列中,然后依次将所述数据块队列中排在前面的数据块的负载值添加到所述轻负载节点集合中排在前面的轻负载节点上;

若所述排在前面的轻负载节点的相对负载值小于所述平均负载值,则将所述排在前面的数据块迁移到所述排在前面的轻负载节点上,并将所述排在前面的数据块从所述数据块队列中删除;否则,继续执行读取所述数据块队列中排在前面的数据块的步骤,直到所述排在前面的重负载节点的相对负载值小于所述平均负载值或者所述排在前面的轻负载节点的相对负载值不小于所述平均负载值,则对应从所述重负载节点集合或者所述轻负载节点集合中删除;

判断所述重负载节点集合或者所述轻负载节点集合是否为空;若否,则继续执行读取所述重负载节点集合中排在前面的重负载节点的步骤。

作为本发明第一方面的优选方式,所述将所述数据块队列中排在前面的数据块的负载值添加到所述轻负载节点集合中排在前面的轻负载节点上包括:

读取所述数据块队列中排在前面的数据块;

若所述排在前面的数据块为可读状态,则将所述排在前面的数据块的负载值添加到所述轻负载节点集合中排在前面的轻负载节点上;否则,继续读取所述数据块队列中的下一个数据块。

第二方面,本发明实施例提供一种数据动态迁移装置,包括:

获取单元,用于获取至少一个数据节点的相对负载值,以及所有数据节点的平均负载值;

确定单元,用于若所述数据节点的相对负载值不小于所述平均负载值,确定所述数据节点为重负载节点并按照降序排列方式加入重负载节点集合中;否则,确定所述数据节点为轻负载节点并按照升序排列方式加入轻负载节点集合中;

迁移单元,用于将所述重负载节点集合中各所述重负载节点中的数据迁移到所述轻负载节点集合中各所述轻负载节点上。

作为本发明第二方面的优选方式,所述迁移单元具体用于:

读取所述重负载节点集合中排在前面的重负载节点,并将所述排在前面的重负载节点中的数据块按照负载值降序排列的方式加入数据块队列中,然后依次将所述数据块队列中排在前面的数据块的负载值添加到所述轻负载节点集合中排在前面的轻负载节点上;

若所述排在前面的轻负载节点的相对负载值小于所述平均负载值,则将所述排在前面的数据块迁移到所述排在前面的轻负载节点上,并将所述排在前面的数据块从所述数据块队列中删除;否则,继续执行读取所述数据块队列中排在前面的数据块的步骤,直到所述排在前面的重负载节点的相对负载值小于所述平均负载值或者所述排在前面的轻负载节点的相对负载值不小于所述平均负载值,则对应从所述重负载节点集合或者所述轻负载节点集合中删除;

判断所述重负载节点集合或者所述轻负载节点集合是否为空;若否,则继续执行读取所述重负载节点集合中排在前面的重负载节点的步骤。

作为本发明第二方面的优选方式,所述迁移单元还具体用于:

读取所述数据块队列中排在前面的数据块;

若所述排在前面的数据块为可读状态,则将所述排在前面的数据块的负载值添加到所述轻负载节点集合中排在前面的轻负载节点上;否则,继续读取所述数据块队列中的下一个数据块。

本发明提供的一种数据动态迁移方法及装置,根据云存储系统中每个数据节点的相对负载值和所有数据节点的平均负载值,来对各个数据节点的负载进行动态的调整,从而将负载较重的数据节点上的数据动态迁移到负载较轻的数据节点上,从而使云存储系统中的各个数据节点的负载更加均衡。

此外,数据迁移过程中选择的目标非常合理,因此大规模的小文件迁移操作也不会导致更多的网络带宽消耗。

附图说明

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

图1为本发明实施例提供的一种数据动态迁移方法的流程示意图;

图2为本发明实施例提供的一种数据动态迁移方法的另一流程示意图;

图3为本发明实施例提供的一种数据动态迁移装置的结构示意图。

具体实施方式

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

参照图1所示,本发明实施例提供一种数据动态迁移方法,包括:

101、获取至少一个数据节点的相对负载值,以及所有数据节点的平均负载值。

本实施例中,先计算出云存储系统中任意一个数据节点的相对负载值,再根据各个数据节点的相对负载值计算出全部数据节点的平均负载值。

102、若数据节点的相对负载值不小于平均负载值,确定数据节点为重负载节点并按照降序排列方式加入重负载节点集合中;否则,确定数据节点为轻负载节点并按照升序排列方式加入轻负载节点集合中。

本实施例中,判断各个数据节点的相对负载值与平均负载值的大小,若数据节点的相对负载值大于等于平均负载值,确定该数据节点为重负载节点,并按照降序排列方式加入重负载节点集合中;若数据节点的相对负载值小于平均负载值,确定该数据节点为轻负载节点,并按照升序排列方式加入轻负载节点集合中。

103、将重负载节点集合中各重负载节点中的数据迁移到轻负载节点集合中各轻负载节点上。

本实施例中,根据上述步骤划分出的重负载节点集合和轻负载节点集合,可以将重负载集合中的负载迁移到轻负载节点集合中,从而使整个云存储系统中的负载更加均衡。

优选地,在一种可能的实施方式中,步骤103可以按照如下步骤具体实现:

1031、读取重负载节点集合中排在前面的重负载节点,并将排在前面的重负载节点中的数据块按照负载值降序排列的方式加入数据块队列中,然后依次将数据块队列中排在前面的数据块的负载值添加到轻负载节点集合中排在前面的轻负载节点上。

本步骤中,依次读取重负载节点集合中排在前面的重负载节点,并把该重负载节点中的数据块抽取出来,根据其各自的负载值大小,将这些数据块按照降序排列的方式加入数据块队列中。

依次从该数据块队列中读取排在前面的数据块,并将该数据块的负载值添加到轻负载节点集合中排在前面的轻负载节点上。

在从数据块队列中读取排在前面的数据块时,需要考虑其是否处于可读状态,只有在可读状态下才可以将数据块上的数据进行迁移。

优选地,在一种可能的实施方式中,将数据块队列中排在前面的数据块的负载值添加到轻负载节点集合中排在前面的轻负载节点上可按照如下步骤具体实现:

a、读取数据块队列中排在前面的数据块;

b、若排在前面的数据块为可读状态,则将排在前面的数据块的负载值添加到轻负载节点集合中排在前面的轻负载节点上;否则,继续读取数据块队列中的下一个数据块。

1032、若排在前面的轻负载节点的相对负载值小于平均负载值,则将排在前面的数据块迁移到排在前面的轻负载节点上,并将排在前面的数据块从数据块队列中删除;否则,继续执行读取数据块队列中排在前面的数据块的步骤,直到排在前面的重负载节点的相对负载值小于平均负载值或者排在前面的轻负载节点的相对负载值不小于平均负载值,则对应从重负载节点集合或者轻负载节点集合中删除。

本步骤中,将数据块队列中排在前面的数据块的负载值添加到轻负载节点集合中排在前面的轻负载节点上后,先判断排在前面的轻负载节点的相对负载值与平均负载值的大小。

若排在前面的轻负载节点的相对负载值小于平均负载值,则将排在前面的数据块迁移到排在前面的轻负载节点上,并将排在前面的数据块从数据块队列中删除;若排在前面的轻负载节点的相对负载值大于等于平均负载值,则继续读取数据块队列中的下一个数据块,看该数据块是否满足迁移的条件,直到排在前面的重负载节点的相对负载值小于平均负载值或者排在前面的轻负载节点的相对负载值不小于平均负载值,则说明此时排在前面的重负载节点的负载已经不需要再迁移了,或者排在前面的轻负载节点的负载已经超出迁移的范围了,无法再接收别的重负载节点的负载了。

针对排在前面的重负载节点或者排在前面的轻负载节点的迁移过程结束后,将该重负载节点从重负载节点集合中删除,或者将该轻负载节点从轻负载节点集合中删除,表示其负载已达到均衡,不需要再进行动态迁移操作了,可以按顺序对着两个集合中的其他节点继续进行动态迁移操作。

1033、判断重负载节点集合或者轻负载节点集合是否为空;若否,则继续执行读取重负载节点集合中排在前面的重负载节点的步骤。

本步骤中,在不断地删除两个集合中的节点后,判断重负载节点集合或者轻负载节点集合之中是否有一个集合为空。若其中有任意一个集合为空,则说明整个动态迁移过程已经完成;若两个集合都不为空,则继续读取重负载节点集合中的重负载节点,将其负载迁移到轻负载节点集合中的轻负载节点上。

参照图2所示,本发明实施例提供一种数据动态迁移方法,包括:

201、获取至少一个数据节点的相对负载值,以及所有数据节点的平均负载值;

202、判断各数据节点的相对负载值是否不小于平均负载值;

203、若是,确定数据节点为重负载节点并按照降序排列方式加入重负载节点集合中;否则,确定数据节点为轻负载节点并按照升序排列方式加入轻负载节点集合中;

204、读取重负载节点集合中排在前面的重负载节点,并将排在前面的重负载节点中的数据块按照负载值降序排列的方式加入数据块队列中;

205、读取数据块队列中排在前面的数据块;

206、判断排在前面的数据块是否为可读状态;

207、若是,排在前面的数据块为可读状态,则将排在前面的数据块的负载值添加到轻负载节点集合中排在前面的轻负载节点上;否则,继续执行步骤205;

208、判断排在前面的轻负载节点的相对负载值是否不小于平均负载值;

209、若否,则将排在前面的数据块迁移到排在前面的轻负载节点上,并将排在前面的数据块从数据块队列中删除;否则,继续执行步骤205;

210、判断排在前面的重负载节点和排在前面的轻负载节点的相对负载值与平均负载值的大小;

211、若排在前面的重负载节点的相对负载值小于平均负载值或者排在前面的轻负载节点的相对负载值不小于平均负载值,则对应从重负载节点集合或者轻负载节点集合中删除;

212、判断重负载节点集合或者轻负载节点集合是否为空;

213、若是,整个动态迁移过程完成;若否,则继续执行步骤204。

需要说明的是,本发明实施例提供的数据存储方法,其具体实施过程可参照前述实施例中对方法步骤的说明,在此不再赘述。

参照图3所示,本发明实施例提供一种数据动态迁移装置,包括:

获取单元31,用于获取至少一个数据节点的相对负载值,以及所有数据节点的平均负载值;

确定单元32,用于若数据节点的相对负载值不小于平均负载值,确定数据节点为重负载节点并按照降序排列方式加入重负载节点集合中;否则,确定数据节点为轻负载节点并按照升序排列方式加入轻负载节点集合中;

迁移单元33,用于将重负载节点集合中各重负载节点中的数据迁移到轻负载节点集合中各轻负载节点上。

优选地,迁移单元33具体用于:

读取重负载节点集合中排在前面的重负载节点,并将排在前面的重负载节点中的数据块按照负载值降序排列的方式加入数据块队列中,然后依次将数据块队列中排在前面的数据块的负载值添加到轻负载节点集合中排在前面的轻负载节点上;

若排在前面的轻负载节点的相对负载值小于平均负载值,则将排在前面的数据块迁移到排在前面的轻负载节点上,并将排在前面的数据块从数据块队列中删除;否则,继续执行读取数据块队列中排在前面的数据块的步骤,直到排在前面的重负载节点的相对负载值小于平均负载值或者排在前面的轻负载节点的相对负载值不小于平均负载值,则对应从重负载节点集合或者轻负载节点集合中删除;

判断重负载节点集合或者轻负载节点集合是否为空;若否,则继续执行读取重负载节点集合中排在前面的重负载节点的步骤。

优选地,迁移单元33还具体用于:

读取数据块队列中排在前面的数据块;

若排在前面的数据块为可读状态,则将排在前面的数据块的负载值添加到轻负载节点集合中排在前面的轻负载节点上;否则,继续读取数据块队列中的下一个数据块。

需要说明的是,本发明实施例提供的数据存储装置与前述实施例所述的数据存储方法属于相同的技术构思,其具体实施过程可参照前述实施例中对方法步骤的说明,在此不再赘述。

本发明提供的一种数据动态迁移方法及装置,根据云存储系统中每个数据节点的相对负载值和所有数据节点的平均负载值,来对各个数据节点的负载进行动态的调整,从而将负载较重的数据节点上的数据动态迁移到负载较轻的数据节点上,从而使云存储系统中的各个数据节点的负载更加均衡。

此外,数据迁移过程中选择的目标非常合理,因此大规模的小文件迁移操作也不会导致更多的网络带宽消耗。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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