首页 / 专利库 / 人工智能 / 树形结构 / 一种快照回滚方法及装置

一种快照回滚方法及装置

阅读:1040发布:2020-05-22

专利汇可以提供一种快照回滚方法及装置专利检索,专利查询,专利分析的服务。并且一种快照回滚方法及装置,用以提供一种在线快照回滚方式。该方法包括:存储客户端接收主机发送的针对第一逻辑卷的第一快照回滚 请求 后,会生成第二逻辑卷以及存储客户端用于识别该第二逻辑卷的标识,并建立存储系统的主机用于识别第一逻辑卷的标识以及存储客户端用于识别第二逻辑卷的标识的映射关系,这样,在进行快照回滚处理后,即使主机用于识别第一逻辑卷的标识不发生变化,存储客户端也能够通过该映射关系, 访问 到正确的逻辑卷,从而可以实现在线快照回滚,进而可以不用中断对逻辑卷的访问,应用程序的业务不会受到影响。,下面是一种快照回滚方法及装置专利的具体信息内容。

1.一种快照回滚方法,所述方法应用在存储系统中,所述存储系统包括主机、与所述主机通信的存储客户端以及与所述存储客户端连接的存储设备,所述存储设备用于存储数据,其特征在于,包括:
所述存储客户端接收所述主机发送的第一快照回滚请求,所述第一快照回滚请求中包括所述存储设备中的第一逻辑卷的第一标识以及第一快照的标识,所述第一快照回滚请求用于将所述第一逻辑卷中的数据回滚到所述第一快照记录的数据,所述主机通过所述第一标识识别所述第一逻辑卷;
所述存储客户端生成第二逻辑卷,并创建所述第二逻辑卷与所述第一快照的语义关系,所述语义关系用于指示从所述第二逻辑卷或所述第一快照中读取与数据访问请求对应的数据,所述数据访问请求中包括所述第一标识;
所述存储客户端生成与所述第二逻辑卷对应的第二标识,并创建所述第一标识与所述第二标识的映射关系,以使所述主机能够根据所述第一标识以及所述映射关系访问所述第二逻辑卷。
2.根据权利要求1所述的方法,其特征在于,所述存储客户端生成与所述第二逻辑卷对应的第二标识,包括:
所述存储客户端根据所述第一逻辑卷与所述第一快照的语义关系,以及,所述第二逻辑卷与所述第一快照的语义关系,形成包括所述第一逻辑卷、所述第一快照以及所述第二逻辑卷的树形结构
所述存储客户端根据所述树形结构,生成所述第二标识,所述第二标识用于指示所述第二逻辑卷在所述树形结构中的位置
3.根据权利要求2所述的方法,其特征在于,所述第二标识为三元组,所述三元组包括所述树形结构的标识、所述第二逻辑卷在所述树形结构中的分支的标识以及所述第二逻辑卷在所述分支中的位置的标识。
4.根据权利要求1-3中任一项所述的方法,其特征在于,在所述存储客户端创建所述第二逻辑卷与所述第一快照的语义关系之前,所述方法还包括:
所述存储客户端接收第一数据访问请求,所述第一数据访问请求中包括所述第一标识,所述第一数据访问请求是所述存储客户端在接收所述第一快照回滚请求之后接收的;
所述存储客户端对所述第一数据访问请求进行悬挂处理;
所述存储客户端接收与第二数据访问请求对应的反馈消息,所述第二数据访问请求中包括所述第一标识,所述第二数据访问请求是所述存储客户端在接收所述第一快照回滚请求之前接收的。
5.根据权利要求1-4中任一项所述的方法,其特征在于,在所述存储客户端创建所述第一标识与所述第二标识的映射关系之后,所述方法还包括:
所述存储客户端解除对所述第一数据访问请求的悬挂处理;
所述存储客户端根据所述第一数据访问请求从所述第二逻辑卷或所述第一快照中获取数据,或,将向所述第二逻辑卷写入数据。
6.一种快照回滚装置,其特征在于,包括通信接口和处理器,其中:
所述通信接口,接收主机发送的第一快照回滚请求,所述第一快照回滚请求中包括存储设备中的第一逻辑卷的第一标识以及第一快照的标识,所述第一快照回滚请求用于将所述第一逻辑卷中的数据回滚到所述第一快照记录的数据,所述主机通过所述第一标识识别所述第一逻辑卷,所述存储系统包括所述主机和所述存储设备,所述存储设备用于存储数据;
所述处理器,生成第二逻辑卷,并创建所述第二逻辑卷与所述第一快照的语义关系,所述语义关系用于指示从所述第二逻辑卷或所述第一快照中读取与数据访问请求对应的数据,所述数据访问请求中包括所述第一标识;以及,
生成与所述第二逻辑卷对应的第二标识,并创建所述第一标识与所述第二标识的映射关系,以使所述主机能够根据所述第一标识以及所述映射关系访问所述第二逻辑卷。
7.根据权利要求6所述的装置,其特征在于,所述处理器具体用于:
根据所述第一逻辑卷与所述第一快照的语义关系,以及,所述第二逻辑卷与所述第一快照的语义关系,形成包括所述第一逻辑卷、所述第一快照以及所述第二逻辑卷的树形结构;
根据所述树形结构,生成所述第二标识,所述第二标识用于指示所述第二逻辑卷在所述树形结构中的位置。
8.根据权利要求7所述的装置,其特征在于,所述第二标识为三元组,所述三元组包括所述树形结构的标识、所述第二逻辑卷在所述树形结构中的分支的标识以及所述第二逻辑卷在所述分支中的位置的标识。
9.根据权利要求6-8中任一项所述的装置,其特征在于,
所述通信接口还用于:接收第一数据访问请求,所述第一数据访问请求中包括所述第一标识,所述第一数据访问请求是所述存储客户端在接收所述第一快照回滚请求之后接收的;
所述处理器还用于:对所述第一数据访问请求进行悬挂处理;
所述通信接口还用于:接收与第二数据访问请求对应的反馈消息,所述第二数据访问请求中包括所述第一标识,所述第二数据访问请求是所述存储客户端在接收所述第一快照回滚请求之前接收的。
10.根据权利要求6-9中任一项所述的装置,其特征在于,所述处理器还用于:
解除对所述第一数据访问请求的悬挂处理;
根据所述第一数据访问请求从所述第二逻辑卷或所述第一快照中获取数据,或,将向所述第二逻辑卷写入数据。
11.一种计算机存储介质,其特征在于,所述计算机存储介质存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-5任一项所述的方法。
12.一种计算机程序产品,其特征在于,所述计算机程序产品存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-5任一项所述的方法。

说明书全文

一种快照回滚方法及装置

技术领域

[0001] 本申请涉及存储技术领域,尤其涉及一种快照回滚方法及装置。

背景技术

[0002] 随着互联网用户的激增以及业务的多样性发展,越来越多的数据(例如,用户数据、业务配置数据等)需要使用存储系统进行存储,以便用来分析和指导业务。
[0003] 一种常用的存储系统为分布式存储系统。请参考图1,为分布式块存储系统的架构图。如图1所示,分布式块存储系统100包括块存储客户端110、3个块存储服务端120(分别为块存储服务端1~块存储服务端3),每个块存储服务端120包括硬盘设备(图中未示出)。块存储服务端120经过切片、打散等处理,将硬盘设备划分为多个逻辑卷(volume,Vol),然后通过存储客户端110,将划分的多个逻辑卷映射给主机130使用,从而,主机130的操作系统则可以识别该多个逻辑卷。在主机130的操作系统对该多个逻辑卷进行挂载处理后,主机
130中的各个应用程序则可以直接对该多个逻辑卷中的数据进行读写操作。其中,块存储服务端120可以是服务器
[0004] 为了对主机130的数据进行保护,可以在不同的时刻,针对某个逻辑卷创建快照,其中,一个逻辑卷的快照可以理解为记录了某个时刻该逻辑卷中存储的数据(或者可以理解为该逻辑卷在某个时刻存储的数据的副本)。这样,若后续由于业务需要或者系统故障导致数据丢失时,则可以通过快照回滚技术恢复该逻辑卷在该时刻存储的数据。
[0005] 目前,快照回滚技术是离线快照回滚方式,也就是说,在进行快照回滚操作之前,首先需要将进行快照回滚的逻辑卷从操作系统卸载,在卸载完成后,才能进行挂载相应快照时刻的逻辑卷,实现快照回滚,这样,主机130才能访问挂载的相应快照时刻的逻辑卷。可见,现有技术中的快照回滚方式会导致主机业务访问中断。发明内容
[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] 图1为分布式块存储系统的一种示例的架构图;
[0042] 图2为现有技术中采用ROW技术为VolA创建快照的一种示例的示意图;
[0043] 图3为现有技术中应用程序从块存储服务端读取数据的流程图
[0044] 图4为Linux系统的SCSI模型的示意图;
[0045] 图5为现有技术中离线快照回滚方式的流程图;
[0046] 图6为本申请实施例中提供的分布式块存储系统的另一种示例的架构图;
[0047] 图7为本申请实施例提供的一种快照回滚方法的一种示例的流程图;
[0048] 图8为本申请实施例中进行快照回滚操作之前的逻辑卷、逻辑卷的快照以及进行快照回滚操作之后的逻辑卷之间的对应关系的一种示例的示意图;
[0049] 图9为本申请实施例提供的一种快照回滚方法的另一种示例的流程图;
[0050] 图10为本申请实施例提供的一种快照回滚装置的一种示例的结构图;
[0051] 图11为本申请实施例提供的一种快照回滚装置的另一种示例的结构图。

具体实施方式

[0052] 为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合说明书附图以及具体的实施方式对本申请实施例中的技术方案进行详细的说明。
[0053] 为便于理解本申请实施例中的技术方案,下面对本申请所涉及的技术术语进行解释。
[0054] 1)采用写时重定向(redirect on write,ROW)技术创建快照的过程。
[0055] 为方便说明,以图1所示的分布式块存储系统100中的一个逻辑卷(VolA)为例。请参考图2,为采用ROW技术为VolA创建快照的示意图。如图2所示,VolA的存储空间(标记为第一存储空间)中存储9个数据块,分别存储数据块1~数据块9。在第一时刻,块存储客户端110为VolA创建快照,即为VolA重新分配一个新的存储空间(标记为第二存储空间),该第二存储空间也包括9个数据块,并将VolA的第一存储空间更改为VolA的快照(标记为snap A1)的存储空间。然后,块存储客户端110创建VolA和snap A1的快照语义关系,该快照语义关系可以为:在接收读取VolA中的数据的读请求时,如果VolA的存储空间(即第二存储空间)不存在待读取的数据,则从snap A1的存储空间中读取该待读取的数据,以及,在接收向VolA写入新数据的写请求时,将该新数据写入VolA的存储空间(即第二存储空间)。这样,在第二时刻,当块存储客户端110接收对VolA的写请求时,则按照预设的快照语义关系,将待写入数据写入到VolA的第二存储空间中,例如,在第二存储空间的前3个LUN中存储数据块11~数据块13。
[0056] 2)基于ROW技术的快照回滚的过程。
[0057] 沿用图2所示的例子。当块存储客户端110在第三时刻检测到针对VolA的快照回滚的请求时,块存储客户端110首先为VolA重新分配一个新的存储空间(标记为第三存储空间),然后创建VolA的新的存储空间和snap A1的快照语义关系,该快照语义关系为:在接收读取VolA中的数据的读请求时,如果VolA的存储空间(即第三存储空间)不存在待读取的数据,则从snap A1的存储空间中读取该待读取的数据,以及,在接收向VolA写入新数据的写请求时,将该新数据写入VolA的新的存储空间(即第三存储空间)。这样,在第四时刻,当块存储客户端110接收对VolA的写请求时,则按照预设的快照语义关系,将待写入数据写入到VolA的第三存储空间中,当块存储客户端110接收对VolA的读请求时,则按照预设的快照语义关系,先确定该第三存储空间中是否包括待读取的数据,如果没有则从snap A1的存储空间中读取该待读取的数据。
[0058] 3)操作系统,可以是windows操作系统、unix操作系统、linux操作系统、solaris操作系统等,在本申请实施例中不作限制。
[0059] 4)应用程序,可以是基于TCP/IP协议的应用程序,例如,提供超文本传输协议(hyperText transfer protocol,HTTP)服务的应用程序、提供文件传输协议(file transfer protocol,FTP)服务的应用程序、用于测试网络性能(例如,抖动、延时、丢包率等)的iperf应用程序等,在本申请实施例中不作限制。
[0060] 其中,操作系统和应用程序可以运行在主机中。
[0061] 5)分布式块存储系统中应用程序的数据访问过程。
[0062] 数据访问,可以理解为,从块存储服务端中读取数据以及向块存储服务端中写入数据。下面以应用程序从块存储服务端中读取数据为例进行说明。请参考图3,为应用程序从块存储服务端读取数据的流程图,该流程图描述如下:
[0063] S31、应用程序向操作系统发送读请求,操作系统接收该读请求。
[0064] 该读请求中包括数据所在的逻辑卷的标识(例如,逻辑卷的名称或者编号等)。
[0065] S32、操作系统确定与该读请求对应的硬盘设备以及与该硬盘设备对应的四元组。
[0066] 在分布式块存储系统中,作为一种示例,操作系统通过四元组来唯一标识各个块存储服务端包括的逻辑卷。该四元组的具体形式可以根据分布式块存储系统所采用的存储架构对应,例如,若分布式块存储系统采用存储局域网络(storage area network,SAN)架构,该四元组即小型计算机系统接口(small computer system interface,SCSI)四元组,则该四元组可以为(主机适配器(host):通道(channel):目标节点(target):逻辑存储单元(logic unit number,LUN))。在本申请实施例中,LUN可以理解为前述的逻辑卷。当分布式块存储系统使用其他存储架构时,四元组的内容可以对应的发生变化,在此不再赘述。在本申请实施例中,以分布式块存储系统采用SAN架构为例进行说明。
[0067] 在介绍四元组中的内容之前,首先对操作系统中的SCSI模型进行介绍。在下面的介绍中,以操作系统为Linux系统为例进行说明。请参考图4,为Linux系统的SCSI模型的示意图。在图4中,一个主机可以有一个或多个主机适配器,每个主机适配器的一端连接主机输入输出(input/output,I/O)总线(例如,外设部件互连标准(peripheral component interconnect,PCI)总线),另一端则通过通道(channel)连接存储IO总线(例如,SCSI总线)。在图4中,一个主机适配器中包括2个通道,分别为通道1和通道2。一个主机适配器可以控制一条或多条SCSI总线,每条SCSI总线与主机适配器中的一个通道连接,每条SCSI总线可以连接多个分布式块存储系统中的硬盘设备(也可以称为SCSI磁盘)。在图4中,与通道1连接的SCSI硬盘有2个,分别为SCSI硬盘0和SCSI硬盘1。每个硬盘设备可以包括多个LUN。例如,在SCSI硬盘0中包括LUN0和LUN1,在SCSI硬盘1中包括LUN0。
[0068] SCSI四元组中的host用于指示图4所示的SCSI模型中的主机适配器,在图4中仅包括一个主机适配器(标记为host1),当主机中包括多个主机适配器时,可以为每个主机适配器进行编号,该host则为主机适配器的编号。SCSI四元组中的channel用于指示图4所述的主机适配器中与SCSI总线连接的通道,该channel也可以指示通道的编号。SCSI四元组中的target用于指示如图4所示的SCSI模型中与SCSI总线连接的SCSI硬盘。
[0069] 作为一种示例,该四元组可以是在挂载逻辑卷时,由块存储客户端发送给操作系统的;或者,也可以是操作系统在需要访问逻辑卷时,向块存储客户端发送查询请求获取的,在此不作限制。例如,操作系统确定出应用程序要访问的逻辑存储单元的SCSI四元组为(1:1:0:0)。
[0070] S33、操作系统向块存储客户端发送读数据请求,块存储客户端接收该读数据请求。
[0071] 该读数据请求中包括操作系统确定的硬盘设备的标识以及与该硬盘设备对应的四元组。块存储客户端根据该四元组和分布式哈希表(distributed hash table,DHT),确定操作系统需要访问的逻辑卷,并从对应的逻辑卷中读取目标数据。
[0072] S34、块存储客户端将向操作系统发送携带该目标数据的响应消息,操作系统接收该响应消息。
[0073] S35、操作系统从该响应消息中获取该目标数据后,则将该目标数据发送给应用程序。
[0074] 6)在本申请的描述中,“多个”是指两个或两个以上,也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个,例如,包括A、B和C中的至少一个,那么包括的可以是A、B、C、A和B、A和C、B和C、或A和B和C。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
[0075] 除非有相反的说明,本申请中提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
[0076] 下面,对本申请涉及的技术特征进行说明。
[0077] 由前述对基于ROW技术的快照回滚的过程的介绍可知,对某一个逻辑卷进行快照回滚后,该逻辑卷对应的存储空间发生了变化,可以理解为该逻辑卷在硬盘设备中物理位置发生了变化。但是,基于ROW技术的快照回滚的过程中只创建了新的快照语义关系,在这种情况下,若操作系统采用对该逻辑卷进行快照回滚前的四元组进行访问该逻辑卷,自然会发生错误。因此,分布式块存储系统中的应用程序在进行快照回滚时,只能采用离线快照回滚方式。
[0078] 请参考图5,为离线快照回滚方式的流程图,该流程图描述如下:
[0079] S51、应用程序向块存储客户端发送卸载卷请求,块存储客户端接收该卸载卷请求。
[0080] 该卸载卷请求中包括需要卸载的逻辑卷的标识,例如,需要卸载的逻辑卷为VolA。
[0081] S52、块存储客户端从卸载卷请求中确定需要卸载的逻辑卷,并从主机中卸载该逻辑卷,例如,卸载VolA。
[0082] S53、块存储客户端向应用程序反馈卸载卷结果,应用程序接收该卸载卷结果。
[0083] S54、应用程序发送快照回滚卷请求,块存储客户端接收该快照回滚卷请求。
[0084] 该快照回滚卷请求中包括需要进行快照回滚操作的逻辑卷的标识以及对应的快照的标识,例如,需要进行快照回滚操作的逻辑卷为VolA,以及,将该逻辑卷中的数据回滚到第一时刻的快照中存储的数据。
[0085] S55、块存储客户端为需要进行快照回滚操作的逻辑卷重新分配新的存储空间,并建立该新的存储空间与该逻辑卷的快照的存储空间的快照语义关系,完成逻辑卷的快照回滚过程。
[0086] 该快照语义关系与2)中相似,在此不再赘述。
[0087] S56、块存储客户端向应用程序反馈快照回滚卷结果,应用程序接收该快照回滚卷结果。
[0088] S57、应用程序发送挂载卷请求,块存储客户端接收该挂载卷请求。
[0089] 该卸载卷请求中包括需要挂载的逻辑卷的标识,例如,需要挂载的逻辑卷为VolA。
[0090] S58、块存储客户端从挂载卷请求中确定需要挂载的逻辑卷,并将该逻辑卷挂载在主机中。
[0091] S59、块存储客户端向应用程序反馈挂载卷结果,应用程序接收该挂载卷结果。
[0092] 需要说明的是,步骤S53、步骤S56以及步骤S59均为可选步骤,即不是必须执行的。例如,以步骤S53为例,当块存储客户端将逻辑卷卸载后,应用程序将不会显示该逻辑卷,从而,应用程序可以根据是否显示该逻辑卷来确定卸载卷结果。在图5中以虚线表示。
[0093] 由图5可知,现有技术中的快照回滚的过程,在进行快照回滚操作之前,首先需要将进行快照回滚的逻辑卷从操作系统卸载,在卸载完成后,才能进行挂载相应快照时刻的逻辑卷,实现快照回滚,从而会导致主机业务访问中断。
[0094] 鉴于此,本申请实施例提供一种快照回滚方法,用以提供一种在线快照回滚方式。
[0095] 需要说明的是,本申请实施例中的方法可以应用于如图1所示的分布式块存储系统中,也可以应用在其他分布式存储系统中,例如,分布式文件存储系统或者分布式对象系统或者上述存储系统的组合。或者,也可以应用在集中式存储系统中,在此不作限制。
[0096] 另外,在图1所述的分布式块存储系统中,一个主机仅与一个块存储客户端连接,在本申请实施例中,一个主机也可以与多个块存储客户端连接,如图6所示,包括块存储客户端1和块存储客户端2。每个块存储客户端与至少一个块存储服务端连接。
[0097] 需要说明的是,在实际使用中,一个逻辑卷对应的存储空间是分布在整个块存储服务端集群上的,也就是说,一个逻辑卷对应的存储空间可以是分布在多个块存储服务端上的,或者可以分布在所有的块存储服务端上,在此不作限制。
[0098] 另外,需要说明的是,需要进行快照回滚操作的存储系统不限于如图1或图6所示的分布式块存储系统,本申请实施例描述的分布式块存储系统是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着存储技术和存储系统架构的演变,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
[0099] 下面,将以本申请实施例提供的技术方案应用于如图1所示的分布式块存储系统为例。
[0100] 请参考图7,为本申请实施例提供的一种快照回滚方法的流程图,该流程图描述如下:
[0101] S701、应用程序发送逻辑卷创建请求,操作系统接收该逻辑卷创建请求。
[0102] 应用程序可以根据用户的操作(例如,新建操作)或者使用需求,向操作系统发送逻辑卷创建请求,该逻辑卷创建请求中可以包括需要创建的逻辑卷的名称,需要创建的逻辑卷的大小等信息。例如,该逻辑卷创建请求用于创建第一逻辑卷,第一逻辑卷的名称为Vol A,该Vol A的大小为10兆字节(megabytes,MB)或者可以用于存储9个数据块。
[0103] S702、操作系统将该逻辑卷创建请求发送给块存储客户端,块存储客户端接收该逻辑卷创建请求。
[0104] S703、块存储客户端创建与该第一逻辑卷对应的第一卷元数据及第一存储空间。
[0105] 在本申请实施例中,与该第一逻辑卷对应的第一卷元数据可以用于描述该第一逻辑卷在块存储服务端的位置以及该第一逻辑卷的大小等信息,与该第一逻辑卷对应的第一存储空间用于存储该第一逻辑卷的数据。
[0106] 作为一种示例,当块存储客户端接收该逻辑卷创建请求后,可以根据预设的规则,为该逻辑卷创建第一存储空间。作为一种示例,该预设的规则可以是按照顺序依次分配。例如,如图1所示的分布式块存储系统为块存储客户端提供的500吉字节(gigabyte,GB)的存储空间,其中,该块存储客户端中已经存储有30M字节的数据。由于需要创建的逻辑卷的大小为10MB,则块存储客户端将31MB~40MB对应的存储空间分配给该逻辑卷。该31MB~40MB对应的存储空间可以位于图1所示的分布式块存储系统中的块存储服务端1中,或者也可以是分布在多个块存储服务端(例如块存储服务端1和块存储服务端2)中,在此不作限制。
[0107] 作为另一种示例,该预设的规则可以是随机分配。例如,如图1所示的分布式块存储系统为块存储客户端提供的500吉字节(gigabyte,GB)的存储空间,其中,该块存储客户端中已经存储有30M字节的数据。由于需要创建的逻辑卷的大小为10MB,则块存储客户端从剩余的存储空间中随机选择10MB的存储空间分配给该逻辑卷,例如,将50MB~60MB对应的存储空间分配给该逻辑卷。
[0108] 为方便说明,下文中以块存储客户端为第一逻辑卷创建对应的第一卷元数据以及第一存储空间位于块存储服务端1为例。
[0109] 具体来讲,当块存储客户端确定用于创建该第一逻辑卷的第一卷元数据及第一存储空间位于块存储服务端1后,则向该块存储服务端1发送控制指令。块存储服务端1执行该控制指令,从而在该块存储服务端1中为该第一逻辑卷创建对应的第一卷元数据以及第一存储空间。例如,在块存储服务端1为该第一逻辑卷分配10M的存储空间,作为该第一逻辑卷的第一存储空间。
[0110] S704、块存储客户端向操作系统发送创建结果,操作系统接收该创建结果。
[0111] 该创建结果中包括该第一逻辑卷的第一标识,该第一标识用于操作系统识别该第一逻辑卷。
[0112] 在本申请实施例中,该第一标识为四元组,该四元组与步骤S32中的四元组相同,例如,该四元组为(host:channel:target:LUN),在此不再赘述。例如,在图1所示分布式块存储系统中,该第一逻辑卷对应的四元组可以表示为(0:0:1:0)。
[0113] 当然,需要说明的是,当该方法应用于其他存储系统中,例如,集中式存储系统或者采用其他通信协议通信的存储系统时,该四元组也可以是与步骤S32中不同的内容,或者,该第一标识也可以不是四元组,例如,为三元组或者五元组等,在此不对第一标识进行限制。
[0114] S705、块存储客户端生成与该第一逻辑卷对应的第三标识。
[0115] 该第三标识用于客户端识别该第一逻辑卷,可以理解为,块存储客户端能够识别该第三标识,但操作系统无法识别该第三标识,或者,可以理解为,该第三标识对操作系统是未知的。
[0116] 在本申请实施例中,块存储客户端生成该第三标识的方法可以包括但不限于如下两种方式:
[0117] 第一种生成方式:
[0118] 为了保证数据的可靠性,逻辑卷在使用过程中,可能会创建该逻辑卷的快照,以便后续根据使用需求(例如对数据进行了误操作后),可以对该逻辑卷进行快照回滚处理,从而恢复该逻辑卷在创建快照时存储的数据。由前述创建快照的过程和快照回滚处理的过程可知,在进行快照回滚处理之前,块存储客户端会创建快照和进行快照回滚处理之前的逻辑卷之间的语义关系(语义关系的内容与前述内容相同);在进行快照回滚处理之后,块存储客户端会创建快照和进行快照回滚处理之后的逻辑卷之间的语义关系。从这一度上来看,逻辑卷的快照、进行快照回滚处理之前的逻辑卷以及进行快照回滚处理之后的逻辑卷可以形成如图8所示的树形结构。在图8中,以逻辑卷的快照为主节点,进行快照回滚处理之前的逻辑卷和进行快照回滚处理之后的逻辑卷分别为该主节点的分支节点。
[0119] 基于上述原理,当块存储客户端在创建该第一逻辑卷之后,则可以根据该第一逻辑卷在图8所示的树形结构中的位置,生成与该第一逻辑卷对应的第三标识。作为一种示例,该第三标识可以通过三元组来表示,该三元组包括该第一逻辑卷所在的树形结构的标识、该第一逻辑卷在该树形结构中的分支的标识以及该第一逻辑卷在该分支中的标识。
[0120] 第一种示例,块存储客户端可以将该第一逻辑卷的四元组中的channel,映射为该第一逻辑卷所在的树形结构的标识。以该第一逻辑卷对应的四元组的信息中的channel为0为例,则该第一逻辑卷所在的树形结构的标识为0。该第一逻辑卷位于其所在的树形结构中的第一个分支中,例如,用0来标识第一个分支,且该第一逻辑卷为该第一个分支中的第一个节点,因此,该第一逻辑卷的三元组可以表示为(0:0:1)。
[0121] 第二种示例,块存储客户端可以将该第一逻辑卷的四元组中的target,映射为该第一逻辑卷所在的树形结构的标识。这种情况下,块存储客户端生成第三标识的过程与第一种示例相似,在此不再赘述。
[0122] 需要说明的是,当块存储客户端根据该第一逻辑卷的四元组中的信息生成该三元组时,在本申请实施例中不限制该四元组和三元组之间的映射方式。
[0123] 第三种示例,块存储客户端也可以根据第一逻辑卷创建的顺序或者随机为该第一逻辑卷所在的树形结构分配树形结构的标识。若该第一逻辑卷是该块存储客户端创建的第n个逻辑卷,则该第一逻辑卷所在的树形结构的标识为n,由于该第一逻辑卷为其所在的树形结构中的第一个分支的第一个节点,因此,该第一逻辑卷的三元组可以表示为(n:0:1)。
[0124] 第二种生成方式:
[0125] 当块存储客户端在创建该第一逻辑卷之后,可以按照预设规则为该第一逻辑卷生成该第三标识。
[0126] 作为一种示例,该预设规则可以是根据预设的二元组生成该第三标识,该二元组包括逻辑卷的创建时间以及逻辑卷的编号。例如,逻辑卷的创建时间可以分为两种,分别为进行快照回滚处理之前的逻辑卷和进行快照回滚处理之后的逻辑卷。逻辑卷的创建时间可以通过0和1表示,例如,0表示进行快照回滚处理之前的逻辑卷,1表示进行快照回滚处理之后的逻辑卷。若第一逻辑卷的编号为n,则块存储客户端生成的与该第一逻辑卷对应的第三标识为(0:n)。
[0127] S706、块存储客户端创建该第一逻辑卷的第一标识与该第三标识之间的映射关系。
[0128] 在本申请实施例中,该第一标识与第三标识之间的映射关系,也可以理解为该第一标识、第三标识以及与该第一逻辑卷的第一存储空间之间的映射关系。
[0129] 在块存储客户端生成与该第三标识后,则块存储客户端可以创建该映射关系。由于操作系统是通过四元组来标识每个逻辑卷,从而当操作系统需要访问(读数据或者写数据)该第一逻辑卷时,会在访问请求(读数据请求或者写数据请求)中携带该第一逻辑卷的四元组,这样,当块存储客户端接收包括第一逻辑卷的四元组的访问请求后,则可以根据该第一映射关系确定出与该第一逻辑卷对应的第一存储空间,从而从该第一存储空间中读取数据或者向第一存储空间中写入数据。相较于现有技术中根据四元组和DHT算法确定与该第一逻辑卷对应的第一存储空间的方式,可以减少块存储客户端的运算量。
[0130] S707、应用程序发送第一快照创建请求,操作系统接收该第一快照创建请求。
[0131] 该第一快照创建请求用于指示创建第一逻辑卷的快照,该第一快照创建请求中携带该第一逻辑卷的名称,例如Vol A。
[0132] 需要说明的是,应用程序可以在多个不同的时刻创建与第一逻辑卷对应的多个快照,为方便说明,在本申请实施例中,仅以创建一个快照(即第一快照)为例进行说明。
[0133] S708、操作系统向块存储客户端发送第二快照创建请求,块存储客户端接收该第二快照创建请求。
[0134] 操作系统根据该第一快照创建请求中携带的该第一逻辑卷的名称,确定需要创建第一逻辑卷的快照,则生成第二快照创建请求,该第二快照创建请求中携带该第一逻辑卷的四元组。然后,将该第二快照创建请求发送给客户端。
[0135] S709、块存储客户端创建第一逻辑卷的快照。
[0136] 在本申请实施例中,块存储客户端可以采用ROW技术创建该第一逻辑卷的快照。具体创建过程请参照1)中的描述,在此不再赘述。
[0137] S710、应用程序发送第二快照回滚请求,操作系统接收该第二快照回滚请求。
[0138] 该第二快照回滚请求用于指示对第一逻辑卷进行快照回滚处理,该第二快照回滚请求中携带该第一逻辑卷的名称(例如,Vol A),以及,需要回滚到的快照的标识,例如应用程序对该第一逻辑卷创建了在不同时刻的快照,例如,在第一时刻的快照(可以标记为快照1),在第二时刻的快照(可以标记为快照2),则该第二快照回滚请求中将携带不同时刻的快照的标识,该快照的标识可以是快照的编号,例如,快照1或快照2,或者,该快照的标识也可以是创建快照的时刻,例如,第一时刻或者第二时刻,在此不作限制。
[0139] S711、操作系统向块存储客户端发送第一快照回滚请求,块存储客户端接收该第一快照回滚请求。
[0140] 操作系统根据该第二快照回滚创建请求中携带的该第一逻辑卷的名称,确定需要对第一逻辑卷进行快照回滚处理,则生成第一快照回滚请求,该第一快照回滚请求中携带该第一逻辑卷的四元组以及需要回滚到的快照的标识(例如第一快照的标识)。然后,将该第一快照回滚请求发送给客户端。
[0141] S712、应用程序发送第二数据访问请求,操作系统接收该第二数据访问请求。
[0142] 该第二数据访问请求中包括该第一逻辑卷的名称,例如,为Vol A。在本申请实施例中,该第二数据访问请求可以是向该第一逻辑卷中写入新数据,或者,可以是从第一逻辑卷的存储空间中读取数据。
[0143] S713、操作系统发送第一数据访问请求,块存储客户端接收该第一数据访问请求。
[0144] 当操作系统确定该第二数据访问请求用于访问第一逻辑卷,则操作系统根据该第二数据访问请求,生成该第一数据访问请求,该第一数据访问请求中携带该第一逻辑卷的第一标识,即第一逻辑卷的四元组。
[0145] S714、块存储客户端悬挂该第一数据访问请求。
[0146] 由于块存储客户端对第一逻辑卷进行快照回滚处理需要一定的时间,因此,若块存储客户端在对该第一逻辑卷进行快照回滚处理期间,接收到对第一逻辑卷的数据访问请求时,块存储客户端可以将数据访问请求进行悬挂处理,等待块存储客户端完成对第一逻辑卷的快照回滚处理之后,再根据该数据访问请求,从进行快照回滚处理后的第一逻辑卷的存储空间或者第一逻辑卷的快照的存储空间中读取数据,或者,将数据写入进行快照回滚处理后的第一逻辑卷的存储空间中。
[0147] S715、块存储客户端对第一逻辑卷进行快照回滚处理。
[0148] 在本申请实施例中,客户端可以采用基于ROW技术的快照回滚方式,对该第一逻辑卷进行快照回滚处理,即为该第一逻辑卷创建新的卷元数据和新的存储空间,例如,为该第一逻辑卷创建新的元数据和新的存储空间,该新的元数据和新的存储空间位于块存储服务端1中。然后建立该新的存储空间和第一逻辑卷快照的语义关系,客户端对该第一逻辑卷进行快照回滚处理的过程与前述2)中的过程相似,在此不再赘述。
[0149] 需要说明的是,进行快照回滚处理后的第一逻辑卷具有新的卷元数据和新的存储空间,可以理解为,客户端创建了一个新的逻辑卷,标记为第二逻辑卷,该第二逻辑卷与该第一逻辑卷同名(可以理解为,第二逻辑卷和第一逻辑卷的四元组相同)。为便于说明,下文中将进行快照回滚处理后的第一逻辑卷称为第二逻辑卷进行说明。
[0150] 另外,需要说明的是,若客户端确定对第一逻辑卷进行快照回滚处理之前,还有未完成的针对第一逻辑卷的第二数据访问请求,则客户端可以等待该第二数据访问请求完成之后,再对该第一逻辑卷进行快照回滚处理。
[0151] S716、块存储客户端生成与第二逻辑卷对应的第二标识,并更新该第一映射关系。
[0152] 与步骤S705中的第三标识相似,该第二标识用于块存储客户端识别该第二逻辑卷,且块存储客户端能够识别该第二标识,但操作系统无法识别该第二标识(或者,该第二标识对操作系统是未知的)。
[0153] 在本申请实施例中,块存储客户端生成第二标识的过程与块存储客户端生成第三标识的过程相似。也就是说,块存储客户端可以根据如图8所示的树形结构生成该第二标识,或者,块存储客户端也可以按照预设规则生成该第二标识。需要说明的是,块存储客户端生成该第三标识的方式和块存储客户端生成该第二标识的方式可以相同,例如,若块存储客户端在步骤S705中,采用第一种生成方式,生成该第三标识,则块存储客户端则可以采用该第一种生成方式生成该第二标识,这样可以便于块存储客户端对该第三标识和第二标识的管理。
[0154] 下面对块存储客户端基于两种生成方式生成该第二标识的过程进行说明。
[0155] 第一种生成方式:
[0156] 当块存储客户端在创建该第二逻辑卷之后,则可以根据该第二逻辑卷在图8所示的树形结构中的位置,生成与该第二逻辑卷对应的第二标识。
[0157] 作为一种示例,该第一逻辑卷的三元组可以表示为(0:0:1),由于该第二逻辑卷与该第一逻辑卷属于同一个树形结构,因此,该第二逻辑卷所在的树形结构的标识为0,且该第二逻辑卷位于其所在的树形结构中的第二个分支中的第一个节点,因此,该第二逻辑卷的三元组可以表示为(0:1:1)。
[0158] 第二种生成方式:
[0159] 当块存储客户端在创建该第二逻辑卷之后,可以按照预设的二元组为该第二逻辑卷生成该第二标识。
[0160] 作为一种示例,该二元组包括逻辑卷的创建时间以及逻辑卷的编号。由于第二逻辑卷是进行快照回滚处理之后的逻辑卷,且该第二逻辑卷是块存储客户端创建的第n+k个逻辑卷,则块存储客户端生成的与该第二逻辑卷对应的第二标识为(1:n+k)。
[0161] 在块存储客户端生成与该第二逻辑卷对应的第二标识后,块存储客户端则根据该第二标识以及该第二逻辑卷的存储空间,更新该映射关系。即,将该映射关系中的第三标识更新为该第二标识,将该映射关系中的第一存储空间更新为第二逻辑卷的存储空间。这样,操作系统可以继续使用第一逻辑卷的第一标识,也能够访问进行快照回滚处理之后的逻辑卷的存储空间,从而可以实现在线快照回滚,无需中断应用程序对存储服务端的访问功能。
[0162] S717、块存储客户端执行第一数据访问请求。
[0163] 当块存储客户端完成对该第一逻辑卷的快照回滚处理之后,客户端则解除对第一数据访问请求的悬挂处理,并根据第二逻辑卷的存储空间与第一逻辑卷的快照的存储空间的语义关系,执行该第一数据访问请求。
[0164] 若块存储客户端后续再次收到对第一逻辑卷的数据访问请求,例如,向第一逻辑卷写入新数据,则块存储客户端可以将该新数据写入到第二逻辑卷的存储空间中。
[0165] S718、块存储客户端删除所述第一逻辑卷的第一存储空间中的数据以及元数据。
[0166] 在块存储客户端完成对第一逻辑卷的回滚操作后,块存储客户端可以删除第一逻辑卷的卷元数据和第一存储空间中的数据,以便于将第一逻辑卷占用的存储空间分配给其他逻辑卷使用,可以提高存储块存储服务端的存储空间的利用率。
[0167] 需要说明的是,在本申请实施例中,不限制步骤S718的执行顺序,例如,步骤S718可以是在步骤S717之后执行,也可以是在步骤S716之后执行,或者也可以与步骤S717同时执行。在图7中,以步骤S718在步骤S717之后执行为例。
[0168] 在上述技术方案中,由于块存储客户端建立了主机用于识别逻辑卷的标识、块存储客户端用于识别逻辑卷的标识以及逻辑卷的存储空间的映射关系,这样,在对逻辑卷进行快照回滚处理后,只有块存储客户端用于识别逻辑卷的标识以及对应的存储空间发生了改变,且即使主机用于识别逻辑卷的标识不发生变化,存储客户端也能够通过该映射关系,访问到正确的逻辑卷,从而可以实现在线快照回滚,进而可以不用中断应用程序对逻辑卷的访问,应用程序的业务不会受到影响,可以适用于更多的应用程序以及更多的应用场景。
[0169] 进一步,由于可以实现在线快照回滚,这样,应用程序可以不用在进行快照回滚处理之前先卸载卷,以及在进行快照回滚处理之后再挂载卷,从而可以简化应用程序在进行快照回滚时的处理过程,减少快照回滚处理所需的时长。
[0170] 在图7所示的实施例中,只要块存储客户端创建一个逻辑卷,都会为该逻辑卷生成用于块存储客户端识别该逻辑卷的标识(例如该逻辑卷的三元组)。在另一种实施例中,块存储客户端也可以只在进行快照回滚处理时,才生成与逻辑卷对应的用于块存储客户端识别该逻辑卷的标识。
[0171] 请参考图9,为本申请实施例提供的快照回滚方法的另一种示例的流程图,该流程图描述如下:
[0172] S901、应用程序发送逻辑卷创建请求,操作系统接收该逻辑卷创建请求。
[0173] S902、操作系统将该逻辑卷创建请求发送给块存储客户端,块存储客户端接收该逻辑卷创建请求。
[0174] S903、块存储客户端创建与该第一逻辑卷对应的第一卷元数据及第一存储空间。
[0175] S904、块存储客户端向操作系统发送创建结果,操作系统接收该创建结果。
[0176] S905、应用程序发送第一快照创建请求,操作系统接收该第一快照创建请求。
[0177] S906、操作系统向块存储客户端发送第二快照创建请求,块存储客户端接收该第二快照创建请求。
[0178] S907、块存储客户端创建第一逻辑卷的快照。
[0179] S908、应用程序发送第二快照回滚请求,操作系统接收该第二快照回滚请求。
[0180] S909、操作系统向客户端发送第一快照回滚请求,块存储客户端接收该第一快照回滚请求。
[0181] S910、应用程序发送第二数据访问请求,操作系统接收该第二数据访问请求。
[0182] S911、操作系统发送第一数据访问请求,块存储客户端接收该第一数据访问请求。
[0183] S912、块存储客户端悬挂该第一数据访问请求。
[0184] S913、块存储客户端对第一逻辑卷进行快照回滚处理。
[0185] 需要说明的是,步骤S901~步骤S913与步骤S701~步骤S704、步骤S707~步骤S715相似,在此不再赘述。
[0186] S914、块存储客户端生成与进行快照回滚处理后的第一逻辑卷的第二标识。
[0187] 步骤S914与步骤S716中的相应内容相似,在此不再赘述。下文中,将进行快照回滚处理后的第一逻辑卷称为第二逻辑卷。
[0188] S915、块存储客户端创建第一逻辑卷的第一标识、该第二标识以及该第二逻辑卷的存储空间的第一映射关系。
[0189] 在块存储客户端生成与该第二标识后,则块存储客户端可以创建该映射关系。由于操作系统是通过第一标识(即四元组)来标识每个逻辑卷,而进行快照回滚处理后的第一逻辑卷(即第二逻辑卷)的卷元数据以及存储空间发生了改变,因此,块存储客户端可以创建该第一逻辑卷的第一标识、第二逻辑卷的第二标识以及第二逻辑卷的存储空间的映射关系,这样,当操作系统访问该第二逻辑卷时,块存储客户端可以根据该映射关系确定第二逻辑卷的存储空间。
[0190] S916、块存储客户端执行第一数据访问请求。
[0191] S917、块存储客户端删除所述第一逻辑卷的第一存储空间中的数据以及元数据。
[0192] 步骤S916~步骤S917与步骤S717~步骤S718相似,在此不再赘述。
[0193] 在上述技术方案中,由于块存储客户端只在进行快照回滚处理时,才生成与逻辑卷对应的用于块存储客户端识别该逻辑卷的标识,这样,不需要进行快照回滚处理的逻辑卷则可以不用生成用于客户端识别该逻辑卷的标识,可以减少用于块存储客户端识别该逻辑卷的标识所占用的存储空间。
[0194] 另外,需要说明的是,在图7或图9所示的实施例中,是以分布式块存储系统为例来对本申请提供的快照回滚方法进行的说明。当该快照回滚方法应用在其他存储系统中,例如,应用在集中式存储系统中,该集中式存储系统中可能并没有块存储客户端,在这种情况下,该块存储客户端应替换为集中式存储系统中能够实现如块存储客户端的功能的装置或设备,例如,该块存储客户端可以是集中式存储系统中的远端启动器等。具体实现,可以是存储阵列中的阵列控制器
[0195] 上述本申请提供的实施例中,从计算设备的角度对本申请实施例提供的方法进行了介绍。为了实现上述本申请实施例提供的方法中的各功能,计算设备可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
[0196] 图10示出了一种快照回滚装置1000的结构示意图。其中,快照回滚装置1000可以是存储客户端,能够实现本申请实施例提供的方法中存储客户端的功能;快照回滚装置1000也可以是能够支持存储客户端实现本申请实施例提供的方法中存储客户端的功能的装置。快照回滚装置1000可以是硬件结构、软件模块、或硬件结构加软件模块。快照回滚装置1000可以由芯片系统实现。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
[0197] 快照回滚装置1000可以包括处理模块1001和获取模块1002。
[0198] 处理模块1001可以用于执行图7所示的实施例中的步骤S703、步骤S705、步骤S706、步骤S709以及步骤S714~步骤S718,或用于执行图9所示的实施例中的步骤S903、步骤S907以及步骤S912~步骤S917,和/或用于支持本文所描述的技术的其它过程。
[0199] 获取模块1002可以用于执行图7所示的实施例中的步骤S702、步骤S704、步骤S708、步骤S711以及步骤S713,或用于执行图9所示的实施例中的步骤S902、步骤S904、步骤S906、步骤S909以及步骤S911,和/或用于支持本文所描述的技术的其它过程。获取模块1002用于快照回滚装置1000和其它模块进行通信,其可以是电路、器件、接口、总线、软件模块、收发器或者其它任意可以实现通信的装置。
[0200] 其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0201] 图10所示的实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0202] 如图11所示为本申请实施例提供的快照回滚装置1100,其中,快照回滚装置1100可以是存储客户端,能够实现本申请实施例提供的方法中存储客户端的功能;快照回滚装置1100也可以是能够支持存储客户端实现本申请实施例提供的方法中存储客户端的功能的装置。其中,该快照回滚装置1100可以为芯片系统。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
[0203] 快照回滚装置1100包括至少一个处理器1120,用于实现或用于支持快照回滚装置1100实现本申请实施例提供的方法中存储客户端的功能。示例性地,处理器1120可以生成第二逻辑卷,并创建该第二逻辑卷与第一快照的语义关系,具体参见方法示例中的详细描述,此处不做赘述。
[0204] 快照回滚装置1100还可以包括至少一个存储器1130,用于存储程序指令和/或数据。存储器1130和处理器1120耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器1120可能和存储器1130协同操作。处理器1120可能执行存储器1130中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
[0205] 快照回滚装置1100还可以包括通信接口1110,用于通过传输介质和其它设备进行通信,从而用于快照回滚装置1100可以和其它设备进行通信。示例性地,该其它设备可以是主机或者存储设备。处理器1120可以利用通信接口1110收发数据。
[0206] 本申请实施例中不限定上述通信接口1110、处理器1120以及存储器1130之间的具体连接介质。本申请实施例在图11中以存储器1130、处理器1120以及通信接口1110之间通过总线1140连接,总线在图11中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0207] 在本申请实施例中,处理器1120可以是通用处理器、数字信号处理器、专用集成电路、现场可编程阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0208] 在本申请实施例中,存储器1130可以是非易失性存储器,比如硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
[0209] 本申请实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行图7或图9所示的实施例中存储客户端执行的方法。
[0210] 本申请实施例中还提供一种计算机程序产品,包括指令,当其在计算机上运行时,使得计算机执行图7或图9所示的实施例中存储客户端执行的方法。
[0211] 本发明实施例中还可以主机直接执行逻辑卷的挂载、卸载以及快照回滚的操作,本发明实施例对此不作限定。另外本发明实施例也可以用于分布式的文件系统中的逻辑卷操作。
[0212] 本申请实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现前述方法中存储客户端的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
[0213] 本申请实施例提供了一种存储系统,该存储系统包括存储设备以及图7或图9所示的实施例中存储客户端。
[0214] 本申请实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,简称DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,简称DVD))、或者半导体介质(例如,SSD)等。
[0215] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈