CN109271278A - 一种确定磁盘快照数据切片的引用次数的方法和装置 - Google Patents
一种确定磁盘快照数据切片的引用次数的方法和装置 Download PDFInfo
- Publication number
- CN109271278A CN109271278A CN201710585799.9A CN201710585799A CN109271278A CN 109271278 A CN109271278 A CN 109271278A CN 201710585799 A CN201710585799 A CN 201710585799A CN 109271278 A CN109271278 A CN 109271278A
- Authority
- CN
- China
- Prior art keywords
- slice
- title
- snapshot
- offset
- counted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种确定磁盘快照数据切片的引用次数的方法和装置,其中,该方法包括:根据待统计切片在磁盘中的偏移,对比切片数组中对应偏移处的切片名称与所述待统计切片的切片名称是否相同,其中,所述切片数组中按顺序存储有所述磁盘对应的快照链中的基准快照的各个切片的切片名称;在确定所述切片数组中对应偏移处的切片的切片名称与所述待统计切片的切片名称相同的情况下,更新所述切片数组中与所述待统计切片的切片名称相同的切片的被引用次数。因为基于偏移的数组查询效率比集合高出很多,因此,采用本例中的切片数量统计方式可以有效提高切片数量统计的效率。
Description
技术领域
本申请属于计算机技术领域,尤其涉及一种确定磁盘快照数据切片的引用次数的方法和和装置。
背景技术
磁盘快照主要用于备份和容灾,通过在不同的时间点对一块磁盘创建若干个快照形成一条快照链,可以在确定需要恢复磁盘数据的时候,进行磁盘数据的回滚,从而将磁盘上的数据恢复至快照链上任一个快照的内容。
然而,在实际的应用场景中,一块磁盘往往会定时创建快照(例如:每天一次),形成快照链,以记录多个历史时间点上的信息。快照功能在实现的时候,可以对磁盘按照偏移分成多个区间(例如:每2MB作为一个区间),区间数据作为快照的一个数据块(又可以称为:数据切片、数据分片)。
考虑到磁盘数据有冷热之分,很多数据很久才会发生改动。因此,一个快照链中的各个快照的数据内容往往只有少量区别,为了节省空间,一般快照系统都采用去重存储的方式:在创建快照的时候,检查当前磁盘的每一个区间,如果区间内容与老快照对应切片(数据块)相比有改动,那么新快照就使用新数据创建的新切片(数据块),否则,新快照将继续使用老快照的切片(数据块)。
具体的,如图1所示,磁盘按地址偏移分4个切片(切片1至切片4),在创建磁盘快照A的时候,就可以形成4个切片(切片1-A至切片4-A),在创建磁盘快照B的时候,假设当时只有切片1和切片3对应磁盘区间的数据有修改,那么在创建快照B的时候,可以仅创建切片1-B和切片3-B,快照B的切片2和切片4继续使用快照A中的对应切片。
即,一个磁盘的快照链,会存储每个数据切片(重复的切片只会存储一个),且每个快照都有一个切片列表,用于记录该快照用到的切片名称,以便后续读取切片数据。
通过快照中切片的去重处理节省了大量的存储空间,但是需要维护和更新切片存储空间的信息,为此,就需要对快照中切片的数量以及各个切片被引用的次数等信息进行统计。
目前,在进行切片数量及引用次数被统计的时候,是预先创建一个切片名称的集合,然后,遍历每个快照的切片名称列表,确定该列表中每个切片是否在集合中,如果在集合中遍历到该切片,那么切片的被引用计数加一,如果集合中没有遍历到该切片,那么就将该切片增加至集合中。在遍历结束之后,集合内切片的数量即为这组快照实际存放的切片数(即,去除快照间重复切片后的数量),集合中每个切片被引用的次数,即标识了该切片被多少快照使用。
然而,考虑到快照链中的数据量较大,在进行切片数量统计的时候,采用现有的方式需要大量的查询操作,会耗费大量的时间和计算资源。
针对如何提高统计效率,目前尚未提出有效的解决方案。
发明内容
本申请目的在于提供一种确定磁盘快照数据切片的引用次数的方法和装置,可以实现快速高效确定磁盘快照中各个切片被引用的次数。
本申请提供一种确定磁盘快照数据切片的引用次数的方法和装置是这样实现的:
一种确定磁盘快照数据切片的引用次数的方法,所述方法包括:
根据待统计切片在磁盘中的偏移,对比预先建立的映射表中对应偏移处的切片名称与所述待统计切片的切片名称是否相同,其中,所述映射表中按照偏移顺序存储有所述磁盘对应的快照链中的基准快照的各个切片的切片名称;
在确定所述映射表中对应偏移处的切片名称与所述待统计切片的切片名称相同的情况下,更新所述映射表中与所述待统计切片的切片名称相同的切片的被引用次数。
一种确定磁盘快照数据切片的引用次数的方法,所述方法包括:
将磁盘的快照链中的基准快照的各个切片的切片名称,按照偏移顺序存储至预先建立的映射表中;
按照以下方式遍历所述快照链中除所述基准快照之外的快照的切片:
根据当前快照的当前切片在磁盘中的偏移,对比所述映射表中对应偏移处的切片名称与所述当前切片的切片名称是否相同;
如果相同,则更新所述映射表中与所述待统计切片的切片名称相同的切片的被引用次数;
如果不相同,则遍历切片集合,以确定所述切片集合中是否存储有与所述当前切片的切片名称相同的切片;在确定所述切片集合中未存储与所述当前切片的切片名称相同的切片的情况下,将所述当前切片的切片名称添加至所述切片集合中。
一种磁盘快照数据切片的更新方法,所述方法包括:
根据待统计切片在磁盘中的偏移,确定预先建立的映射表中对应偏移处的切片名称;
将所述对应偏移处的切片名称与所述待统计切片的切片名称进行对比;
根据对比结果,更新切片集合。
一种确定磁盘快照数据切片的引用次数的装置,所述装置包括:
对比模块,用于根据待统计切片在磁盘中的偏移,对比预先建立的映射表中对应偏移处的切片名称与所述待统计切片的切片名称是否相同,其中,所述映射表中按照偏移顺序存储有所述磁盘对应的快照链中的基准快照的各个切片的切片名称;
第一更新模块,用于在确定所述映射表中对应偏移处的切片名称与所述待统计切片的切片名称相同的情况下,更新所述映射表中与所述待统计切片的切片名称相同的切片的被引用次数。
一种确定磁盘快照数据切片的引用次数的装置,所述装置包括:
存储模块,用于将磁盘的快照链中的基准快照的各个切片的切片名称,按照偏移顺序存储至预先建立的映射表中;
执行模块,用于按照以下方式遍历所述快照链中除所述基准快照之外的快照的切片:根据当前快照的当前切片在磁盘中的偏移,对比所述映射表中对应偏移处的切片名称与所述当前切片的切片名称是否相同;如果相同,则更新所述映射表中与所述待统计切片的切片名称相同的切片的被引用次数;如果不相同,则遍历切片集合,以确定所述切片集合中是否存储有与所述当前切片的切片名称相同的切片;在确定所述切片集合中未存储与所述当前切片的切片名称相同的切片的情况下,将所述当前切片的切片名称添加至所述切片集合中。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
本申请提供的确定磁盘快照数据切片数量的方法和装置,在预先建立的映射表中按照偏移顺序存储基准快照中各个切片的切片名称,这样在进行切片引用次数统计的时候,先对比该映射表中是否有要查找的切片,如果映射表中没有,再到集合中查找。因为映射表是按照偏移顺序存储的,因此,只需要一次查询即可,查询效率比集合高出很多,因此,采用本例中的切片引用次数统计方式可以有效提高切片引用次数统计的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是磁盘的快照链中各个快照的分片示意图;
图2是现有的分片统计方法流程图;
图3是本申请提供的确定磁盘快照数据切片数量的方法的一种方法流程图;
图4是本申请提供的统计方法中数组和集合的存储示意图;
图5是本申请提供的确定磁盘快照数据切片数量的方法的另一种方法流程图;
图6是本申请提供的确定磁盘快照数据切片数量的方法的又一种方法流程图;
图7是本申请提供的服务器的一种模型结构示意图;
图8是本申请提供的确定磁盘快照数据切片数量的装置一种实施例的模块结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为了实现对切片引用次数的统计,现有的方式主要是采用如图2所示的大集合方式进行的,具体的,可以包括如下步骤:
S1:在内存中创建一个存放切片名称的集合A,其中,该集合开始为空集;
S2:遍历每个快照的切片名称列表;
S3:对快照对应的切片名称列表中的每个分片,对集合A中的所有切片进行遍历对比,以确定该切片是否在集合A中,如果确定该切片在该集合A中,则集合A中该切片的被引用的次数加1,如果该切片不在集合A中,则将该切片添加至集合A中;
举例而言,假设磁盘的磁盘空间为:100GB-2TB,快照链中有:5-10个快照,在集合统计去重的过程中,单次查询大概需要经过10-30次的比较操作。
S4:遍历完所有快照,就可以得到一个切片集合,集合内切片的总量即为这组快照实际存放的切片数(这是去除快照间重复切片后的切片数量),集合中每个切片的被引用次数的计数器,表征了该切片当前被多少个快照引用。
由此可见,因为快照链里的数据量非常大,因此,采用上述方式进行切片统计,需要进行大量的查询操作,会耗费大量的时间和计算资源。
对此,考虑到现有方式之所以需要耗费大量的时间和计算资源,是因为大集合方式在对集合中元素进行查找的时候,需要逐个进行遍历查找,因此时间复杂度比较高。基于此,考虑到在快照的使用过程中,同一磁盘的不同快照之间,数量改动是比较小的,快照仅对有数据改动的磁盘偏移区间创建新的切片存放,主要都还是引用的上一级快照中的切片。
在执行的过程中,一般磁盘对应的快照链中的位于前面的快照的切片是会被后面快照引用的。为此,考虑到可以选择一个基准快照,将该基准快照的切片名称列表中的每个切片,按照偏移将切片名称顺序存放到单独的映射表中,即,切片1放到1号位,切片2放到2号位…,因为是采用偏移作为顺序采用映射表的方式存储的,因此,可以一次查询到地址。
在实现的时候,考虑到越是前面的快照的切片被后面快照引用的可能性越大,因此,可以选择快照链中的第一快照作为基准快照。当然,也可以是选择第二快照、第三快照等等位于快照链相对靠前的快照作为基准快照。
图3是本申请所述一种对磁盘快照数据切片进行统计的方法一个实施例的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
如图3所示,提供了一种确定磁盘快照数据切片的引用次数的方法,可以包括如下步骤:
步骤301:根据待统计切片在磁盘中的偏移,对比预先建立的映射表中对应偏移处的切片名称与所述待统计切片的切片名称是否相同,其中,所述映射表中按照偏移顺序存储有所述磁盘对应的快照链中的基准快照的各个切片的切片名称;
其中,磁盘快照表示磁盘某一时刻的存储内容的完整记录,用户可以将磁盘恢复成其某一个快照的数据内容,快照一般是由多个数据块(又称数据切片)组成。一块磁盘在不同时间创建的各个快照,称之为快照链,底层在存放快照链的时候,往往会去除快照链中各个快照之间的重复数据块,以节省空间。因快照链是按照时间顺序存储的磁盘快照,因此,可以将快照链中最先存进去的磁盘快照称为第一快照。即,将快照链中最早时间点存进去的快照,称为第一快照。举例而言,某个快照链是从2017年6月1日00:00分建立的,每隔5分钟更新一次,相应的,2017年6月1日00:00分存入的磁盘快照就是该快照链的第一个快照,2017年6月1日00:05分存入的磁盘快照就是该快照链的第二个快照。在选取基准快照的时候,可以选择第一快照作为基准快照,也可以选择第二、第三快照等等作为基准快照,也可以同时选择两个或者更多个快照一起作为基准快照。选择哪个或者哪些快照作为基准快照,可以根据实际需要确定,本申请对此不作限定。
上述映射表是按照数据块在磁盘中的偏移顺序存储的,只要能实现这种顺序直接映射的存储方式都可以作为该映射表的存在形式。例如:可以采用数组的形式,也可以采用顺序表格的方式等等,只要是能实现这种基于偏移的直接映射,一次查询的方式都可以。下面以采用数组的方式为例进行说明,在本例中,以第一快照作为基准快照。值得注意的是,该方式仅是为了更好地说明本申请,在实际实现的时候,可以根据需要和实际情况选择其它的方式,本申请对此不作限定。
如图4所示,以第一快照(快照A,即快照链中存入时间最早的磁盘快照)中的各个切片的切片名称为:切片1-A、切片2-A、切片3-A、切片4-A…切片n-A,按照偏移将“切片1-A、切片2-A、切片3-A、切片4-A…切片n-A”存储至数组A中。
当前待统计的切片为快照C中的第二个切片,如果当前快照C的第二个切片为引用的快照A中的第二个切片:切片2-A。那么可以直接通过偏移到数组A中查找第二个元素,确定是否为切片2-A,在确定数组A中的第二个元素为切片2-A的情况,就可以确定在数组A中查找到了待统计的切片。如果当前快照C的第二个切片不是引用的快照A中的第二个切片,那么相应的在数组A中的第二个元素与快照A中的第二个切片也就是不同的。
即,可以按照在整个磁盘中的偏移,直接确定从数组A中查找对应的元素是否匹配,以确定在数组A中是否有要查找统计的切片。
在一个实现方式中,数组中的各个元素可以是切片名称,这样在实现的时候,直接依据快照的切片名称列表,确定数组中是否存储有要查找的切片。
因为上述映射表中存储的是磁盘对应的快照链中第一快照(基准快照)的各个切片的切片名称,而第一快照中各个切片在后续快照中引用频率相对较高,采用基于偏移的映射表存放方式,可以有效提高查找的效率。
在一个实施方式中,待统计切片的切片名称可以是从快照的切片名称列表中获取的。
具体的,在上述步骤301之前,可以遍历磁盘对应的快照链中基准快照的切片名称列表,将每一个切片的切片名称,按照偏移存放到映射表中。相应的,根据待统计切片在磁盘中的偏移,对比映射表中对应偏移处的切片名称与所述待统计切片的切片名称是否相同,可以是先通过待统计切片在磁盘中的偏移,匹配出所述映射表对应位置的元素,确定配出的元素位置存储的切片名称与所述待统计切片的切片名称是否相同。
步骤302:在确定所述切片数组中对应偏移处的切片名称与所述待统计切片的切片名称相同的情况下,更新所述切片数组中与所述待统计切片的切片名称相同的切片的被引用次数。
基于上述方式进行切片引用次数的统计,可以有效提高统计效率,且最终映射表中所存储的切片数量即为切片的总数量。在统计的过程中,待统计的切片先在映射表中进行比对,如果确定映射表中对应位置的切片名称与待统计切片名称相同,那么就确定在该映射表中有该待统计切片,这时就可以对该切片的引用次数进行更新,具体的,可以对该切片的被引用次数+1。例如:快照A对应的第二个切片:切片2-A,算作被快照A引用一次,快照B对应的第二个切片也是引用的快照A的第二个切片,那么,就算作被快照B引用一次,那么引用次数就是2,继续在比对到对照C,如果快照C也是引用的切片2-A,那么切片2-A的被引用次数就是3…从而实现对切片2-A被引用次数的统计。
在确定映射表中没有待统计切片的情况下,就可以到集合中进行查找,即,在确定映射表中对应偏移处的切片名称与所述待统计切片的切片名称不相同的情况下,遍历切片集合中的切片名称,以确定所述切片集合中是否存储有与待统计切片的切片名称相同的切片名称;在确定所述切片集合中存储有与所述待统计切片的切片名称相同的切片名称的情况下,更新所述切片集合中与所述待统计切片的切片名称相同的切片的被引用次数;在确定所述切片集合中未存储与所述待统计切片的切片名称相同的切片名称的情况下,将所述待统计切片的切片名称添加至所述切片集合中。
举例而言,如图4所示,查找快照D中的第三个切片,快照D中的第三个切片引用的是快照C中的第三个切片:切片3-C,在数组A中查找不到该切片,这时可以到集合B中查找,如果集合B采用的大集合的方式,未按照偏移存储,那么可以逐个进行遍历,从而查找到集合B中存在切片3-C。因此,可以更新切片3-C的被引用次数。
查找快照F中的第5个切片:切片5-F,在数组A中未找到给切片,进一步的,到集合B中查找,也并未查找到切片5-F,此时,可以将切片5-F增加至集合B,从而得到如图4所示的数组和集合。
在实现的时候,上述切片集合B可以采用但不限于以下之一:二叉树型数据集合、哈希型数据集合。其中,二叉树型集合,查询一个元素是否存在的时间复杂度为O(logN),其中,N为集合内元素数量。哈希型集合,查询一个元素是否存在的时间复杂度为O(d),其中,d为一个常数,取值可以为10至15,具体的,d的大小与集合占用的内存空间有关系。在实际选择的时候,可以从查询效率和内存的使用情况,确定采用哪种类型的数据集合。
考虑到映射表这种带偏移的数据结构的存储方式,占用的存储空间比较大,在实现的时候,仅将第一个快照的各个切片放在映射表中,对于其它的快照中新出现的切片,则以集合的方式存储。为了实现高效的存储,集合中的切片可以采用散乱的方式直接存放,也可以采用带标识的方式存储,具体的,也可以采用偏移的方式,对于同一偏移中新的切片存储在一起的方式,在查找的时候,也按照偏移直接到存储该偏移中各个新切片的集合部分进行查找,以便达到快速查找的目的,当然,这种方式也会需要占用一定量的存储空间。具体采用那种类型的数据集合,采用哪种方式形成数据集合,可以根据实际情况和需要选择,本申请对此不作限定。
在上述各个实施方式中,更新切片数组中与待统计切片的切片名称相同的切片的被引用次数,可以包括:将切片数组中与待统计切片的切片名称相同的切片的被引用次数加一。
上述的磁盘可以是云磁盘,也可以是其它的用于数据储存的媒介。其中,云磁盘是建立在分布式存储系统之上的磁盘实例,在云服务器中可当做计算机磁盘一样进行读写使用,其中,云服务器是由云主机厂商提供的,基于云计算技术生产出来,让用户能以远程登陆的方式进行操作管理的服务器。
在本申请实施例中还提供了一种确定磁盘快照数据切片数量的方法,如图5所示,可以包括以下步骤:
步骤501:将磁盘的快照链中的基准快照的各个切片的切片名称,按照偏移存储至预先建立的映射表中;
步骤502:按照以下方式遍历所述快照链中除所述基准快照之外的快照的切片:
S1:根据当前快照的当前切片在磁盘中的偏移,对比所述映射表中对应偏移处的切片名称与所述当前切片的切片名称是否相同;
S2:如果相同,则更新所述映射表中与所述待统计切片的切片名称相同的切片的被引用次数;
S3:如果不相同,则遍历切片集合,以确定所述切片集合中是否存储有与所述当前切片的切片名称相同的切片;在确定所述切片集合中未存储与所述当前切片的切片名称相同的切片的情况下,将所述当前切片的切片名称添加至所述切片集合中。
即,将基准快照中切片按照偏移存储在映射表中,然后对于后续的快照,逐个切片比较确定映射表中是否有要统计的切片,如果映射表中有,就将映射表中切片的引用次数更新,如果映射表中没有,再到集合中查找,如果集合中有,就将集合中该切片的引用次数更新,如果集合中也没有,就在该集合中增加该切片。
在上例中,将基准快照(例如:第一快照、第二快照等)作为全量快照,将基准快照的分片作为热点数据,并设置热点数据的直接映射数组,减少了查询次数,提高了统计效率。
下面结合一具体场景对上述方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
考虑到在快照场景中,快照间数据改动是很少的,基于去重设计,快照只会对有数据改动的磁盘偏移区间创建新的切片进行存放,因此,各快照都有不少切片实际上是引用上一级快照的对应切片的,其中,第一快照(又称全量快照,它没有上一级,因此,每个偏移区间都创建了切片存放)的各个切片,会经常被后续的快照引用。
为此,将第一快照的切片列表,在内存里进行热点存储,以提高查询效率,从而减少查询次数,即,采用数组和集合的方式实现,可以如图6所示,可以包括以下步骤:
S1:在内存中创建用于存放切片名称的数组A,用于存放切片名称的集合B,其中,数组A和集合B都是空集。
S2:遍历第一快照的切片名称列表,将每一个切片,按照偏移顺序存放放到数组A中。即,分片1放到1号位,分片2放到2号位,以便可以一次性查询到地址。
S3:遍历后续快照的切片名称列表,后续快照的每一个切片,首先基于偏移,查询数组A对应空位的切片名称。如果数组A对应空位的切片名称和当前切片一致,则更新使用计数;如果不一致,再去集合B中按切片名称查询和更新计数。
S4:所有快照遍历完成,所得到的数组A+集合B的统计信息即为所需要的统计信息。
其中,数组A是基于偏移的一一映射,查询时间为O(1),一次到位,集合B的查询时间为O(logN)或O(d)。在实际场景里,因为快照之间改动数据量少,第一快照的分片往往被很多快照引用,因此,大量查询会命中数组A,相应的比较次数从现有方案的10-30次减少为了1次,从而有效提高了查询效率。
通过上述的快照分片的数量统计方法,基于直接映射表+集合的方式,相较于现有的大集合查询方式,可以可节省20%-50%的查询次数,从而有效节省了时间和计算资源。
图7示出了根据本申请的一示例性实施例的服务器的示意结构图。请参考图7,在硬件层面,该服务器可以包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成确定磁盘快照数据切片数量的装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图8,在软件实施方式中,该确定磁盘快照数据切片的引用次数的装置可以包括:对比模块、第一更新模块。其中:
对比模块,用于根据待统计切片在磁盘中的偏移,对比预先建立的映射表中对应偏移处的切片名称与所述待统计切片的切片名称是否相同,其中,所述映射表中按照偏移顺序存储有所述磁盘对应的快照链中的基准快照的各个切片的切片名称;
第一更新模块,用于在确定所述映射表中对应偏移处的切片名称与所述待统计切片的切片名称相同的情况下,更新所述映射表中与所述待统计切片的切片名称相同的切片的被引用次数。
在一个实施方式中,上述确定磁盘快照数据切片数量的装置还可以包括:遍历模块,用于在确定所述映射表中对应偏移处的切片名称与所述待统计切片的切片名称不相同的情况下,遍历切片集合中的切片名称,以确定所述切片集合中是否存储有与待统计切片的切片名称相同的切片名称;第二更新模块,用于在确定所述切片集合中存储有与所述待统计切片的切片名称相同的切片名称的情况下,更新所述切片集合中与所述待统计切片的切片名称相同的切片的被引用次数;添加模块,用于在确定所述切片集合中未存储与所述待统计切片的切片名称相同的切片名称的情况下,将所述待统计切片的切片名称添加至所述切片集合中。
在一个实施方式中,上述确定磁盘快照数据切片数量的装置还可以包括:还包括:存放模块,用于在根据待统计切片在磁盘中的偏移,对比映射表中对应偏移处的切片名称与所述待统计切片的切片名称是否相同之前,遍历所述磁盘对应的快照链中基准快照的切片名称列表,将每一个切片的切片名称,按照偏移存放到所述映射表中。
在一个实施方式中,对比模块可以包括:匹配单元,用于通过所述待统计切片在磁盘中的偏移,匹配出所述映射表对应位置的元素;确定单元,用于确定配出的元素位置存储的切片名称与所述待统计切片的切片名称是否相同。
在一个实施方式中,上述映射表可以采用直接映射数组的方式表示。
本申请提供的确定磁盘快照数据切片数量的方法和装置,在预先建立的映射表中按照偏移顺序存储基准快照中各个切片的切片名称,这样在进行切片数量统计的时候,先对比该映射表中是否有要查找的切片,如果映射表中没有,再到集合中查找。因为映射表是按照偏移顺序存储的,因此,只需要一次查询即可,查询效率比集合高出很多,因此,采用本例中的切片数量统计方式可以有效提高切片数量统计的效率。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
Claims (13)
1.一种确定磁盘快照数据切片的引用次数的方法,其特征在于,所述方法包括:
将磁盘的快照链中的基准快照的各个切片的切片名称,按照偏移顺序存储至预先建立的映射表中;
按照以下方式遍历所述快照链中除所述基准快照之外的快照的切片:
根据当前快照的当前切片在磁盘中的偏移,对比所述映射表中对应偏移处的切片名称与所述当前切片的切片名称是否相同;
如果相同,则更新所述映射表中与所述当前切片的切片名称相同的切片的被引用次数;
如果不相同,则遍历切片集合,以确定所述切片集合中是否存储有与所述当前切片的切片名称相同的切片;在确定所述切片集合中未存储与所述当前切片的切片名称相同的切片的情况下,将所述当前切片的切片名称添加至所述切片集合中。
2.一种确定磁盘快照数据切片的引用次数的方法,其特征在于,所述方法包括:
根据待统计切片在磁盘中的偏移,对比预先建立的映射表中对应偏移处的切片名称与所述待统计切片的切片名称是否相同,其中,所述映射表中按照偏移顺序存储有所述磁盘对应的快照链中的基准快照的各个切片的切片名称;
在确定所述映射表中对应偏移处的切片名称与所述待统计切片的切片名称相同的情况下,更新所述映射表中与所述待统计切片的切片名称相同的切片的被引用次数。
3.根据权利要求2所述的方法,其特征在于,在确定所述映射表中对应偏移处的切片名称与所述待统计切片的切片名称不相同的情况下,遍历切片集合中的切片名称,以确定所述切片集合中是否存储有与待统计切片的切片名称相同的切片名称;
在确定所述切片集合中存储有与所述待统计切片的切片名称相同的切片名称的情况下,更新所述切片集合中与所述待统计切片的切片名称相同的切片的被引用次数;
在确定所述切片集合中未存储与所述待统计切片的切片名称相同的切片名称的情况下,将所述待统计切片的切片名称添加至所述切片集合中。
4.根据权利要求2所述的方法,其特征在于,所述切片集合包括以下之一:二叉树型数据集合、哈希型数据集合。
5.根据权利要求2所述的方法,其特征在于,在根据待统计切片在磁盘中的偏移,对比映射表中对应偏移处的切片名称与所述待统计切片的切片名称是否相同之前,所述方法还包括:
遍历所述磁盘对应的快照链中基准快照的切片名称列表,将每一个切片的切片名称,按照偏移存放到所述映射表中。
6.根据权利要求5所述的方法,其特征在于,根据待统计切片在磁盘中的偏移,对比映射表中对应偏移处的切片名称与所述待统计切片的切片名称是否相同,包括:
通过所述待统计切片在磁盘中的偏移,匹配出所述映射表对应位置的元素;
确定配出的元素位置存储的切片名称与所述待统计切片的切片名称是否相同。
7.根据权利要求2至6中任一项所述的方法,其特征在于,更新所述映射表中与所述待统计切片的切片名称相同的切片的被引用次数,包括:
将所述映射表中与所述待统计切片的切片名称相同的切片的被引用次数加一。
8.根据权利要求2至6中任一项所述的方法,其特征在于,所述映射表采用直接映射数组的方式表示。
9.一种磁盘快照数据切片的更新方法,其特征在于,所述方法包括:
根据待统计切片在磁盘中的偏移,确定预先建立的映射表中对应偏移处的切片名称;
将所述对应偏移处的切片名称与所述待统计切片的切片名称进行对比;
根据对比结果,更新切片集合。
10.一种确定磁盘快照数据切片的引用次数的装置,其特征在于,所述装置包括:
存储模块,用于将磁盘的快照链中的基准快照的各个切片的切片名称,按照偏移顺序存储至预先建立的映射表中;
执行模块,用于按照以下方式遍历所述快照链中除所述基准快照之外的快照的切片:根据当前快照的当前切片在磁盘中的偏移,对比所述映射表中对应偏移处的切片名称与所述当前切片的切片名称是否相同;如果相同,则更新所述映射表中与所述当前切片的切片名称相同的切片的被引用次数;如果不相同,则遍历切片集合,以确定所述切片集合中是否存储有与所述当前切片的切片名称相同的切片;在确定所述切片集合中未存储与所述当前切片的切片名称相同的切片的情况下,将所述当前切片的切片名称添加至所述切片集合中。
11.一种确定磁盘快照数据切片的引用次数的装置,其特征在于,所述装置包括:
对比模块,用于根据待统计切片在磁盘中的偏移,对比预先建立的映射表中对应偏移处的切片名称与所述待统计切片的切片名称是否相同,其中,所述映射表中按照偏移顺序存储有所述磁盘对应的快照链中的基准快照的各个切片的切片名称;
第一更新模块,用于在确定所述映射表中对应偏移处的切片名称与所述待统计切片的切片名称相同的情况下,更新所述映射表中与所述待统计切片的切片名称相同的切片的被引用次数。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1所述方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求2至8所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710585799.9A CN109271278B (zh) | 2017-07-18 | 2017-07-18 | 一种确定磁盘快照数据切片的引用次数的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710585799.9A CN109271278B (zh) | 2017-07-18 | 2017-07-18 | 一种确定磁盘快照数据切片的引用次数的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271278A true CN109271278A (zh) | 2019-01-25 |
CN109271278B CN109271278B (zh) | 2022-09-02 |
Family
ID=65152492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710585799.9A Active CN109271278B (zh) | 2017-07-18 | 2017-07-18 | 一种确定磁盘快照数据切片的引用次数的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271278B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157199A (zh) * | 2020-01-22 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 快照占用空间计算方法、装置、电子设备及存储介质 |
CN113742732A (zh) * | 2020-05-27 | 2021-12-03 | 南京大学 | 一种代码漏洞扫描与定位方法 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030158873A1 (en) * | 2002-02-15 | 2003-08-21 | International Business Machines Corporation | Dynamic links to file system snapshots |
CN101840362A (zh) * | 2009-10-28 | 2010-09-22 | 创新科存储技术有限公司 | 一种改进的写时拷贝快照的实现方法和装置 |
CN102012852A (zh) * | 2010-12-27 | 2011-04-13 | 创新科存储技术有限公司 | 一种增量写快照的实现方法 |
CN102629247A (zh) * | 2011-12-31 | 2012-08-08 | 成都市华为赛门铁克科技有限公司 | 一种数据处理方法、装置和系统 |
CN102915278A (zh) * | 2012-09-19 | 2013-02-06 | 浪潮(北京)电子信息产业有限公司 | 重复数据删除方法 |
US20130091102A1 (en) * | 2011-10-11 | 2013-04-11 | Netapp, Inc. | Deduplication aware scheduling of requests to access data blocks |
CN103412824A (zh) * | 2013-07-19 | 2013-11-27 | 华为技术有限公司 | 写时拷贝快照方法及装置 |
US20140013046A1 (en) * | 2007-03-29 | 2014-01-09 | Netapp, Inc. | Maintaining snapshot and active file system metadata in an on-disk structure of a fle system |
CN103823807A (zh) * | 2012-11-16 | 2014-05-28 | 深圳市腾讯计算机系统有限公司 | 一种去除重复数据的方法、装置及系统 |
CN103927265A (zh) * | 2013-01-04 | 2014-07-16 | 深圳市龙视传媒有限公司 | 一种内容分级存储装置、内容获取方法及内容获取装置 |
US8806154B1 (en) * | 2011-05-06 | 2014-08-12 | Chelsio Communications, Inc. | Thin provisioning row snapshot with reference count map |
US20150134616A1 (en) * | 2013-11-12 | 2015-05-14 | Netapp, Inc. | Snapshots and clones of volumes in a storage system |
CN105868396A (zh) * | 2016-04-19 | 2016-08-17 | 上海交通大学 | 内存文件系统的多版本控制方法 |
CN106656631A (zh) * | 2017-01-19 | 2017-05-10 | 武汉噢易云计算股份有限公司 | 在共享存储上实现逻辑卷动态分配的方法及系统 |
-
2017
- 2017-07-18 CN CN201710585799.9A patent/CN109271278B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030158873A1 (en) * | 2002-02-15 | 2003-08-21 | International Business Machines Corporation | Dynamic links to file system snapshots |
US20140013046A1 (en) * | 2007-03-29 | 2014-01-09 | Netapp, Inc. | Maintaining snapshot and active file system metadata in an on-disk structure of a fle system |
CN101840362A (zh) * | 2009-10-28 | 2010-09-22 | 创新科存储技术有限公司 | 一种改进的写时拷贝快照的实现方法和装置 |
CN102012852A (zh) * | 2010-12-27 | 2011-04-13 | 创新科存储技术有限公司 | 一种增量写快照的实现方法 |
US8806154B1 (en) * | 2011-05-06 | 2014-08-12 | Chelsio Communications, Inc. | Thin provisioning row snapshot with reference count map |
US20130091102A1 (en) * | 2011-10-11 | 2013-04-11 | Netapp, Inc. | Deduplication aware scheduling of requests to access data blocks |
CN102629247A (zh) * | 2011-12-31 | 2012-08-08 | 成都市华为赛门铁克科技有限公司 | 一种数据处理方法、装置和系统 |
CN102915278A (zh) * | 2012-09-19 | 2013-02-06 | 浪潮(北京)电子信息产业有限公司 | 重复数据删除方法 |
CN103823807A (zh) * | 2012-11-16 | 2014-05-28 | 深圳市腾讯计算机系统有限公司 | 一种去除重复数据的方法、装置及系统 |
CN103927265A (zh) * | 2013-01-04 | 2014-07-16 | 深圳市龙视传媒有限公司 | 一种内容分级存储装置、内容获取方法及内容获取装置 |
CN103412824A (zh) * | 2013-07-19 | 2013-11-27 | 华为技术有限公司 | 写时拷贝快照方法及装置 |
US20150134616A1 (en) * | 2013-11-12 | 2015-05-14 | Netapp, Inc. | Snapshots and clones of volumes in a storage system |
CN105868396A (zh) * | 2016-04-19 | 2016-08-17 | 上海交通大学 | 内存文件系统的多版本控制方法 |
CN106656631A (zh) * | 2017-01-19 | 2017-05-10 | 武汉噢易云计算股份有限公司 | 在共享存储上实现逻辑卷动态分配的方法及系统 |
Non-Patent Citations (5)
Title |
---|
WEIJUN XIAO等: "A Case for Continuous Data Protection at", 《IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS》 * |
YOUNG-HO KIM: "Snapshot technique using snapshot status table for shared storage supporting large capacity", 《THE 6TH INTERNATIONAL CONFERENCE ON ADVANCED COMMUNICATION TECHNOLOGY, 2004.》 * |
何艳丽等: "基于快照的虚拟磁盘镜像检查点系统", 《武汉大学学报(理学版)》 * |
陈莉君等: "日志结构云存储中缓存的设计与实现", 《西安邮电大学学报》 * |
韩书婷: "基于在线重复数据删除技术的Openstack镜像管理系统的设计与实现", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157199A (zh) * | 2020-01-22 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 快照占用空间计算方法、装置、电子设备及存储介质 |
CN113742732A (zh) * | 2020-05-27 | 2021-12-03 | 南京大学 | 一种代码漏洞扫描与定位方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109271278B (zh) | 2022-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Khurana et al. | Efficient snapshot retrieval over historical graph data | |
US7117294B1 (en) | Method and system for archiving and compacting data in a data storage array | |
CN102782643B (zh) | 使用布隆过滤器的索引搜索 | |
US10037355B2 (en) | Mechanisms for merging index structures in MOLAP while preserving query consistency | |
CN110347651B (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
CN106126407A (zh) | 一种针对分布式存储系统的性能监控调优系统及方法 | |
CN108133031A (zh) | 一种过滤推荐视频候选结果的方法及装置 | |
CN106407224B (zh) | 一种键值存储系统中文件压实的方法和装置 | |
CN109271321A (zh) | 一种贡献代码数统计方法及装置 | |
CN103488709A (zh) | 一种索引建立方法及系统、检索方法及系统 | |
CN104462389A (zh) | 基于分级存储的分布式文件系统实现方法 | |
CN107229420A (zh) | 数据存储方法、读取方法、删除方法和数据操作系统 | |
CN102420831B (zh) | 一种多域网包分类方法 | |
CN109542339B (zh) | 数据分层访问方法、装置、多层存储设备和存储介质 | |
CN111240890B (zh) | 数据处理方法、快照处理方法、装置及计算设备 | |
CN105493080B (zh) | 基于上下文感知的重复数据删除的方法和装置 | |
WO2013139379A1 (en) | Replicated data storage system and methods | |
CN102779138A (zh) | 实时数据的硬盘存取方法 | |
CN109271278A (zh) | 一种确定磁盘快照数据切片的引用次数的方法和装置 | |
Ray et al. | Efficient frequent subgraph mining on large streaming graphs | |
CN113767378A (zh) | 文件系统元数据去重复 | |
CN100555935C (zh) | 基于相似数据集的网络监测数据压缩存储和联合检测方法 | |
CN109684418A (zh) | 基于电网图数据库的数据存储方法及装置 | |
CN117520270A (zh) | 一种hdfs小文件优化及分析处理的方法及装置 | |
Schuh et al. | AIR: adaptive index replacement in Hadoop |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |