首页> 中国专利> 快照占用空间计算方法、装置、电子设备及存储介质

快照占用空间计算方法、装置、电子设备及存储介质

摘要

本发明实施例提供了一种快照占用空间计算方法、装置、电子设备及存储介质。其中,快照占用空间计算方法包括:根据指示对快照的占用空间进行计算的请求,获取待计算的快照的信息;根据所述待计算的快照的信息,获取待计算的快照对应的第一信息和第二信息的映射关系,其中,所述第一信息用于指示待计算的快照中的数据块,所述第二信息用于指示数据块的被引用次数;根据所述映射关系中的第二信息,获取被引用次数满足设定阈值的数据块的数量,根据所述数据块的数量确定所述待计算的快照的占用空间。通过本发明实施例,使计算快照的占用空间占用资源更少。

著录项

  • 公开/公告号CN113157199A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN202010074534.4

  • 发明设计人 周宇;

    申请日2020-01-22

  • 分类号G06F3/06(20060101);G06F16/11(20190101);G06F16/17(20190101);G06F16/182(20190101);

  • 代理机构11545 北京合智同创知识产权代理有限公司;

  • 代理人李杰;赵海娇

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号邮箱

  • 入库时间 2023-06-19 11:57:35

说明书

技术领域

本发明实施例涉及计算机技术领域,尤其涉及一种快照占用空间计算方法、装置、电子设备及存储介质。

背景技术

快照是用于记录存储介质中某一时间点的数据内容的映像。其可以用于数据的恢复和容灾备份。在针对某个存储介质创建快照时,将存储介质的存储空间按照预设的容量大小分割为多个区域,针对每个区域,快照使用一个对应的数据块(block)进行数据存储。当针对一个存储介质创建多个快照时,若存储介质中某个区域的数据没有变化,则在后的快照中针对该区域不再创建新的数据块,而是可以直接引用在前的快照中与该区域对应的数据块。

由于针对存储介质(如虚拟机磁盘、本地物理磁盘等)的快照需要占用一定的存储空间进行存储,因而一些存储服务提供商或者云服务提供商需要计算用户的快照占用空间,以便于收费。

现有计算快照占用空间的技术方案存在如下两个问题:

其一,需要读取所有快照的元数据信息,因而需要占用较多的带宽资源。

其二,需要把所有快照的所有数据块放到内存中,所需的内存与快照大小和快照数量成正比,对计算节点的系统资源影响太大。现有的方法的内存使用空间主要为集合的占用空间,这与快照对应的存储介质中数据的变化程度成线性关系。

发明内容

有鉴于此,本发明实施例提供一种快照占用空间计算方案,以解决上述部分或全部问题。

根据本发明实施例的第一方面,提供了一种快照占用空间计算方法,其包括:根据指示对快照的占用空间进行计算的请求,获取待计算的快照的信息;根据所述待计算的快照的信息,获取待计算的快照对应的第一信息和第二信息的映射关系,其中,所述第一信息用于指示待计算的快照中的数据块,所述第二信息用于指示数据块的被引用次数;根据所述映射关系中的第二信息,获取被引用次数满足设定阈值的数据块的数量,根据所述数据块的数量确定所述待计算的快照的占用空间。

根据本发明实施例的第二方面,提供了一种快照占用空间计算装置,其包括:第一获取模块,用于根据指示对快照的占用空间进行计算的请求,获取待计算的快照的信息;第二获取模块,用于根据所述待计算的快照的信息,获取待计算的快照对应的第一信息和第二信息的映射关系,其中,所述第一信息用于指示待计算的快照中的数据块,所述第二信息用于指示数据块的被引用次数;计算模块,用于根据所述映射关系中的第二信息,获取被引用次数满足设定阈值的数据块的数量,根据所述数据块的数量确定所述待计算的快照的占用空间。

根据本发明实施例的第三方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面所述的快照占用空间计算方法对应的操作。

根据本发明实施例的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的快照占用空间计算方法。

根据本发明实施例提供的快照占用空间计算方案,根据获取的请求获得待计算的快照的信息,以根据待计算的快照的信息获取到与其对应的第一信息和第二信息的映射关系,通过映射关系记录计算各数据块被快照引用的次数,根据映射关系中的第二信息,确定被引用次数满足设定阈值的数据块的数量,进而根据数据块的数量确定待计算的快照的占用空间。由于基于待计算的快照的信息预先生成了映射关系,且映射关系中采用第一信息指示待计算的快照中的数据块,第二信息指示数据块被引用次数,因此可以根据映射关系方便地计算确定待计算的快照的占用空间,而且无需读取各待计算的快照的元数据信息,故而在计算占用空间时不必占用额外的带宽资源,而且对计算节点的系统资源占用少,其计算时的空间复杂度为O(1)级的。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1为根据本发明实施例一的一种快照占用空间计算方法的步骤流程图;

图2为根据本发明实施例一的一种快照占用空间计算方法的映射关系的示意图;

图3为根据本发明实施例二的一种快照占用空间计算方法的步骤流程图;

图4为根据本发明的使用场景的映射关系的示意图;

图5为根据本发明实施例四的一种快照占用空间计算装置的结构框图;

图6为根据本发明实施例五的一种快照占用空间计算装置的结构框图;

图7为根据本发明实施例六的一种电子设备的结构示意图。

具体实施方式

为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。

下面结合本发明实施例附图进一步说明本发明实施例具体实现。

实施例一

参照图1,示出了根据本发明实施例一的一种快照占用空间计算方法的步骤流程图。

本实施例的快照占用空间计算方法包括以下步骤:

步骤S102:根据指示对快照的占用空间进行计算的请求,获取待计算的快照的信息。

该请求(为了便于描述以下称为计算请求)可以是从管控接收的、指示对某用户创建的一个或多个快照的占用空间进行计算的请求,或者,指示针对某个存储介质对应的一个或多个快照的占用空间进行计算的请求。

在一具体实现中,计算请求中可以包括用户信息(如用户名)、存储介质信息(如存储介质标识)等。根据用户信息或者存储介质信息,可以确定对应的待计算的快照的信息(如快照的标识)。

在另一具体实现中,计算请求中可以直接包括待计算的快照的信息(如,快照的标识等),通过解析计算请求可以直接获得待计算的快照的信息。

步骤S104:根据所述待计算的快照的信息,获取待计算的快照对应的第一信息和第二信息的映射关系。

其中,所述第一信息用于指示待计算的快照中的数据块,所述第二信息用于指示数据块的被引用次数。

映射关系可以是根据待计算的快照的信息预先创建的、用于对各数据块的使用情况进行记录的关系。

下面例举一种可行的创建映射关系的方式:

例如,如图2所示,针对存储介质A,用户在第一时间点创建快照1(snapshot 1),快照1中包括N个数据块,分别记作。基于该存储介质A的所有快照(此时仅有一个快照,即快照1),创建映射关系,映射关系中的第一信息可以为快照中各数据块(例如为),映射关系中的第二信息可以为快照中各数据块被引用次数,由于数据块均只被快照1引用,故而各数据块对应的第二信息均为“1”。当然,在其他实施例中,也可以采用其他方式标示被引用次数,例如,第二信息可以是引用该数据块的快照标识,本实施例对此不作限制。

针对存储介质A,用户在第二时间点创建快照2(snapshot 2),快照2中同样包括N个数据块,由于存储介质中的数据在第二时间点相较第一时间点只有数据块对应的区域存在变更,因此,快照2中引用快照1中的数据块,并针对存在数据变更的区域生成新的数据块。此时,针对存储介质A的所有快照,更新映射关系,将映射关系的第二信息中与数据块的第二信息的被引用次数加1(即调整为2),并将新创建的数据块的信息,对应添加到映射关系的第一信息和第二信息中,并将数据块对应的第二信息指示的被引用次数置为1。

当然,在其他实施例中,可以采用其他方式创建映射关系,本实施例对此不作限制。

在本实施例中,通过保存一个映射关系,利用该映射关系记录待计算的快照中的所有数据块及各数据块被引用次数,实现了记录数据块的使用情况的目的。此外,当多个快照包括同一数据块时,只需要调整映射关系中该数据块的第二信息(即被引用次数)即可,保证了映射关系中任意两个数据块均不重复,避免了出现重复数据块的问题。

本领域技术人员可以根据需要采用任何适当的方式获取与待计算的快照对应的映射关系,例如,根据待计算的快照的快照标识,确定对应的映射关系。或者,根据待计算的快照对应的存储介质,确定与存储介质对应的映射关系,等等。

步骤S106:根据所述映射关系中的第二信息,获取被引用次数满足设定阈值的数据块的数量,根据所述数据块的数量确定所述待计算的快照的占用空间。

其中,本领域技术人员可以根据需要确定设定阈值,以及满足设定阈值的具体条件。例如,在一具体实现中,设定阈值为1,满足设定阈值为大于或等于1。

由于映射关系通过第一信息指示了快照中的数据块,通过第二信息指示了各数据块被引用次数,因此,在获取待计算的快照对应的映射关系后,根据映射关系的第二信息,就可以计算出被引用次数满足设定阈值的数据块的数量,这一数据块的数量就是所有待计算的快照包含的所有非空、非重复数据块的数量。根据这一数据块的数量,可以确定所有待计算的快照的占用空间。

本领域技术人员可以根据需要确定设定阈值,本实施例对此不作限制。例如,设定阈值可以是1,即数据块至少被一个快照引用。

以图2中所示的映射关系为例,若待计算的快照为快照1和快照2,则获取到的映射关系中第一信息指示的数据块分别为,根据第二信息确定所有的数据块的被引用次数均大于或等于1,即满足设定阈值,故而被引用次数满足设定阈值的数据块的数量为N+1,根据数据块的数量和每个数据块的容量,即可以计算出待计算的快照的占用空间。

通过本实施例,根据获得的请求获得待计算的快照的信息,以根据待计算的快照的信息获取到与其对应的第一信息和第二信息的映射关系,通过映射关系记录计算各数据块被快照引用的次数,根据映射关系中的第二信息,确定被引用次数满足设定阈值的数据块的数量,进而根据数据块的数量确定待计算的快照的占用空间。由于基于待计算的快照的信息预先生成了映射关系,且映射关系中采用第一信息指示待计算的快照中的数据块,第二信息指示数据块被引用次数,因此可以根据映射关系方便地计算确定待计算的快照的占用空间,而且无需读取各待计算的快照的元数据信息,故而在计算占用空间时不必占用额外的带宽资源,而且对计算节点的系统资源占用少,其计算时的空间复杂度为O(1)级的。

本实施例的快照占用空间计算方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。

实施例二

参照图3,示出了根据本发明实施例二的一种快照占用空间计算方法的步骤流程图。

本实施例的快照占用空间计算方法包括前述的步骤S102~步骤S106。

在本实施例中,所述第一信息至少包括快照标识属性信息和数据块标识属性信息,所述快照标识属性信息用于指示创建数据块的快照,所述数据块标识属性信息用于指示数据块的唯一标识。和/或,所述第二信息至少包括引用计数属性信息,所述引用计数属性信息用于指示数据块的被引用次数。

在一具体实现中,为了更好地创建映射关系,并便于后续使用和维护映射关系。在本实施例中,创建BlockKeyType数据结构,用于存储各数据块对应的第一信息,以利用第一信息唯一指示各数据块。其中,BlockKeyType数据结构包括快照标识属性信息和数据块标识属性信息,以快照标识属性信息指示创建数据块的快照,利用数据块标识属性信息指示各数据块在创建其的快照中的序号。

例如,快照标识属性信息包括Snapshot Index(即快照索引值),通过其唯一标识针对某个存储介质的快照。数据块标识属性信息包括Segment Index(即片段索引值)和Block Index(块索引值),通过Segment Index和Block Index唯一标识某个数据块。

其中,Segment Index为快照中每个32G片段的索引值,唯一标识快照中的某个片段。如,快照1是针对容量为64G的存储介质生成的快照,快照1包括N个数据块,则可以将快照1分为2个32G的片段,分别记作片段1和片段2,每个片段均包括N/2个数据块。

Block Index为所述片段中每个数据块的索引值,唯一标识片段中的数据块,从零开始。各片段可以独立计数。如前述的片段1中的N/2个数据块中的数据块的Block Index可以由0记到N/2-1,同样地,片段2中的N/2个数据块中的数据块的Block Index也可以由0记到N/2-1。

这样映射关系中用于指示数据块的第一信息可以表示为,其中,snapshotIndex占用空间为4bytes,segmentIndex和blockIndex占用空间均为2bytes。使用8字节就可以存储一个数据块的第一信息,按照32G一个片段,4K一个数据块计算,blockIndex最大为8191,并且2bytes segmentIndex可以支持65535*32G=2047TB的存储介质。

针对第二信息,创建BlockValueType数据结构,用于存储第二信息,并通过第二信息指示数据块被引用次数。其中,BlockValueType数据结构包括引用计数属性信息。

例如,引用计数属性信息包括referenceCount(引用计数),通过其指示每个数据块在逻辑上被所有待计算的快照引用的次数。次数为零表示引用该数据块的所有快照都已经删除掉。

可选地,映射关系可以通过key-value型数据库进行存储,这样既能够保存数据块的使用情况,又可以实现快速查询。为此,可以创建BlockPairType数据结构和BlockMapType数据结构。其中,BlockPairType数据结构表示为,以指示每个数据块的key-value对。BlockMapType数据结构用于存储与存储介质对应的所有快照引用的不重复、非空数据块的BlockPairType信息。以采用2MB数据块,容量为2TB的存储介质,每个快照最多有1M个Key-Value对,最多占用10MB空间。这样可以使用很小的存储空间存储容量较大的存储介质的快照。

可选地,在本实施例中,所述方法还可以包括步骤S108~步骤S112,以创建前述的映射关系。步骤S108~步骤S112可以在步骤S102之前、之后或者并行执行,本实施例对此不作限制。

步骤S108:获取指示对所述映射关系进行更新的更新指令。

例如,在用户针对存储介质创建新的快照或者删除已有的快照时,根据对快照进行的操作,通过更新指令指示对映射关系进行更新,以保证映射关系的准确性,从而保证根据其计算的快照的占用空间的准确性。

步骤S110:从所述更新指令中获取待更新的快照的信息和更新操作内容信息。

更新指令可以包括待更新的快照的信息和更新操作内容信息。其中,待更新的快照的信息可以通过快照标识等指示待更新的快照。更新操作内容信息用于指示对待更新的快照执行的操作,例如删除操作、创建操作等。

本领域技术人员可以采用任何适当的方式从更新指令中获取待更新的快照的信息和更新操作内容信息,本实施例对此不作限制。例如,通过解析更新指令的方式获取,或者通过其他方式获取等。

步骤S112:根据所述快照的信息和所述更新操作内容信息,更新所述映射关系。

在第一种情况中,若更新操作内容信息确定对所述待更新的快照进行删除操作,则步骤S112包括:若根据所述更新操作内容信息确定对所述待更新的快照进行删除操作,则获取所述待更新的快照包括的第一数据块的信息;将所述映射关系中与所述第一数据块对应的第二信息指示的被引用次数进行对应减少调整。

在删除某一个或某几个快照时,获取这些快照(即待更新的快照)包括的第一数据块的信息,以便将映射关系中这些第一数据块的第二信息指示的被引用次数进行对应的减少调整,例如将被引用次数对应减一。

在第二种情况中,若更新操作内容信息确定对待更新的快照进行创建操作,在创建新的快照时,存在两种情况,其一为:创建的新快照包含的数据块都是已存在数据块,此时无需在映射关系中增加新的第一信息,只需要调整第二信息中对应的数据块的被引用次数即可;其二为:创建的新快照包含的数据块中一部分是已存在的数据块,另一部分是新的数据块,此时需要调整第二信息中已存在的数据块对应的被引用次数,另在第一信息中添加新的数据块,并在第二信息中添加与新的数据块对应的信息,以指示新的数据块的被引用次数为预设初始值。

故而基于前述两种可能的情况,步骤S112可以实现为:若根据所述更新操作内容信息确定对所述待更新的快照进行创建操作,则根据所述快照的信息和所述映射关系中的第一信息,确定所述待更新的快照包含的第二数据块中待创建的数据块和/或待引用的数据块;根据所述待引用的数据块的信息,将所述映射关系中与所述待引用的数据块对应的第二信息指示的被引用次数进行对应增加调整;和/或,根据所述待创建的数据块的信息,生成对应的第一信息和第二信息,并将生成的所述第二信息指示的被引用次数置为预设初始值。

这样根据第一信息确定待更新的快照包含的第二数据块中待创建的数据块(即不存在映射关系中不存在的数据块)和/或待引用的数据块(即映射关系中已存在的数据块),针对待创建的数据块,在映射关系中添加与待创建的数据块对应的第一信息,并将与待创建的数据块的第一信息对应的第二信息指示的被引用次数置为预设初始值(例如,“1”);针对待引用的数据块,在映射关系中对与其对应的第二信息指示的被引用次数进行增加调整(如,将被引用次数加一)。

通过这种方式可以在快照变化(创建和删除)时更新映射关系,从而使得后续可以根据映射关系准确地计算与映射关系对应的快照的占用空间,从而避免了现有技术中计算占用空间时,需要从对象存储服务(OSS)或者其他存储节点读取快照的元数据信息,因而减少了对网络带宽的需求,并且由于映射关系占用的存储空间很少,根据其进行计算时可以使用固定的内存进行计算,减少了对计算节点的系统资源的占用,从而降低对业务的影响。

可选地,在更新操作内容信息确定对所述待更新的快照进行删除操作时,所述方法还可以执行下述步骤:若进行了减少调整后的数据块的被引用次数不满足所述设定阈值,则将不满足所述设定阈值的第二信息及对应的第一信息从所述映射关系中删除。

在本实施例中,本领域技术人员可以根据需要确定设定阈值,以及确定不满足设定阈值的具体条件。例如,设定阈值为1,不满足设定阈值为小于1。在进行了减少调整后的数据块的被引用次数不满足所述设定阈值时,表示一个或一个以上的数据块被引用次数为0,即无任何快照引用这些数据块,此时可以将这些数据块对应的第一信息和第二信息从映射关系中删除,以节省存储空间。

通过本实施例,使用映射关系记录对应的快照中各数据块的被引用次数,从而使得后续可以根据映射关系计算待计算的快照的占用空间。其中,映射关系采用key-value结构记录数据块的被引用情况,使得对数据块的查询更加快速。

此外,在对快照进行更新时,能够获取对应的更新指令,从而根据更新指令对映射关系进行更新,从而保证映射关系中信息的准确性,进而保证后续根据映射关系计算快照占用空间的准确性。

根据获得的请求获得待计算的快照的信息,以根据待计算的快照的信息获取到与其对应的第一信息和第二信息的映射关系,通过映射关系记录计算各数据块被快照引用的次数,根据映射关系中的第二信息,确定被引用次数满足设定阈值的数据块的数量,进而根据数据块的数量确定待计算的快照的占用空间。由于基于待计算的快照的信息预先生成了映射关系,且映射关系中采用第一信息指示待计算的快照中的数据块,第二信息指示数据块被引用次数,因此可以根据映射关系方便地计算确定待计算的快照的占用空间,而且无需读取各待计算的快照的元数据信息,故而在计算占用空间时不必占用额外的带宽资源,而且对计算节点的系统资源占用少,其计算时的空间复杂度为O(1)级的。

本实施例的快照占用空间计算方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。

使用场景:

如图4所示,示出了一种在本使用场景中根据快照生成映射关系的示意图。在本使用场景中,以针对存储介质A,生成多个快照为例对映射关系生成过程和根据映射关系计算快照的占用空间的过程进行说明如下。其中,存储介质A可以是虚拟机磁盘(即虚拟机块设备,简称云盘)。

其中,映射关系的生成过程为:

步骤A1:生成映射关系。

在时间点A,针对存储介质A生成了一个全量快照(该快照用于记录某个存储介质A如云盘的某个时间点的数据变化),记作快照1,其包括N个数据块,分别记作。快照可以是标准快照(即上传到OSS的快照),也可以是秒级快照(即云盘的快照,快照的数据存储于分布式文件系统,秒级可用)。数据块可以是针对云盘的逻辑空间按照2MB字节划分的区域生成的数据块。快照的占用空间是所有存在的快照在分布式文件系统中逻辑占用空间。

根据快照1创建对应的映射关系,通过映射关系保存针对存储介质A的所有数据块与被引用次数的映射关系。

创建的映射关系的第一信息包括这N个数据块的快照标识属性信息和数据块标识属性信息,以BlockKeyType数据结构存储,其可以表示为,也可以采用其他数据结构存储,例如以表示。创建的映射关系中的第二信息包括各数据块的引用计数属性信息,以BlockValueType数据结构存储,其可以表示为referenceCount。由于仅有一个快照,所以,各数据块被引用次数为1。针对快照1生成的映射关系如图4中1处所示。

步骤B1:更新映射关系。

情况一:若在时间点B,针对存储介质A生成了一个新的快照,记作快照2,其包括N个数据块。此外,存储介质A的数据在时间点B相较于时间点A时,只有所对应的区域存在数据变化,则在快照2中,针对所对应的区域的数据生成新的数据块,记作,其他的数据块均可以引用快照1中的数据块,即快照2包括的数据块为

由于对快照进行了更新操作,因而生成更新指令,并对映射关系进行更新。

更新的原则如下:

针对新创建的快照2中所有非新创建的数据块,把映射关系中所有非新创建的数据块对应的第二信息指示的被引用次数加1。即将与数据块的第二信息指示的被引用次数由“1”变为“2”。

针对新创建的快照2中所有新创建的数据块,在映射关系的第一信息中添加与新创建的数据块对应的信息,并将第二信息中与新添加的信息对应的信息指示的被引用次数置为预设初始值。即在映射关系的第一信息中添加与数据块的信息,在第二信息中,将与数据块对应的信息置为“1”。针对快照1和快照2生成的映射关系如图4中2处所示。

基于同样的过程,在时间点C,创建快照C,且快照C包括数据块时,针对快照1~3生成的映射关系如图4中3处所示。

在时间点D,创建快照D,且快照D包括数据块时,针对快照1~4生成的映射关系如图4中4处所示。

由于根据快照3和快照4对映射关系进行更新的过程与根据快照2对映射关系进行更新的过程类似,故不再赘述。

情况二:若在时间点E,将快照4删除,由于对快照进行了更新操作,因而生成更新指令,并对映射关系进行更新。

更新原则如下:

由于快照4包括数据块,因此,需要将映射关系中与这些数据块对应的第二信息中指示的被引用次数减1,即更新后映射关系如图4中5处所示。

如果更新后的映射关系中存在被引用次数为0的数据块,则可以将其从映射关系中删除,删除后的映射关系如图4中6处所示。

通过上述的过程,生成的映射关系中记录的数据块的数量就是所有快照中非空且不重复的数据块个数。

基于映射关系计算快照的占用空间的过程如下:

步骤A2:获取计算请求,根据计算请求获取待计算的快照的信息。

例如,用户针对存储介质A创建了4个快照,即快照1~4,计算请求指示计算用户针对存储介质A创建的快照的占用空间。则可以根据计算请求获取的到待计算的快照的信息,例如获取到快照1~4的快照标识。

步骤B2:根据待计算的快照的信息,获取对应的映射关系。

根据待计算的快照的快照标识,可以通过查找预设的对应关系表等方式获取到与其对应的映射关系。

步骤C2:根据映射关系的第二信息,获取被引用次数满足设定阈值的数据块的数量,根据所述数据块的数量确定所述待计算的快照的占用空间。

在获得映射关系后,根据其中的第二信息可以确定满足设定阈值的数据块的数量,再将数据块的数量乘以每个数据块的容量(即block size),就可以计算出待计算的快照总的占用空间。

其中,图4中BlockIdType是指快照中记录数据块信息的数据结构,包括,snapshotid指示数据块所属的快照,唯一标识一个快照;blockindex指示数据块在快照中的逻辑索引值,从零开始。

通过这种方法,可以在分析快照的数据块的信息的同时将更新的信息记录到映射关系中,所以在根据映射关系计算快照的占用空间时不需要额外的内存空间保存计算结果。所以空间复杂度为O(1)。并且在计算快照的占用空间时,不需要读取快照的元数据信息,减少了对网络带宽的需要。

实施例三

参照图5,示出了根据本发明实施例三的一种快照占用空间计算装置的结构框图。

本实施例的快照占用空间计算装置包括:第一获取模块502,用于根据指示对快照的占用空间进行计算的请求,获取待计算的快照的信息;第二获取模块504,用于根据所述待计算的快照的信息,获取待计算的快照对应的第一信息和第二信息的映射关系,其中,所述第一信息用于指示待计算的快照中的数据块,所述第二信息用于指示数据块的被引用次数;计算模块506,用于根据所述映射关系中的第二信息,获取被引用次数满足设定阈值的数据块的数量,根据所述数据块的数量确定所述待计算的快照的占用空间。

通过本实施例,根据获取的请求获得待计算的快照的信息,以根据待计算的快照的信息获取到与其对应的第一信息和第二信息的映射关系,通过映射关系记录计算各数据块被快照引用的次数,根据映射关系中的第二信息,确定被引用次数满足设定阈值的数据块的数量,进而根据数据块的数量确定待计算的快照的占用空间。由于基于待计算的快照的信息预先生成了映射关系,且映射关系中采用第一信息指示待计算的快照中的数据块,第二信息指示数据块被引用次数,因此可以根据映射关系方便地计算确定待计算的快照的占用空间,而且无需读取各待计算的快照的元数据信息,故而在计算占用空间时不必占用额外的带宽资源,而且对计算节点的系统资源占用少,其计算时的空间复杂度为O(1)级的。

实施例四

参照图6,示出了根据本发明实施例五的一种快照占用空间计算装置的结构框图。

本实施例的快照占用空间计算装置包括:第一获取模块602,用于根据指示对快照的占用空间进行计算的请求,获取待计算的快照的信息;第二获取模块604,用于根据所述待计算的快照的信息,获取待计算的快照对应的第一信息和第二信息的映射关系,其中,所述第一信息用于指示待计算的快照中的数据块,所述第二信息用于指示数据块的被引用次数;计算模块606,用于根据所述映射关系中的第二信息,获取被引用次数满足设定阈值的数据块的数量,根据所述数据块的数量确定所述待计算的快照的占用空间。

可选地,所述第一信息至少包括快照标识属性信息和数据块标识属性信息,所述快照标识属性信息用于指示创建数据块的快照,所述数据块标识属性信息用于指示数据块的唯一标识;和/或,所述第二信息至少包括引用计数属性信息,所述引用计数属性信息用于指示数据块的被引用次数。

可选地,所述装置还包括:第三获取模块608,用于获取指示对所述映射关系进行更新的更新指令;第四获取模块610,用于从所述更新指令中获取待更新的快照的信息和更新操作内容信息;更新模块612,用于根据所述快照的信息和所述更新操作内容信息,更新所述映射关系。

可选地,所述更新模块612包括:第五获取模块6121,用于若根据所述更新操作内容信息确定对所述待更新的快照进行删除操作,则获取所述待更新的快照包括的第一数据块的信息;减少调整模块6122,用于将所述映射关系中与所述第一数据块对应的第二信息指示的被引用次数进行对应减少调整。

可选地,所述装置还包括:删除模块614,用于若进行了减少调整后的数据块的被引用次数不满足所述设定阈值,则将不满足所述设定阈值的第二信息及对应的第一信息从所述映射关系中删除。

可选地,所述更新模块612包括:确定模块6123,用于若根据所述更新操作内容信息确定对所述待更新的快照进行创建操作,则根据所述快照的信息和所述映射关系中的第一信息,确定所述待更新的快照包含的第二数据块中待创建的数据块和/或待引用的数据块;增加模块6124,用于根据所述待引用的数据块的信息,将所述映射关系中与所述待引用的数据块对应的第二信息指示的被引用次数进行对应增加调整;和/或,创建模块6125,用于根据所述待创建的数据块的信息,生成对应的第一信息和第二信息,并将生成的所述第二信息指示的被引用次数置为预设初始值。

本实施例的快照占用空间计算装置用于实现前述多个方法实施例中相应的快照占用空间计算方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的快照占用空间计算装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。

实施例五

参照图7,示出了根据本发明实施例五的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。

如图7所示,该电子设备可以包括:处理器(processor)702、通信接口(Communications Interface)704、存储器(memory)706、以及通信总线708。

其中:

处理器702、通信接口704、以及存储器706通过通信总线708完成相互间的通信。

通信接口704,用于与其它电子设备如终端设备或服务器进行通信。

处理器702,用于执行程序710,具体可以执行上述快照占用空间计算方法实施例中的相关步骤。

具体地,程序710可以包括程序代码,该程序代码包括计算机操作指令。

处理器702可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。

存储器706,用于存放程序710。存储器706可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

程序710具体可以用于使得处理器702执行以下操作:根据指示对快照的占用空间进行计算的请求,获取待计算的快照的信息;根据所述待计算的快照的信息,获取待计算的快照对应的第一信息和第二信息的映射关系,其中,所述第一信息用于指示待计算的快照中的数据块,所述第二信息用于指示数据块的被引用次数;根据所述映射关系中的第二信息,获取被引用次数满足设定阈值的数据块的数量,根据所述数据块的数量确定所述待计算的快照的占用空间。

在一种可选的实施方式中,所述第一信息至少包括快照标识属性信息和数据块标识属性信息,所述快照标识属性信息用于指示创建数据块的快照,所述数据块标识属性信息用于指示数据块的唯一标识;和/或,所述第二信息至少包括引用计数属性信息,所述引用计数属性信息用于指示数据块的被引用次数。

在一种可选的实施方式中,程序710还用于使得处理器702获取指示对所述映射关系进行更新的更新指令;从所述更新指令中获取待更新的快照的信息和更新操作内容信息;根据所述快照的信息和所述更新操作内容信息,更新所述映射关系。

在一种可选的实施方式中,程序710还用于使得处理器702在根据所述快照的信息和所述更新操作内容信息,更新所述映射关系时,若根据所述更新操作内容信息确定对所述待更新的快照进行删除操作,则获取所述待更新的快照包括的第一数据块的信息;将所述映射关系中与所述第一数据块对应的第二信息指示的被引用次数进行对应减少调整。

在一种可选的实施方式中,程序710还用于使得处理器702若进行了减少调整后的数据块的被引用次数不满足所述设定阈值,则将不满足所述设定阈值的第二信息及对应的第一信息从所述映射关系中删除。

在一种可选的实施方式中,程序710还用于使得处理器702在根据所述快照的信息和所述更新操作内容信息,更新所述映射关系时,若根据所述更新操作内容信息确定对所述待更新的快照进行创建操作,则根据所述快照的信息和所述映射关系中的第一信息,确定所述待更新的快照包含的第二数据块中待创建的数据块和/或待引用的数据块;根据所述待引用的数据块的信息,将所述映射关系中与所述待引用的数据块对应的第二信息指示的被引用次数进行对应增加调整;和/或,根据所述待创建的数据块的信息,生成对应的第一信息和第二信息,并将生成的所述第二信息指示的被引用次数置为预设初始值。

程序710中各步骤的具体实现可以参见上述快照占用空间计算方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。

通过本实施例的电子设备,根据获取的请求获得待计算的快照的信息,以根据待计算的快照的信息获取到与其对应的第一信息和第二信息的映射关系,通过映射关系记录计算各数据块被快照引用的次数,根据映射关系中的第二信息,确定被引用次数满足设定阈值的数据块的数量,进而根据数据块的数量确定待计算的快照的占用空间。由于基于待计算的快照的信息预先生成了映射关系,且映射关系中采用第一信息指示待计算的快照中的数据块,第二信息指示数据块被引用次数,因此可以根据映射关系方便地计算确定待计算的快照的占用空间,而且无需读取各待计算的快照的元数据信息,故而在计算占用空间时不必占用额外的带宽资源,而且对计算节点的系统资源占用少,其计算时的空间复杂度为O(1)级的。

需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。

上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的快照占用空间计算方法。此外,当通用计算机访问用于实现在此示出的快照占用空间计算方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的快照占用空间计算方法的专用计算机。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。

以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号