分布式存储系统数据修复的方法和装置的制造方法

文档序号:9787436阅读:590来源:国知局
分布式存储系统数据修复的方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别是一种分布式存储系统数据修复的方法和装置。
【背景技术】
[0002]分布式存储系统,一般采用多副本的分布存储策略,通过多副本冗余存储来保证数据的可靠性。例如,可以采用3副本存储,利用hash(哈希)算法确定节点后,将数据的一个副本存储在该节点(或机器)上,而将另外2份副本存储在其他节点上。当某个节点出现故障时,仍然保证另外两个副本可以访问,并在合适的条件下完成故障副本的修复。
[0003]为了提高分布式存储系统中各个节点对外提供业务服务的性能,可以对各个节点进行数据分片,各个数据分片具有接收并响应数据请求的主副本以及同步该主副本的数据操作的从副本,且主副本与其对应的一个或多个从副本位于不同的节点。并且,考虑到分布式存储系统的负载均衡,应尽可能保证各个节点上面的主副本是一样多的。
[0004]当分布式存储系统中的节点出现故障时,如何对故障节点上数据分片的主副本或从副本的数据进行及时修复成为亟待解决的技术问题。

【发明内容】

[0005]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的分布式存储系统数据修复的方法和相应的装置。
[0006]依据本发明的一方面,提供了一种分布式存储系统数据修复的方法,包括:
[0007]监测目标分片的副本所在节点是否出现故障,其中,所述目标分片具有用于接收并响应数据请求的主副本和用于同步该主副本的数据操作的从副本,所述主副本和所述从副本位于分布式存储系统的不同节点;
[0008]若监测到所述目标分片的副本所在节点出现故障,重新启动与所述目标分片的副本对应的进程;以及
[0009]修复所述故障节点上所述目标分片的副本的数据。
[0010]可选地,所述监测目标分片的副本所在节点是否出现故障的步骤包括:
[0011 ]监测目标分片的副本的在线数量;以及
[0012]当监测到所述目标分片的副本的在线数量与预设数量不一致时,确定所述目标分片的副本所在节点出现故障。
[0013]可选地,所述监测目标分片的副本的在线数量的步骤包括:
[0014I获取所述分布式存储系统的meta信息,其中,所述meta信息中记录了所述分布式存储系统中各分片的副本的在线状态;
[0015]在所述meta信息中查找所述目标分片的副本的在线状态;以及
[0016]根据所述目标分片的副本的在线状态,确定所述目标分片的副本的在线数量。
[0017]可选地,若所述meta信息存储在所述分布式存储系统的一个或多个节点,当所述一个或多个节点中的任意一个节点上的分片的副本的在线状态发生变化时,对应修改该任意一个节点的meta信息,并广播给所述一个或多个节点中的其它节点,同步修改该其它节点上的meta信息;
[0018]所述获取所述分布式存储系统的meta信息的步骤包括:
[0019]从所述一个或多个节点处获取所述meta信息。
[0020]可选地,所述meta信息中还记录了所述分布式存储系统中各分片的副本存储在哪个节点;
[0021]在确定所述目标分片的副本所在节点出现故障之后,所述方法还包括通过以下步骤确定所述故障节点:
[0022]在所述meta信息中查找所述目标分片的副本所在节点;以及
[0023]根据所述目标分片的副本所在节点以及副本的在线状态,确定所述故障节点。
[0024]可选地,若确定所述目标分片的原主副本所在节点为所述故障节点,则修复所述故障节点上所述目标分片的副本的数据的步骤包括:
[0025]在所述目标分片的当前主副本与所述目标分片的原主副本之间进行数据同步;或者
[0026]在所述目标分片的当前从副本与所述目标分片的原主副本之间进行数据同步。
[0027]可选地,所述在所述目标分片的当前主副本与所述目标分片的原主副本之间进行数据同步的步骤包括:
[0028]获取所述目标分片的当前主副本的第一日志记录以及所述目标分片的原主副本的第二日志记录;
[0029]比较所述第一日志记录和所述第二日志记录,判断是否能够确定出两者的数据同步点;以及
[0030]若确定出所述数据同步点,则根据所述数据同步点,在所述目标分片的当前主副本与所述目标分片的原主副本间进行数据同步。
[0031 ]可选地,所述根据所述数据同步点,在所述目标分片的当前主副本与所述目标分片的原主副本间进行数据同步的步骤包括:
[0032]根据所述数据同步点,确定存在于所述第一日志记录、且未存在于所述第二日志记录的第一日志记录增量,以及未存在于所述第一日志记录、且存在于所述第二日志记录的第二日志记录增量;以及
[0033]在所述目标分片的原主副本中执行所述第一日志记录增量对应的操作,以及在所述目标分片的当前主副本中执行所述第二日志记录增量对应的操作。
[0034]可选地,在比较所述第一日志记录和所述第二日志记录,判断是否能够确定出两者的数据同步点之后,所述方法还包括:
[0035]若未确定出所述数据同步点,则获取所述目标分片的当前主副本上的所有数据;以及
[0036]将所述目标分片的原主副本上的数据替换为获取的所述所有数据,以及将所述目标分片的原主副本的所述第二日志记录替换为所述第一日志记录,并在所述目标分片的原主副本中执行所述第一日志记录对应的操作。
[0037]可选地,在比较所述第一日志记录和所述第二日志记录,判断是否能够确定出两者的数据同步点之后,所述方法还包括:
[0038]若未确定出所述数据同步点,则将所述目标分片的原主副本的所述第二日志记录替换为所述第一日志记录,并在所述目标分片的原主副本中执行所述第一日志记录对应的操作。
[0039]可选地,在修复所述目标分片的原主副本的数据之后,所述方法还包括:
[0040]将所述目标分片的原主副本,以所述目标分片的当前主副本的从副本的身份加入所述分布式存储系统。
[0041 ]可选地,若确定所述目标分片的原从副本所在节点为所述故障节点,则修复所述故障节点上所述目标分片的副本的数据的步骤包括:
[0042]将所述目标分片的当前主副本的数据同步至所述目标分片的原从副本。
[0043]可选地,所述监测目标分片的副本的在线数量的步骤包括:
[0044]以广播的方式向所述分布式存储系统的各节点发送查找所述目标分片的副本的请求,所述请求中携带有所述目标分片的副本的标识;
[0045]接收所述各节点返回的响应信息;以及
[0046]根据所述响应信息确定所述目标分片的副本的在线数量。
[0047]可选地,当所述目标分片包括多个时,所述监测目标分片的副本的在线数量的步骤包括:
[0048]按照指定的顺序,依次对多个目标分片的副本的在线数量进行监测。
[0049]依据本发明的另一方面,还提供了一种分布式存储系统数据修复的装置,包括:
[0050]监测模块,适于监测目标分片的副本所在节点是否出现故障,其中,所述目标分片具有用于接收并响应数据请求的主副本和用于同步该主副本的数据操作的从副本,所述主副本和所述从副本位于分布式存储系统的不同节点;
[0051]进程重启模块,适于若监测到所述目标分片的副本所在节点出现故障,重新启动与所述目标分片的副本对应的进程;以及
[0052]数据修复模块,适于修复所述故障节点上所述目标分片的副本的数据。
[0053]可选地,所述监测模块还适于:
[0054]监测目标分片的副本的在线数量;以及
[0055]当监测到所述目标分片的副本的在线数量与预设数量不一致时,确定所述目标分片的副本所在节点出现故障。
[0056]可选地,所述监测模块还适于:
[0057]获取所述分布式存储系统的meta信息,其中,所述meta信息中记录了所述分布式存储系统中各分片的副本的在线状态;
[0058]在所述meta信息中查找所述目标分片的副本的在线状态;以及
[0059]根据所述目标分片的副本的在线状态,确定所述目标分片的副本的在线数量。
[0060]可选地,若所述meta信息存储在所述分布式存储系统的一个或多个节点,当所述一个或多个节点中的任意一个节点上的分片的副本的在线状态发生变化时,对应修改该任意一个节点的meta信息,并广播给所述一个或多个节点中的其它节点,同步修改该其它节点上的meta信息;
[0061 ] 所述监测模块还适于:
[0062]从所述一个或多个节点处获取所述meta信息。
[0063]可选地,所述meta信息中还记录了所述分布式存储系统中各分片的副本存储在哪个节点;
[0064]所述装置还包括故障节点确定模块,适于:
[0065]在所述meta信息中查找所述目标分片的副本所在节点;以及
[0066]根据所述目标分片的副本所在节点以及副本的在线状态,确定所述故障节点。
[0067]可选地,若所述故障节点确定模块确定所述目标分片的原主副本所在节点为所述故障节点,所述数据修复模块还适于:
[0068]在所述目标分片的当前主副本与所述目标分片的原主副本之间进行数据同步;或者
[0069]在所述目标分片的当前从副本与所述目标分片的原主副本之间进行数据同步。
[0070]可选地,所述数据修复模块还适于:
[0071]获取所述目标分片的当前主副本的第一日志记录以及所述目标分片的原主副本的第二日志记录;
[0072]比较所述第一日志记录和所述第二日志记录,判断是否能够确定出两者的数据同步点;以及
[0073]若确定出所述数据同步点,则根据所述数据同步点,在所述目标分片的当前主副本与所述目标分片的原主副本间进行数据同步。
[0074]可选地,所述数据修复模块还适于:
[0075]根据所述数据同步点,确定存在于所述第一日志记录、且未存在于所述第二日志记录的第一日志记录增量,以及未存在于所述第一日志记录、且存在于所述第二日志记录的第二日志记录增量;以及
[0076]在所述目标分片的原主副本中执行所述第一日志记录增量对应的操作,以及在所述目标分片的当前主副本中执行所述第二日志记录增量对应的操作。
[0077]可选地,所述数据修复模块还适于:
[0078]若未确定出所述数
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1