一种数据重分布方法及装置的制造方法

文档序号:9217127阅读:258来源:国知局
一种数据重分布方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据存储技术领域,尤其涉及一种数据重分布方法及装置。
【背景技术】
[0002]随着大数据时代的到来,对于海量数据的存储处理越来越重要。目前,主流的海量数据存储技术是采用分布式存储系统。
[0003]分布式存储系统中有多个存储节点和一个数据管理节点,数据管理节点也可以和存储节点合设,通常按照一定的算法将数据块分散存储在各个存储节点上,常用的算法有哈希算法、轮转算法和随机算法等,在数据管理节点中存储所有存储节点中所有数据块的数据块标识及其对应的地址。数据块在各个存储节点上分散存储,可以充分利用各个存储节点的存储能力,也避免产生热点。分布式存储系统之所以用来存储海量数据,主要是因为其横向扩展能力强,可以通过增加存储节点数量进一步扩展系统的存储能力和数据处理能力。当分布式存储系统扩展后,需要对原有的存储数据进行重分布,以充分利用新增的存储节点。数据重分布的过程需要按照最新的存储节点数量,采用一定的算法重新计算,部分数据会被迁移到新增的存储节点上。
[0004]在数据重分布过程中,确定需要迁移的数据块后,将该数据块从原始存储节点复制到目标存储节点,然后将原始存储节点中的该数据块删除,最后将数据管理节点中存储的该数据块的存储地址更新为该数据块在目标存储节点中的存储地址,则结束数据重分布的过程。在整个数据重分布过程中,如果在将原始存储节点中的数据块删除之后,且还未将数据管理节点中该数据块的存储地址更新之前,此时访问该数据块,从数据管理节点中获取的该数据块的地址仍然是原始存储节点中的地址,而原始存储节点中的该数据块已经删除,那么必将出现访问错误。
[0005]现有技术中,为了防止在数据重分布过程中,数据访问错误的出现,通常会在数据重分布过程中将分布式存储系统服务设置为不可用,即中断分布式存储系统的服务。然而数据重分布的过程,大量数据的迁移需要花费很长时间,这样,又造成了分布式存储系统服务的中断时间较长。

【发明内容】

[0006]本发明实施例提供一种数据重分布方法及装置,用以解决现有技术中存在的数据重分布过程中分布式存储系统服务的中断时间较长的问题。
[0007]本发明实施例提供一种数据重分布方法,包括:
[0008]确定需要迁移的数据块当前的存储地址和目标存储节点;
[0009]在所述目标存储节点中存储所述数据块对应的指针,所述数据块对应的指针指向所述数据块当前的存储地址;
[0010]将数据管理节点中所述数据块当前的存储地址,更新为所述数据块对应的指针在所述目标存储节点中的存储地址;
[0011]当满足迁移所述数据块的预设触发条件时,从所述目标存储节点中,获取所述数据块对应的指针;
[0012]将所述指针指向的地址中存储的数据块,迁移到所述指针在所述目标存储节点中的存储地址。
[0013]本发明实施例提供的方法,针对需要迁移的数据块,在该数据块的目标存储节点添加指向该数据块当前的存储地址的指针,并将数据管理节点中该数据块当前的存储地址更新为该指针在该目标存储节点中的存储地址,当满足预设触发条件时,将该数据块进行迁移。该过程中,如果是在数据管理节点更新地址之前,访问该数据块,从数据管理节点中获取到的是该数据块当前的存储地址,此时该存储地址中仍存储有该数据块,则从该存储地址中可以成功访问该数据块;如果是在数据管理节点更新地址之后,且未满足预设触发条件,该数据块还未迁移到目标存储节点中之前,访问该数据块,从数据管理节点中获取到的是该数据块对应的指针在目标存储节点中的存储地址,然后获取该指针,也可以从该指针指向的地址中访问到该数据块;如果是在满足预设触发条件,该数据块已经迁移到目标存储节点之后,访问该数据块,那么从数据管理节点中获取到目标存储节点中的存储地址,即可以访问到该数据块。因此,采用本发明实施例提供的方案,在上述几种情况下访问数据均不会出现访问错误,无需中断存储系统服务,从而避免了存储系统服务中断时间较长的问题。
[0014]进一步的,当满足迁移所述数据块的预设触发条件时,从所述目标存储节点中,获取所述数据块对应的指针,具体包括:
[0015]当到达预设迁移周期时,从所述目标存储节点中,获取所述数据块对应的指针,或者
[0016]当接收到迁移指令时,从所述目标存储节点中,获取所述数据块对应的指针,或者
[0017]当接收到对所述数据块的修改指令时,从所述目标存储节点中,获取所述数据块对应的指针。
[0018]进一步的,在到达预设迁移周期之后,从所述目标存储节点中获取所述数据块对应的指针之前,还包括:
[0019]确定当前系统负载未超过预设负载阈值。
[0020]进一步的,在接收到迁移指令之后,从所述目标存储节点中获取所述数据块对应的指针之前,还包括:
[0021]确定当前系统负载未超过预设负载阈值。
[0022]这样,根据当前系统负载情况确定是否进行数据块的迁移,有助于利用闲时资源,也避免导致负载过高,使系统资源的整体利用趋于平稳。
[0023]进一步的,在接收到对所述数据块的修改指令,从所述目标存储节点中,获取所述数据块对应的指针之后,还包括:
[0024]根据所述修改指令,对所述指针指向的地址中存储的数据块进行修改;
[0025]将所述指针指向的地址中存储的数据块,迁移到所述指针在所述目标存储节点中的存储地址,具体包括:
[0026]将所述指针指向的地址中存储的最新的数据块,迁移到所述指针在所述目标存储节点中的存储地址。
[0027]进一步的,将所述指针指向的地址中存储的数据块,迁移到所述指针在所述目标存储节点中的存储地址,具体包括:
[0028]将所述指针指向的地址中存储的数据块,复制到所述指针在所述目标存储节点中的存储地址;
[0029]在所述指针指向的地址中将存储的数据块删除。
[0030]进一步的,将所述指针指向的地址中存储的数据块,迁移到所述指针在所述目标存储节点中的存储地址之后,还包括:
[0031]将所述指针删除。
[0032]这样,数据迁移完成后,将原来的数据块以及指针删除,才能使存储资源得到更充分的利用。
[0033]相应的,本发明实施例还提供一种数据重分布装置,包括:
[0034]计算单元,用于确定需要迁移的数据块当前的存储地址和目标存储节点;
[0035]指针创建单元,用于在所述目标存储节点中存储所述数据块对应的指针,所述数据块对应的指针指向所述数据块当前的存储地址;
[0036]地址更新单元,用于将数据管理节点中所述数据块当前的存储地址,更新为所述数据块对应的指针在所述目标存储节点中的存储地址;
[0037]管理单元,用于当满足迁移所述数据块的预设触发条件时,从所述目标存储节点中,获取所述数据块对应的指针;并将所述指针指向的地址中存储的数据块,迁移到所述指针在所述目标存储节点中的存储地址。
[0038]进一步的,所述管理单元,具体用于当到达预设迁移周期时,从所述目标存储节点中,获取所述数据块对应的指针,或者
[0039]当接收到迁移指令时,从所述目标存储节点中,获取所述数据块对应的指针,或者
[0040]当接收到对所述数据块的修改指令时,从所述目标存储节点中,获取所述数据块对应的指针。
[0041]进一步的,所述管理单元,在到达预设迁移周期之后,从所述目标存储节点中获取所述数据块对应的指针之前,还用于确定当前系统负载未超过预设负载阈值。
[0042]进一步的,所述管理单元,在接收到迁移指令之后,从所述目标存储节点中获取所述数据块对应的指针之前,还用于确定当前系统负载未超过预设负载阈值。
[0043]进一步的,所述管理单元,在接收到对所述数据块的修改指令,从所述目标存储节点中,获取所述数据块对应的指针之后,还用于根据所述修改指令,对所述指针指向的地址中存储的数据块进行修改;
[0044]所述管理单元,将所述指针指向的地址中存储的数据块,迁移到所述指针在所述目标存储节点中的存储地址,具体用于将所述指针指向的地址中存储的最新的数据块,迁移到所述指针在所述目标存储节点中的存储地址。
[0045]进一步的,所述管理单元,将所述指针指向的地址中存储的数据块,迁移到所述指针在所述目标存储节点中的存储地址,具体用于将所述指针指向的地址中存储的数据块,复制到所述指针在所述目标存储节点中的存储地址;并在所述指针指向的地址中将存储的数据块删除。
[0046
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1