一种快照占用容量的确定方法、系统及相关组件转让专利

申请号 : CN201910294489.0

文献号 : CN110032474A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李佳徐

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请公开了一种快照占用容量的确定方法,所述确定方法包括当接收到覆盖写指令时,确定原逻辑卷中与覆盖写指令对应的目标数据对象,并在只读快照卷中创建与目标数据对象内容一致的克隆对象;根据覆盖写指令对目标数据对象执行写操作得到新逻辑卷;在显式只读快照卷中写入新逻辑卷对应的逻辑卷镜像数据,并根据执行写操作之后的目标数据对象中的内容更新隐藏克隆快照卷;根据只读快照卷、显式只读快照卷和隐藏克隆快照卷中的对象数确定快照占用容量。本申请能够可以实现准确描述快照数据的占用容量,提高分布式块存储业务的存储性能。本申请还公开了一种快照占用容量的确定系统、一种计算机可读存储介质及一种电子设备,具有以上有益效果。

权利要求 :

1.一种快照占用容量的确定方法,其特征在于,包括:

当接收到覆盖写指令时,确定原逻辑卷中与所述覆盖写指令对应的目标数据对象,并在只读快照卷中创建与所述目标数据对象内容一致的克隆对象;

根据所述覆盖写指令对所述目标数据对象执行写操作得到新逻辑卷;

在显式只读快照卷中写入所述新逻辑卷对应的逻辑卷镜像数据,并根据执行写操作之后的目标数据对象中的内容更新隐藏克隆快照卷;

根据所述只读快照卷、所述显式只读快照卷和所述隐藏克隆快照卷中的对象数确定快照占用容量。

2.根据权利要求1所述确定方法,其特征在于,当所述快照占用容量包括只读快照占用容量和可写快照占用容量时,根据所述只读快照卷、所述显式只读快照卷和所述隐藏克隆快照卷中的对象数确定快照占用容量包括:根据所述只读快照卷的对象数和对象大小计算所述只读快照占用容量;

根据所述显式只读快照卷和所述隐藏克隆快照卷中的对象数和对象大小计算所述可写快照占用容量。

3.根据权利要求1所述确定方法,其特征在于,在接收所述覆盖写指令之前,还包括:当检测到所述逻辑卷内创建新数据对象时,将对象状态表中与所述新数据对象对应的状态设置为第一状态。

4.根据权利要求3所述确定方法,其特征在于,在对所述逻辑卷的目标数据对象执行覆盖写操作之后,还包括:将所述对象状态表中与所述目标数据对象对应的状态设置为第二状态。

5.根据权利要求4所述确定方法,其特征在于,当所述快照占用容量包括只读快照占用容量和可写快照占用容量时,根据所述只读快照卷、所述显式只读快照卷和所述隐藏克隆快照卷中的对象数确定快照占用容量包括:确定所述对象状态表中状态为所述第二状态的数据对象的数量,根据所述状态为所述第二状态的数据对象的数量确定所述只读快照卷的对象数,根据所述只读快照卷的对象数和对象大小计算所述只读快照占用容量;

分别确定所述对象状态表中状态为所述第一状态和所述第二状态的数据对象的数量,根据所述第一状态的数量和第二状态的数量确定所述显式只读快照卷和所述隐藏克隆快照卷中的对象数,根据所述显式只读快照卷和所述隐藏克隆快照卷中的对象数和对象大小计算所述可写快照占用容量。

6.根据权利要求1至5任一项所述确定方法,其特征在于,在根据所述覆盖写指令对所述目标数据对象执行写操作得到新逻辑卷之后,还包括:当接收到快照回滚指令时,根据所述只读快照卷中的目标数据对象对所述新逻辑卷执行快照回滚操作。

7.一种快照占用容量的确定系统,其特征在于,包括:

克隆模块,用于当接收到覆盖写指令时,确定原逻辑卷中与所述覆盖写指令对应的目标数据对象,并在只读快照卷中创建与所述目标数据对象内容一致的克隆对象;

覆盖写模块,用于根据所述覆盖写指令对所述目标数据对象执行写操作得到新逻辑卷;

可读数据写入模块,用于在显式只读快照卷中写入所述新逻辑卷对应的逻辑卷镜像数据,并根据执行写操作之后的目标数据对象中的内容更新隐藏克隆快照卷;

容量计算模块,用于根据所述只读快照卷、所述显式只读快照卷和所述隐藏克隆快照卷中的对象数确定快照占用容量。

8.根据权利要求7所述确定系统,其特征在于,当所述快照占用容量包括只读快照占用容量和可写快照占用容量时,所述容量计算模块包括:只读容量计算单元,用于根据所述只读快照卷的对象数和对象大小计算所述只读快照占用容量;

可写容量计算单元,用于根据所述显式只读快照卷和所述隐藏克隆快照卷中的对象数和对象大小计算所述可写快照占用容量。

9.一种电子设备,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述快照占用容量的确定方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述快照占用容量的确定方法的步骤。

说明书 :

一种快照占用容量的确定方法、系统及相关组件

技术领域

[0001] 本申请涉及计算机技术领域,特别涉及一种快照占用容量的确定方法、系统、一种计算机可读存储介质及一种电子设备。

背景技术

[0002] 在当前分布式块存储中,数据以KV对的形式存储在数据对象中。为逻辑卷创建快照后,对原逻辑卷进行覆盖写会触发写时复制,即将原卷待写入对象复制一份“快照对象”,然后对原卷对象进行数据写入,此过程即COW。在执行快照回滚时,将快照对应的快照对象覆盖原对象即可。
[0003] 当前分布式块存储中,快照属性包含原逻辑卷大小和快照已用容量。其中快照已用容量计算的创建快照时刻原卷的已用容量,快照创建后不随着原卷的读写发生变化,这不符合快照的COW原则。此外,可写快照的数据包含快照COW产生的原卷镜像数据和用户新写入的业务数据,快照已用容量无法准确描述上述两种数据的总占用大小。
[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] 图1为本申请实施例所提供的一种快照占用容量的确定方法的流程图;
[0037] 图2为本申请实施例所提供的另一种快照占用容量的确定方法的流程图;
[0038] 图3为本申请实施例所提供的一种快照占用容量的确定系统的结构示意图。

具体实施方式

[0039] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0040] 下面请参见图1,图1为本申请实施例所提供的一种快照占用容量的确定方法的流程图。
[0041] 具体步骤可以包括:
[0042] S101:当接收到覆盖写指令时,确定原逻辑卷中与所述覆盖写指令对应的目标数据对象,并在只读快照卷中创建与所述目标数据对象内容一致的克隆对象;
[0043] 其中,在本步骤之前可以存在接收覆盖写指令的操作,当原逻辑卷中需要执行COW(copy on write写时复制)时会自动生成覆盖写指令,需要将新的业务数据覆盖至目标数据对象中。在创建该原逻辑卷时存储系统并未创建卷对象,当向该原逻辑卷写入数据时触发卷对象创建操作并完成数据写入,因此原逻辑卷中可以存在多个数据对象。也就是说,在本步骤中根据覆盖写指令确定到目标数据对象,即能够说明目标数据对象中已经写入数据。
[0044] 在将新业务数据覆盖至目标数据对象之前,本步骤将原逻辑卷的目标数据对象进行复制操作得到与目标数据对象数据内容完全一致的克隆对象,以便在执行快照回滚时,将克隆对象对应的快照数据覆盖回目标数据对象即可。
[0045] 需要说明的是,本实施例中的与逻辑卷对应的快照卷有三层,分别为:只读快照卷、显式只读快照卷和隐藏克隆快照卷,通过复制得到的克隆对象为只读快照卷中的对象。
[0046] S102:根据所述覆盖写指令对所述目标数据对象执行写操作得到新逻辑卷;
[0047] 其中,在已经对目标数据对象进行复制得到克隆对象的前提下,本步骤根据S101中接收的覆盖写指令对目标数据对象执行写操作,具体的本步骤中的写操作是对目标数据对象覆盖写新业务数据的操作,在写操作执行完毕之后可以得到新逻辑卷,即:相对于原逻辑卷目标数据对象发生变化的新逻辑卷。
[0048] 举例说明本实施例的操作过程,例如:原逻辑卷包括数据对象object1和object2,在接收到覆盖写指令后确定原逻辑卷中与所述覆盖写指令对应的目标数据对象为object1。在只读快照卷中为object1创建克隆对象object1-snap1,克隆对象object1-snap1与数据对象object1具有相同的数据。创建克隆对象object1-snap1之后,对原逻辑卷的object1进行覆盖写操作,object1中的数据发生变化,将object1标记为object1’。
[0049] S103:在显式只读快照卷中写入所述新逻辑卷对应的逻辑卷镜像数据,并根据执行写操作之后的目标数据对象中的内容更新隐藏克隆快照卷;
[0050] 其中,在对原逻辑卷执行覆盖写操作之后,本步骤生成新逻辑卷的逻辑卷镜像数据并将逻辑卷镜像数据写入显式只读快照卷。本步骤还将执行写操作之后的目标数据对象中的内容更新至隐藏克隆快照卷,也就是说将S102写入的新的业务数据写入隐藏克隆快照卷。
[0051] S104:根据所述只读快照卷、所述显式只读快照卷和所述隐藏克隆快照卷中的对象数确定快照占用容量。
[0052] 其中,现有技术中一旦原逻辑卷的快照创建之后,快照便不随原逻辑卷的读写操作发生变化,因此现有技术中若原逻辑卷存在写时复制的操作时,仍然将之前的快照已用容量作为当前的逻辑卷的已用容量,故存在描述错误的问题。本实施例在对原逻辑卷执行写时复制操作后,更新逻辑卷的三层快照,能够根据所述只读快照卷、所述显式只读快照卷和所述隐藏克隆快照卷中的对象数确定快照占用容量。快照卷中每一对象所占用的空间的是固定的,故可以根据只读快照卷、所述显式只读快照卷和所述隐藏克隆快照卷中的对象数确定快照占用容量。需要说明的是,本步骤中确定快照占用容量就可以得知新的逻辑卷的容量占用情况。
[0053] 作为一种优选的实施方式,在S104之后还可以存在以下操作:
[0054] 当接收到快照回滚指令时,根据所述只读快照卷中的目标数据对象对所述新逻辑卷执行快照回滚操作。
[0055] 本实施例在原逻辑卷执行覆盖写操作之前先创建待写入内容对应的克隆对象,在覆盖写操作之后不但生成新逻辑卷对应的逻辑卷镜像数据,还根据之前待写入内容更新隐藏克隆快照卷用于记录新增的业务数据。相对于现有技术中快照创建后不随原逻辑卷的读写而改变,因此仅依靠原逻辑卷创建时刻得到的快照来计算占用容量并不准确。本实施例根据执行覆盖写操作后的只读快照卷、显式只读快照卷和隐藏克隆快照卷中的对象数量来计算快照占用容量,可以实现准确描述快照数据的占用容量,提高分布式块存储业务的存储性能。
[0056] 进一步的,图1对应的实施例中描述的快照占用容量可以包括只读快照占用容量和可写快照占用容量;
[0057] 只读快照占用容量为只读快照卷中数据占用的容量,只读快照卷中的只读快照数据为COW产生的原卷镜像数据(即克隆对象中的数据)。可写快照占用容量为显式只读快照卷和隐藏克隆快照卷中数据占用的容量,可写快照数据可以包括新逻辑卷的镜像数据和新写入的业务数据。
[0058] 只读快照数据和可写快照数据均保存在对象中,对象的大小是固定的,一般为4M。因此两种快照的数据均会占用存储空间,故本实施例为快照数据的容量提出了占用容量的概念:快照真实占用分布式存储系统存储空间的大小。只读快照数据的占用容量最小为0(快照刚创建时),最大为原逻辑卷大小(对原卷完全覆盖写);可写快照数据的占用容量最小为0,最大为原逻辑卷大小的2倍(对原卷完全覆盖写,同时对可写快照全写)。
[0059] 相应的,图1对应的实施例中S104提到的根据所述只读快照卷、所述显式只读快照卷和所述隐藏克隆快照卷中的对象数确定快照占用容量可以包括以下步骤:
[0060] 步骤1:根据所述只读快照卷的对象数和对象大小计算所述只读快照占用容量;
[0061] 步骤2:根据所述显式只读快照卷和所述隐藏克隆快照卷中的对象数和对象大小计算所述可写快照占用容量。
[0062] 下面请参见图2,图2为本申请实施例所提供的另一种快照占用容量的确定方法的流程图,具体步骤可以包括:
[0063] S201:当检测到所述逻辑卷内创建新数据对象时,将对象状态表中与所述新数据对象对应的状态设置为第一状态。
[0064] S202:当接收到覆盖写指令时,确定原逻辑卷中与所述覆盖写指令对应的目标数据对象,并在只读快照卷中创建与所述目标数据对象内容一致的克隆对象;
[0065] S203:根据所述覆盖写指令对所述目标数据对象执行写操作得到新逻辑卷,并将所述对象状态表中与所述目标数据对象对应的状态设置为第二状态。
[0066] S204:在显式只读快照卷中写入所述新逻辑卷对应的逻辑卷镜像数据,并根据执行写操作之后的目标数据对象中的内容更新隐藏克隆快照卷;
[0067] S205:确定所述对象状态表中状态为所述第二状态的数据对象的数量,根据所述状态为所述第二状态的数据对象的数量确定所述只读快照卷的对象数,根据所述只读快照卷的对象数和对象大小计算所述只读快照占用容量;
[0068] S206:分别确定所述对象状态表中状态为所述第一状态和所述第二状态的数据对象的数量,根据所述第一状态的数量和第二状态的数量确定所述显式只读快照卷和所述隐藏克隆快照卷中的对象数,根据所述显式只读快照卷和所述隐藏克隆快照卷中的对象数和对象大小计算所述可写快照占用容量。
[0069] 需要说明的是,本实施例默认在S201创建目标数据对象之前,对象状态表中目标数据对象对应的状态可以为第三状态。每一快照卷都可以存在一个对应的对象状态子表,本实施例将所有对象状态子表的集合称之为对象状态表。对象状态表中可以包括只读快照卷、所述显式只读快照卷和隐藏克隆快照卷中所有对象的状态。上述第一状态可以为“不存在”,第二状态可以为:“存在”。
[0070] 举例说明上述流程,对象状态表在创建时将所有对象状态置为“不存在”,在COW过程中修改相应的快照对象的状态为“存在”。快照占用容量计算分只读快照和可写快照两种情况:只读快照容量计算统计对象状态表中状态为“存在”的对象数,将对象数乘以对象大小作为快照占用容量;可写快照包含显式只读快照和隐藏克隆卷两部分,其中显式只读快照包含新逻辑卷镜像数据,隐藏克隆卷保存新增业务数据,故可写快照占用容量需分别统计显示只读快照和隐藏克隆卷状态为“存在”的对象。
[0071] 下面通过在实际应用中的实施例说明上述实施例描述的流程。
[0072] 步骤1、在为逻辑卷创建快照时,对只读快照创建和卷objectmap大小相同的快照objectmap,其对象的状态均初始为“不存在”,对可写快照除参加objectmap外使用现有流程参加隐藏克隆卷的objectmap。
[0073] 步骤2、在对原卷覆盖写时,查找该卷创建时间最靠后的快照,即最新的快照。
[0074] 步骤3、对原卷对象覆盖写时,检查该对象在最新快照中对应的快照对象是否为“存在”状态。
[0075] 步骤4、若步骤3中状态为“存在”,则直接对原卷对象覆盖写。若步骤3中状态为“不存在”,则先将该快照对象状态设置为“存在”,再对原对象覆盖写。
[0076] 步骤5、当对可写快照写数据时,其隐藏克隆卷objectmap更新规则和现分布式块存储逻辑保持一致。
[0077] 步骤6、对只读快照,统计快照objectmap中状态为“存在”的对象数,将其乘以对象大小即得快照占用容量。
[0078] 步骤7、对可写快照,分别统计快照objectmap和隐藏克隆卷objectmap中状态为“存在”的对象数,将其乘以对象大小即为可写快照实际占用容量。
[0079] 本实施例为当前分布式块存储重新定义了快照占用容量的概念,提升了相关分布式块业务的用户体验;基于objectmap计算快照占用容量缩短了计算耗时,提高了分布式块业务的存储性能。
[0080] 请参见图3,图3为本申请实施例所提供的一种快照占用容量的确定系统的结构示意图;
[0081] 该系统可以包括:
[0082] 克隆模块100,用于当接收到覆盖写指令时,确定原逻辑卷中与所述覆盖写指令对应的目标数据对象,并在只读快照卷中创建与所述目标数据对象内容一致的克隆对象;
[0083] 覆盖写模块200,用于根据所述覆盖写指令对所述目标数据对象执行写操作得到新逻辑卷;
[0084] 可读数据写入模块300,用于在显式只读快照卷中写入所述新逻辑卷对应的逻辑卷镜像数据,并根据执行写操作之后的目标数据对象中的内容更新隐藏克隆快照卷;
[0085] 容量计算模块400,用于根据所述只读快照卷、所述显式只读快照卷和所述隐藏克隆快照卷中的对象数确定快照占用容量。
[0086] 本实施例在原逻辑卷执行覆盖写操作之前先创建待写入内容对应的克隆对象,在覆盖写操作之后不但生成新逻辑卷对应的逻辑卷镜像数据,还根据之前待写入内容更新隐藏克隆快照卷用于记录新增的业务数据。相对于现有技术中快照创建后不随原逻辑卷的读写而改变,因此仅依靠原逻辑卷创建时刻得到的快照来计算占用容量并不准确。本实施例根据执行覆盖写操作后的只读快照卷、显式只读快照卷和隐藏克隆快照卷中的对象数量来计算快照占用容量,可以实现准确描述快照数据的占用容量,提高分布式块存储业务的存储性能。
[0087] 进一步的,当所述快照占用容量包括只读快照占用容量和可写快照占用容量时,所述容量计算模块400包括:
[0088] 只读容量计算单元,用于根据所述只读快照卷的对象数和对象大小计算所述只读快照占用容量;
[0089] 可写容量计算单元,用于根据所述显式只读快照卷和所述隐藏克隆快照卷中的对象数和对象大小计算所述可写快照占用容量。
[0090] 进一步的,该系统还包括:
[0091] 第一状态设置模块,用于当检测到所述逻辑卷内创建新数据对象时,将对象状态表中与所述新数据对象对应的状态设置为第一状态。
[0092] 进一步的,该系统还包括:
[0093] 第二状态设置模块,用于将所述对象状态表中与所述目标数据对象对应的状态设置为第二状态。
[0094] 进一步的,当所述快照占用容量包括只读快照占用容量和可写快照占用容量时,所述容量计算模块400包括:
[0095] 第一计算单元,用于确定所述对象状态表中状态为所述第二状态的数据对象的数量,根据所述状态为所述第二状态的数据对象的数量确定所述只读快照卷的对象数,根据所述只读快照卷的对象数和对象大小计算所述只读快照占用容量;
[0096] 第二计算单元,用于分别确定所述对象状态表中状态为所述第一状态和所述第二状态的数据对象的数量,根据所述第一状态的数量和第二状态的数量确定所述显式只读快照卷和所述隐藏克隆快照卷中的对象数,根据所述显式只读快照卷和所述隐藏克隆快照卷中的对象数和对象大小计算所述可写快照占用容量。
[0097] 进一步的,该系统还包括:
[0098] 回滚模块,用于当接收到快照回滚指令时,根据所述只读快照卷中的目标数据对象对所述新逻辑卷执行快照回滚操作。
[0099] 由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
[0100] 本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0101] 本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
[0102] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
[0103] 还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。