一种数据存储方法以及数据存储装置与流程

文档序号:12463877阅读:231来源:国知局
一种数据存储方法以及数据存储装置与流程

本申请涉及计算机领域,尤其涉及一种数据存储方法以及数据存储装置。



背景技术:

分布式存储系统是超融合基础架构的核心组件之一,数据被分散存储在多台独立的存储设备上,存储设备之间通过网络互联并且通过传递消息实现协同工作。分布式存储系统采用可扩展的系统架构,利用多台存储服务器分担存储负载,利用位置服务器或者一致性哈希等算法定位数据。为了保证分布式存储系统中各副本的数据一致性,分布式存储系统采取了法定人数(英文名称:Quorum)机制。即每一次写请求都必须得到Quorum的确认才可以最终执行成功。Quorum一般代表了分布式存储系统中的大多数(例如,三副本的情况下,Quorum至少包含2个副本),任意2个Quorum之间的交集不为空。因此,当发生网络分区时,不可能同时存在2个分区满足Quorum的条件,最多只有1个分区可以继续写入。

在高可用的分布式存储系统中,为了减少副本的存储成本,仲裁机制在现有副本的基础上引入虚拟副本,虚拟副本不记录副本数据,只记录少量的副本元数据,并且参与Quorum的构建。仲裁机制通过设置虚拟副本,在保证一致性的前提下减少了副本的存储开销,但是当副本出现交替离线时,由于虚拟副本没有存储数据,导致交替离线的副本无法完成数据修复,从而无法和虚拟副本组成Quorum,因此所有写请求都会失败,导致系统不可用。



技术实现要素:

本申请实施例提供了一种数据存储方法以及数据存储装置,用于有效避免副本交替离线造成的系统不可用状态,提高数据存储装置的可用性。

第一方面,本申请实施例提供一种数据存储方法,包括:

该数据存储装置发送正常写请求该数据副本和该虚拟副本;该数据存储装置接收该数据副本和该虚拟副本发送的第一反馈信息;若该第一反馈信息指示该数据副本和该虚拟副本执行该正常写请求成功且该数据副本中存在第一离线副本,则该数据存储装置向该虚拟副本发送携带第一指控信息的指控写请求,以使得该虚拟副本将该第一指控信息进行存储,该第一指控信息包括该正常写请求的数据和该第一离线副本的信息;若该携带第一指控信息的指控写请求执行成功,当该第一离线副本恢复在线时,该数据存储装置根据该正常写请求的数据恢复该第一离线副本。

可选的,该正常写请求包括携带真实数据的写请求和不携带真实数据的写请求,该数据存储装置发送正常写请求该数据副本和该虚拟副本包括:该数据存储装置将该携带真实数据的写请求发送给该数据副本以及将该不携带真实数据的写请求发送给该虚拟副本。

可选的,该方法还包括:该数据存储装置向该数据副本中的第一在线副本发送携带该第一指控信息的指控写请求;

该数据存储装置根据该正常写请求的数据恢复该第一离线副本包括:

若该虚拟副本执行该携带第一指控信息的指控写请求成功,则该数据存储装置根据该虚拟副本中的该正常写请求的数据恢复该第一离线副本;若该虚拟副本执行该携带第一指控信息的指控写请求失败,则该数据存储装置在该第一在线副本中任意选择该正常写请求的数据恢复该第一离线副本。

可选的,该方法还包括:

若该第一离线副本离线时长超过预定时长或该虚拟副本存储的数据体积大于预设体积,且该虚拟副本在线,则该数据存储装置将该第一离线副本降级为虚拟副本以及将该虚拟副本根据该第一在线副本的数据升级为数据副本。

可选的,在该第一离线副本恢复在线且该数据存储装置正在修复该第一离线副本时,该方法还包括:

该数据存储装置向该数据副本和该虚拟副本发送修复写请求,该数据副本中的该第一离线副本接收的该修复写请求携带有第二指控信息,该第二指控信息包括该修复写请求的数据以及用于指示该第一离线副本在数据修复完成之后执行该修复写请求;

该数据存储装置接收该数据副本和该虚拟副本发送的第二反馈信息;

若该第二反馈信息指示该数据副本和该虚拟副本执行该修复写请求成功且该数据副本存在第二离线副本,则该数据存储装置向该虚拟副本发送携带第三指控信息的指控写请求,该第三指控信息包括该修复写请求的数据和该第二离线副本的信息;

若该携带第三指控信息的指控写请求执行成功,当该第二离线副本恢复在线时,该数据存储装置根据该修复写请求的数据恢复该第二离线副本。

可选的,该数据存储装置根据该正常写请求的数据修复该第一离线副本之前,该方法还包括:

该数据存储装置向该数据副本的第一在线副本和该虚拟副本发送降级写请求,该降级写请求包括第四指控信息,该第四指控信息包括该第一离线副本的信息和该降级写请求的数据;

该数据存储装置接收该第一在线副本和该虚拟副本发送的第三反馈信息;

若该第三反馈信息指示该第一在线副本与该虚拟副本中超过半数副本执行该降级写请求成功,则该数据存储装置确定该降级写请求执行成功。

第二方面,本申请实施例提供一种数据存储装置,该数据存储装置具有实现上述方法中数据存储装置的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。

一种可能实现方式中,该数据存储装置包括:

第一发送模块,用于发送正常写请求到该数据副本和该虚拟副本;

第一接收模块,用于接收该数据副本和该虚拟副本发送的第一反馈信息;

第二发送模块,用于若该接收模块接收到的该第一反馈信息指示该数据副本和该虚拟副本执行该正常写请求成功且该数据副本中存在第一离线副本,则向该虚拟副本发送携带第一指控信息的指控写请求,以使得该虚拟副本将该第一指控信息进行存储,该第一指控信息包括该正常写请求的数据和该第一离线副本的信息;

第一修复模块,用于若该携带第一指控信息的指控写请求执行成功,当该第一离线副本恢复在线时,根据该正常写请求的数据恢复该第一离线副本。

可选的,该正常写请求包括携带真实数据的写请求和不携带真实数据的写请求,该第一发送模块包括:

发送单元,用于将该携带真实数据的写请求发送给该数据副本以及将该不携带真实数据的写请求发送给该虚拟副本。

可选的,该数据存储装置还包括:

第三发送模块,用于向该数据副本中的第一在线副本发送携带该第一指控信息的指控写请求;

该第一修复模块包括:

第一恢复单元,用于若该虚拟副本执行该携带第一指控信息的指控写请求成功,则根据该虚拟副本中的该正常写请求的数据恢复该第一离线副本;

第二恢复单元,用于若该虚拟副本执行该携带第一指控信息的指控写请求失败,则在该第一在线副本中任意选择该正常写请求的数据恢复该第一离线副本。

可选的,该数据存储装置还包括:

处理模块,用于若该第一离线副本离线时长超过预定时长或所述虚拟副本存储的数据体积大于预设体积,且该虚拟副本在线,则将该第一离线副本降级为虚拟副本以及将该虚拟副本根据该第一在线副本的数据升级为数据副本。

可选的,在该第一离线副本恢复在线且该数据存储装置正在修复该第一离线副本时,该数据存储装置还包括:

第四发送模块,用于向该数据副本和该虚拟副本发送修复写请求,该数据副本中的该第一离线副本接收的该修复写请求携带有第二指控信息,该第二指控信息包括该修复写请求的数据以及用于指示该第一离线副本在数据修复完成之后执行该修复写请求;

第二接收模块,用于接收该数据副本和该虚拟副本发送的第二反馈信息;

第五发送模块,用于第若该第二反馈信息指示该数据副本和该虚拟副本执行该修复写请求成功且该数据副本存在第二离线副本,则向该虚拟副本发送携带第三指控信息的指控写请求,该第三指控信息包括该修复写请求的数据和该第二离线副本的信息;

第二修复模块,用于若该携带第三指控信息的指控写请求执行成功,当该第二离线副本恢复在线时,根据该修复写请求的数据恢复该第二离线副本。

可选的,该数据存储装置还包括:

第六发送模块,用于向该数据副本的第一在线副本和该虚拟副本发送降级写请求,该降级写请求包括第四指控信息,该第四指控信息包括该第一离线副本的信息和该降级写请求的数据;

第三接收模块,用于接收该第一在线副本和该虚拟副本发送的第三反馈信息;

确定模块,用于若该第三反馈信息指示该第一在线副本与该虚拟副本中超过半数副本执行该降级写请求成功,则确定该降级写请求执行成功。

另一种可能实现方式中,该数据存储装置包括:

收发器,处理器,以及总线;

该收发器与该处理器通过该总线相连;

该收发器,执行如下步骤:

发送正常写请求该数据副本和该虚拟副本;接收该数据副本和该虚拟副本发送的第一反馈信息;若该第一反馈信息指示该数据副本和该虚拟副本执行该正常写请求成功且该数据副本中存在第一离线副本,则向该虚拟副本发送携带第一指控信息的指控写请求,以使得该虚拟副本将该第一指控信息进行存储,该第一指控信息包括该正常写请求的数据和该第一离线副本的信息;

该处理器,执行如下步骤:

若该携带第一指控信息的指控写请求执行成功,当该第一离线副本恢复在线时,根据该正常写请求的数据恢复该第一离线副本。

第三方面,本申请实施例提供一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码用于指示执行上述第一方面的方法。

从以上技术方案可以看出,本申请实施例具有以下优点:该数据存储装置在确定该数据副本和该虚拟副本执行正常写请求成功的情况下,若该数据存储装置确定该数据副本中存在该第一离线副本,则该数据存储装置将向该虚拟副本发送携带该第一指控信息指控写请求,该虚拟副本将该第一指控信息进行存储,该第一指控信息包括该正常写请求的数据以及该第一离线副本的信息;在该数据存储装置确定携带该第一指控信息的指控写请求成功的情况下,当该第一离线副本恢复在线时,该数据存储装置根据该正常写请求的数据以及该第一离线副本的信息恢复该第一离线副本。即该数据存储装置发现出现离线副本时,该数据存储装置都会通知虚拟副本进行数据和离线副本的信息存储,当离线副本上线时,该虚拟副本可以对该离线副本进行数据恢复,即该虚拟副本可以与数据副本组成Quorum,进而有效的避免了数据副本交替离线造成的系统不可用状态,提高了数据存储装置的可用性。

附图说明

图1为本申请实施例中数据存储方法的一个实施例示意图;

图2为本申请实施例中数据存储装置的一个实施例示意图;

图3为本申请实施例中数据存储装置的另一个实施例示意图;

图4为本申请实施例中数据存储装置的另一个实施例示意图;

图5为本申请实施例中数据存储装置的另一个实施例示意图。

具体实施方式

本申请实施例提供了一种数据存储方法以及数据存储装置,用于有效避免副本交替离线造成的系统不可用状态,提高数据存储装置的可用性。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

分布式存储系统是超融合基础架构的核心组件之一,数据被分散存储在多台独立的存储设备上,存储设备之间通过网络互联并且通过传递消息实现协同工作。分布式存储系统采用可扩展的系统架构,利用多台存储服务器分担存储负载,利用位置服务器或者一致性哈希等算法定位数据。为了保证分布式存储系统中各副本的数据一致性,分布式存储系统采取了法定人数(英文名称:Quorum)机制。即每一次写请求都必须得到Quorum的确认才可以最终执行成功。Quorum一般代表了分布式存储系统中的大多数(例如,三副本的情况下,Quorum至少包含2个副本),任意2个Quorum之间的交集不为空。因此,当发生网络分区时,不可能同时存在2个分区满足Quorum的条件,最多只有1个分区可以继续写入。在高可用的分布式存储系统中,为了减少副本的存储成本,仲裁机制在现有副本的基础上引入虚拟副本,虚拟副本不记录副本数据,只记录少量的副本元数据,并且参与Quorum的构建。仲裁机制通过设置虚拟副本,在保证一致性的前提下减少了副本的存储开销,但是当副本出现交替离线时,由于虚拟副本没有存储数据,导致交替离线的副本无法完成数据修复,从而无法和虚拟副本组成Quorum,因此所有写请求都会失败,导致系统不可用。

为了解决这一问题,本申请实施例提供了如下技术方案:该数据存储装置发送正常写请求该数据副本和该虚拟副本;该数据存储装置接收该数据副本和该虚拟副本发送的第一反馈信息;若该第一反馈信息指示该数据副本和该虚拟副本执行该正常写请求成功且该数据副本中存在第一离线副本,则该数据存储装置向该虚拟副本发送携带第一指控信息的指控写请求,以使得该虚拟副本将该第一指控信息进行存储,该第一指控信息包括该正常写请求的数据和该第一离线副本的信息;若该携带第一指控信息的指控写请求执行成功,当该第一离线副本恢复在线时,该数据存储装置根据该正常写请求的数据恢复该第一离线副本。

本申请实施例应用于包括数据存储装置,数据副本和虚拟副本的分布式存储系统中。其中本申请实施例中的数据存储装置为分布式存储系统中的存储服务器,用于发布存储指令;本申请实施例中的数据副本和虚拟副本为分布式存储系统中的存储设备,其中该数据副本与该虚拟副本分别为各自独立的存储设备。

具体请参阅图1所示,本申请实施例中数据存储方法的一个实施例,包括:

101、数据存储装置向数据副本和虚拟副本分发正常写请求。

在数据存储装置在确定数据副本与虚拟副本全都在线的情况下,在分布式存储系统中待存储数据时,该数据存储装置向该分布式存储系统中的数据副本和虚拟副本发送正常写请求,该正常写请求携带该待存储数据。

在实际应用中,该数据存储装置在向该分布式存储系统中的数据副本和虚拟副本发送正常写请求之前,该数据存储装置会向该数据副本和该虚拟副本发送加锁请求,用于避免多个进程修改一个文件,若该数据副本和该虚拟副本执行该加锁请求成功,则该数据存储装置再向该数据副本和该虚拟副本发送该正常写请求。

同时,为了减少网络带宽,该数据存储装置发送给该虚拟副本的正常写请求可以不包含该待存储数据。

102、数据副本和虚拟副本向数据存储装置发送第一反馈信息。

该数据副本与该虚拟副本接收到该数据存储装置发送的正常写请求之后,该数据副本和该虚拟副本开始执行该正常写请求,并分别向该数据存储装置发送第一反馈信息。该第一反馈信息用于指示该数据副本与该虚拟副本执行该正常写请求的具体结果。

103、若第一反馈信息指示正常写请求执行成功,则数据存储装置判断该数据副本中是否存在第一离线副本,若否,则执行步骤104,若是,则执行步骤105至步骤106。

该数据存储装置在接收到该数据副本和该虚拟副本反馈的第一反馈信息之后,解析该第一反馈信息得到该数据副本和该虚拟副本执行该正常写请求的具体结果。若该第一反馈信息指示该数据副本和该虚拟副本执行该正常写请求成功,则该数据存储装置判断该数据副本中是否存在该第一离线副本,若否,则该数据存储装置执行步骤104,若是,则该数据存储装置执行步骤105至106。

在实际应用中,该数据存储装置根据该第一反馈信息判断该数据副本与该虚拟副本的写请求是否成功通常是利用Quorum机制进行判断,即该数据副本与该虚拟副本中超过半数的副本执行该写请求成功,即该数据存储装置确定该写请求执行成功;若该数据副本与该虚拟副本中未到半数的副本执行该写请求失败,则该数据存储装置确定该写请求执行失败。

104、数据存储装置反馈执行正常写请求成功。

该第一反馈信息指示该数据副本与该虚拟副本执行该正常写请求成功且该数据副本中不存在离线副本,该数据存储装置反馈执行该正常写请求写成功的信息给该分布式存储系统。

105、数据存储装置向虚拟副本发送携带第一指控信息的指控写请求。

该第一反馈信息指示该数据副本与该虚拟副本执行该正常写请求成功且该数据副本中存在第一离线副本,该数据存储装置向该虚拟副本发送携带第一指控信息的指控写请求,该第一指控信息包括该正常写请求的数据和该第一离线副本的信息。

在实际应用中,该数据存储装置还可以向该数据副本中的第一在线副本发送携带该第一指控信息的指控写请求,使得该数据副本中的第一在线副本与该虚拟副本同进执行该指控写请求。由于该第一在线副本已经执行该正常写请求成功,即该第一在线副本已存储有该正常写请求的数据,则该数据存储装置为节省带宽,发送给该第一在线副本的携带第一指控信息的指控写请求中可以不包括该正常写请求的数据。同时该第一指控信息中不仅包括该正常写请求的数据和该第一离线副本的信息,还可以包括事件记录标识,该事件记录标识用于该虚拟副本和该第一在线副本记录该第一离线副本。

106、若携带第一指控信息的指控写请求执行成功,当第一离线副本恢复在线时,数据存储装置根据第一指控信息恢复第一离线副本。

该数据存储装置在该虚拟副本执行该携带第一指控信息的指控写请求成功的情况下,若检测到该第一离线副本恢复在线,则该数据存储装置指示该虚拟副本根据该第一指控信息对该第一离线副本进行数据恢复。

在实际应用中,若该数据存储装置还向该第一在线副本发送了该携带第一指控信息的指控写请求,则该数据存储装置在检测到该第一离线副本恢复在线时,还可以采用如下方式恢复该第一离线副本:

一种可能实现方式中,若该虚拟副本执行该携带第一指控信息的指控写请求成功,则该数据存储装置根据该虚拟副本中的该正常写请求的数据恢复该第一离线副本;

另一种可能实现方式中,若该虚拟副本执行该携带第一指控信息的指控写请求失败,则该数据存储装置在该第一在线副本中任意选择该正常写请求的数据恢复该第一离线副本。

可选的,若该第一离线副本离线时长超过预定时长或该虚拟副本存储的数据体积大于预设体积,且该虚拟副本在线,即该虚拟副本存储了很多的数据,这时该数据存储装置可以将该第一离线副本降级为虚拟副本,同时该数据存储装置指示该虚拟副本将该第一在线副本的数据全部进行存储,进而升级为数据副本。

在实际应用中,通常还会出现该第一离线副本正在进行数据恢复,而该数据存储装置发现又将进行另一数据的存储,这时该数据存储装置可以执行如下步骤从而保证数据的一致性和数据的有序性,具体情况如下:

该数据存储装置向该数据副本和该虚拟副本发送数据存储的修复写请求。其中由于该第一离线副本正在进行数据恢复,则该数据存储装置发送给该第一离线副本的修复写请求中携带指控信息,该指控信息用于指示该第一离线副本暂时不能写入该修复写请求。当该第一离线副本恢复完成之后,该第一离线副本再执行该修复写请求并向该数据存储装置发送反馈信息。当该修复写请求成功时,该数据存储装置判断该数据副本中是否存在第二离线副本,若存在,则向该虚拟副本发送携带第三指控信息的指控写请求,所述第三指控信息包括所述修复写请求的数据和所述第二离线副本的信息,然后在该第二离线副本恢复在线以及该携带第三指控信息的指控写请求执行成功时,该数据存储装置根据该第三指控信息恢复该第二离线副本;若不存在,则该数据存储装置反馈该修复写请求执行成功。

为了方便理解,本申请实施例中以一个具体的场景进行描述:

假设该分布式存储系统中包括两个数据副本和一个虚拟副本以及数据存储装置,其中数据副本为副本1,副本2,虚拟副本为副本3。若该分布式存储系统中存在待存储数据时,该数据存储装置执行正常写流程如下:

在实际应用中,首先该数据存储装置将会向该副本1,副本2以及副本3发送加锁请求,如果失败就返回写失败或者阻塞等待加锁成功;然后若副本1,副本2以及副本3执行该加锁请求成功,则该数据存储装置向该副本1,副本2以及副本3发送写请求,为了减少网络带宽,该数据存储装置发送给副本3的写请求不包含真实数据;在该副本1,副本2以及副本3执行该写请求之后,该副本1,副本2以及副本3分别向该数据存储装置发送反馈信息。该数据存储装置对该反馈信息执行Quorum检查,如果该副本1,副本2以及副本3的反馈信息都指示执行写请求成功或者该副本1,副本2以及副本3的反馈信息指示执行写请求成功的副本有两个,则此次待存储数据已成功存储;如果副本1,副本2以及副本3的反馈信息指示执行写请求成功的副本不到2个,则此次待存储数据存储失败,结束写请求;如果副本1,副本2以及副本3的反馈信息指示执行写请求成功的副本为2个,且这两个副本为副本2和副本3或这两个副本为副本1和副本3,则该数据存储装置开始执行指控流程;如果副本1,副本2以及副本3的反馈信息指示执行写请求成功的副本为2个,且这两个副本为副本1和副本2,则该数据存储装置执行正常写流程。

假设本申请实施例中副本1在执行写请求的过程中离线,该数据存储装置执行指控流程如下:

在实际应用中,首先该数据存储装置将会向副本2以及副本3发送加锁请求,如果失败就返回写失败或者阻塞等待加锁成功;然后若副本2以及副本3执行该加锁请求成功,则该数据存储装置向副本2以及副本3发送写请求,为了减少网络带宽,该数据存储装置发送给副本2的写请求不包含真实数据;在副本2以及副本3执行该写请求之后,副本2以及副本3分别向该数据存储装置发送反馈信息。该数据存储装置对该反馈信息执行Quorum检查,如果副本2以及副本3的反馈信息都指示执行写请求成功,则此次待存储数据已成功存储,结束写请求;如果副本2以及副本3的反馈信息指示执行写请求成功的副本不到2个,则此次待存储数据存储失败,结束写请求。若该副本1一直离线,而该分布式存储系统中出现待存储数据时,该数据存储装置将副本2与副本3执行降级写流程,即将该分布式存储系统当作只有副本2与副本3的情况进行写流程,但是在此过程中,该副本3接收到的写请求为包括了真实数据的写请求以及指控信息,该指控信息指示该副本1处于离线状态。然后在本申请实施例的副本1恢复在线时,该数据存储装置可以根据该副本3中的数据恢复该副本1的数据从而保持数据的一致性。若该副本1离线的时间超过预设时长,如三小时;或者该副本3的数据体积大于预设体积,如30兆时,该数据存储装置可以将该副本1降级为虚拟副本并将该副本3升级为数据副本,即该副本1在恢复在线后具有之前副本3的功能,该副本3具有之前副本1的功能。

假设在该副本1正在进行数据恢复时,该分布式存储系统又出现待存储数据,则该数据存储装置将执行修复写流程如下:

在实际应用中,首先该数据存储装置将会向该副本1,副本2以及副本3发送加锁请求,如果失败就返回写失败或者阻塞等待加锁成功;然后若副本1,副本2以及副本3执行该加锁请求成功,则该数据存储装置向该副本1,副本2以及副本3发送写请求,为了减少网络带宽,该数据存储装置发送给副本3的写请求不包含真实数据,由于该副本1正在恢复数据,则该副本1接收到的写请求中携带有指控信息,用于表示该副本1暂时未写入该写请求并包括了该写请求的数据;在该副本1,副本2以及副本3执行该写请求之后,该副本1,副本2以及副本3分别向该数据存储装置发送反馈信息。该数据存储装置对该反馈信息执行Quorum检查,如果该副本1,副本2以及副本3的反馈信息都指示执行写请求成功或者该副本1,副本2以及副本3的反馈信息指示执行写请求成功的副本有两个,则此次待存储数据已成功存储;如果副本1,副本2以及副本3的反馈信息指示执行写请求成功的副本不到2个,则此次待存储数据存储失败,结束写请求;如果副本1,副本2以及副本3的反馈信息指示执行写请求成功的副本为2个,则该数据存储装置开始执行指控流程。

在实际应用中,各副本中还包括指控日志,该指控日志用于各副本记录离线副本的信息,这样可以有效的保证数据的顺序以及保证数据的一致性。

本实施例中,该数据存储装置在确定该数据副本和该虚拟副本执行正常写请求成功的情况下,若该数据存储装置确定该数据副本中存在该第一离线副本,则该数据存储装置将向该虚拟副本发送携带该第一指控信息指控写请求,该虚拟副本将该第一指控信息进行存储,该第一指控信息包括该正常写请求的数据以及该第一离线副本的信息;在该数据存储装置确定携带该第一指控信息的指控写请求成功的情况下,当该第一离线副本恢复在线时,该数据存储装置根据该正常写请求的数据以及该第一离线副本的信息恢复该第一离线副本。即该数据存储装置发现出现离线副本时,该数据存储装置都会通知虚拟副本进行数据和离线副本的信息存储,当离线副本上线时,该虚拟副本可以对该离线副本进行数据恢复,即该虚拟副本可以与数据副本组成Quorum,进而有效的避免了数据副本交替离线造成的系统不可用状态,提高了数据存储装置的可用性。

上面对本申请实施例中的数据存储方法进行描述,下面对本申请实施例中的数据存储装置进行描述。

具体请参阅图2,本申请实施例中的数据存储装置的一个实施例中,该数据存储装置包括:

第一发送模块201,用于发送正常写请求该数据副本和该虚拟副本;

第一接收模块202,用于接收该数据副本和该虚拟副本发送的第一反馈信息;

第二发送模块203,用于若该接收模块接收到的该第一反馈信息指示该数据副本和该虚拟副本执行该正常写请求成功且该数据副本中存在第一离线副本,则向该虚拟副本发送携带第一指控信息的指控写请求,以使得该虚拟副本将该第一指控信息进行存储,该第一指控信息包括该正常写请求的数据和该第一离线副本的信息;

第一修复模块204,用于若该携带第一指控信息的指控写请求执行成功,当该第一离线副本恢复在线时,根据该正常写请求的数据恢复该第一离线副本。

可选的,该正常写请求包括携带真实数据的写请求和不携带真实数据的写请求,该第一发送模块201包括:

发送单元,用于将该携带真实数据的写请求发送给该数据副本以及将该不携带真实数据的写请求发送给该虚拟副本。

可选的,该数据存储装置还包括:

第三发送模块205,用于向该数据副本中的第一在线副本发送携带该第一指控信息的指控写请求;

该第一修复模块204包括:

第一恢复单元,用于若该虚拟副本执行该携带第一指控信息的指控写请求成功,则根据该虚拟副本中的该正常写请求的数据恢复该第一离线副本;

第二恢复单元,用于若该虚拟副本执行该携带第一指控信息的指控写请求失败,则在该第一在线副本中任意选择该正常写请求的数据恢复该第一离线副本。

可选的,该数据存储装置还包括:

处理模块206,用于若该第一离线副本离线时长超过预定时长或该虚拟副本存储的数据体积大于预设体积,且该虚拟副本在线,则将该第一离线副本降级为虚拟副本以及将该虚拟副本根据该第一在线副本的数据升级为数据副本。

可选的,在该第一离线副本恢复在线且该数据存储装置正在修复该第一离线副本时,基于图2所示的数据存储装置,该数据存储装置如图3所示:

第四发送模块207,用于向该数据副本和该虚拟副本发送修复写请求,该数据副本中的该第一离线副本接收的该修复写请求携带有第二指控信息,该第二指控信息包括该修复写请求的数据以及用于指示该第一离线副本暂未执行该修复写请求;

第二接收模块208,用于接收该数据副本和该虚拟副本发送的第二反馈信息;

第五发送模块209,用于第若该第二反馈信息指示该数据副本和该虚拟副本执行该修复写请求成功且该数据副本存在第二离线副本,则向该虚拟副本发送携带第三指控信息的指控写请求,该第三指控信息包括该修复写请求的数据和该第二离线副本的信息;

第二修复模块210,用于若该携带第三指控信息的指控写请求执行成功,当该第二离线副本恢复在线时,根据该修复写请求的数据恢复该第二离线副本。

可选的,在该第一离线副本一直处于离线状态时,若该分布式存储系统存在待存储数据,基于图2所示的数据存储装置,该数据存储装置如图4所示:

第六发送模块211,用于向该数据副本的第一在线副本和该虚拟副本发送降级写请求,该降级写请求包括第四指控信息,该第四指控信息包括该第一离线副本的信息和该降级写请求的数据;

第三接收模块212,用于接收该第一在线副本和该虚拟副本发送的第三反馈信息;

确定模块213,用于若该第三反馈信息指示该第一在线副本与该虚拟副本中

本实施例中,在确定该数据副本和该虚拟副本执行正常写请求成功的情况下,若确定该数据副本中存在该第一离线副本,则该第二发送模块203将向该虚拟副本发送携带该第一指控信息指控写请求,该虚拟副本将该第一指控信息进行存储,该第一指控信息包括该正常写请求的数据以及该第一离线副本的信息;在确定携带该第一指控信息的指控写请求成功的情况下,当该第一离线副本恢复在线时,该第一恢复模块204根据该正常写请求的数据以及该第一离线副本的信息恢复该第一离线副本。即该数据存储装置发现出现离线副本时,该数据存储装置都会通知虚拟副本进行数据和离线副本的信息存储,当离线副本上线时,该虚拟副本可以对该离线副本进行数据恢复,即该虚拟副本可以与数据副本组成Quorum,进而有效的避免了数据副本交替离线造成的系统不可用状态,提高了数据存储装置的可用性。

具体请参阅图5,本申请实施例中数据存储装置的另一个实施例中,该数据存储装置包括:

收发器501和处理器502;该收发器501和该处理器502通过总线503相互连接;

总线503可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

处理器502可以是中央处理器(central processing unit,简称CPU),网络处理器(network processor,简称NP)或者CPU和NP的组合。

处理器502还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,简称ASIC),可编程逻辑器件(programmable logic device,简称PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,简称CPLD),现场可编程逻辑门阵列(field-programmable gate array,简称FPGA),通用阵列逻辑(generic array logic,简称GAL)或其任意组合。

参见图5所示,该数据存储装置还可以包括存储器504;该存储器504可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,简称RAM);存储器也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,简称HDD)或固态硬盘(solid-state drive,简称SSD);存储器504还可以包括上述种类的存储器的组合。

可选地,存储器504还可以用于存储程序指令,处理器502调用该存储器504中存储的程序指令,可以执行图1所示实施例中的一个或多个步骤,或其中可选的实施方式,实现上述方法中数据存储装置行为的功能。

该收发器501,执行如下步骤:

发送正常写请求该数据副本和该虚拟副本;接收该数据副本和该虚拟副本发送的第一反馈信息;若该第一反馈信息指示该数据副本和该虚拟副本执行该正常写请求成功且该数据副本中存在第一离线副本,则向该虚拟副本发送携带第一指控信息的指控写请求,以使得该虚拟副本将该第一指控信息进行存储,该第一指控信息包括该正常写请求的数据和该第一离线副本的信息;

该处理器502,执行如下步骤:

若该携带第一指控信息的指控写请求执行成功,当该第一离线副本恢复在线时,根据该正常写请求的数据恢复该第一离线副本。

可选的,该收发器501,还执行如下步骤:将该携带真实数据的写请求发送给该数据副本以及将该不携带真实数据的写请求发送给该虚拟副本。

可选的,该收发器501,还执行如下步骤:向该数据副本中的第一在线副本发送携带该第一指控信息的指控写请求;

该处理器502,还执行如下步骤:若该虚拟副本执行该携带第一指控信息的指控写请求成功,则根据该虚拟副本中的该正常写请求的数据恢复该第一离线副本;若该虚拟副本执行该携带第一指控信息的指控写请求失败,则在该第一在线副本中任意选择该正常写请求的数据恢复该第一离线副本。

可选的,该处理器502,还执行如下步骤:若该第一离线副本离线时长超过预定时长或所述虚拟副本存储的数据体积大于预设体积,且该虚拟副本在线,则将该第一离线副本降级为虚拟副本以及将该虚拟副本根据该第一在线副本的数据升级为数据副本。

可选的,在该第一离线副本恢复在线且该数据存储装置正在修复该第一离线副本时,该收发器501,还执行如下步骤:向该数据副本和该虚拟副本发送修复写请求,该数据副本中的该第一离线副本接收的该修复写请求携带有第二指控信息,该第二指控信息包括该修复写请求的数据以及用于指示该第一离线副本暂未执行该修复写请求;接收该数据副本和该虚拟副本发送的第二反馈信息;若该第二反馈信息指示该数据副本和该虚拟副本执行该修复写请求成功且该数据副本存在第二离线副本,则向该虚拟副本发送携带第三指控信息的指控写请求,该第三指控信息包括该修复写请求的数据和该第二离线副本的信息;

该处理器502,还执行如下步骤:若该携带第三指控信息的指控写请求执行成功,当该第二离线副本恢复在线时,根据该修复写请求的数据恢复该第二离线副本。

可选的,该收发器501,还执行如下步骤:向该数据副本的第一在线副本和该虚拟副本发送降级写请求,该降级写请求包括第四指控信息,该第四指控信息包括该第一离线副本的信息和该降级写请求的数据;接收该第一在线副本和该虚拟副本发送的第三反馈信息;

该处理器502,还执行如下步骤:若该第三反馈信息指示该第一在线副本与该虚拟副本中超过半数副本执行该降级写请求成功,则确定该降级写请求执行成功。

本实施例中,在处理器502确定该数据副本和该虚拟副本执行正常写请求成功的情况下,若处理器502确定该数据副本中存在该第一离线副本,则收发器501将向该虚拟副本发送携带该第一指控信息指控写请求,该虚拟副本将该第一指控信息进行存储,该第一指控信息包括该正常写请求的数据以及该第一离线副本的信息;在处理器502确定携带该第一指控信息的指控写请求成功的情况下,当该第一离线副本恢复在线时,该处理器502根据该正常写请求的数据以及该第一离线副本的信息恢复该第一离线副本。即该数据存储装置发现出现离线副本时,该数据存储装置都会通知虚拟副本进行数据和离线副本的信息存储,当离线副本上线时,该虚拟副本可以对该离线副本进行数据恢复,即该虚拟副本可以与数据副本组成Quorum,进而有效的避免了数据副本交替离线造成的系统不可用状态,提高了数据存储装置的可用性。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

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

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

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

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

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