CN109783274B - 一种磁盘快照的管理方法、装置以及可读存储介质 - Google Patents

一种磁盘快照的管理方法、装置以及可读存储介质 Download PDF

Info

Publication number
CN109783274B
CN109783274B CN201711128522.XA CN201711128522A CN109783274B CN 109783274 B CN109783274 B CN 109783274B CN 201711128522 A CN201711128522 A CN 201711128522A CN 109783274 B CN109783274 B CN 109783274B
Authority
CN
China
Prior art keywords
snapshot
data block
state
chain
snapshots
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.)
Active
Application number
CN201711128522.XA
Other languages
English (en)
Other versions
CN109783274A (zh
Inventor
廖武钧
鲁振伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201711128522.XA priority Critical patent/CN109783274B/zh
Publication of CN109783274A publication Critical patent/CN109783274A/zh
Application granted granted Critical
Publication of CN109783274B publication Critical patent/CN109783274B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种磁盘快照的管理方法,包括:获取磁盘的快照链包含的快照以及所述快照的第一状态标识;对所述快照引用的数据块进行统计;在所述统计后获取所述快照链包含的快照的第二状态标识;对所述快照的第一状态标识和所述第二状态标识进行比对;若所述快照链中存在状态标识发生变化的快照,则针对状态标识发生变化的快照进行统计并更新统计结果,提高统计结果的正确性,同时,数据块的统计过程与实际业务产生的快照新建和快照删除可同时进行,统计过程与实际业务互不冲突,可用性更高。

Description

一种磁盘快照的管理方法、装置以及可读存储介质
技术领域
本申请涉及磁盘快照技术领域,具体涉及一种磁盘快照的管理方法。本申请同时涉及一种磁盘快照的管理装置,以及一种可读存储介质。
背景技术
磁盘快照主要用于备份和容灾,用户在不同时间点针对磁盘创建若干快照组成一条快照链,如需恢复磁盘数据,可将磁盘上的数据恢复为快照链上任一个快照的内容。实际应用场景中,磁盘往往会定时创建快照(比如每天一次)以形成快照链,从而记录磁盘在多个历史时间点的信息。一般而言,快照链中各快照的数据内容差别往往很小,为节省磁盘快照的存储空间,在实现快照功能时使用去重存储,将磁盘按偏移分成多个区间(比如2MB一个区间),区间数据作为快照的数据块(又称分片或切片)进行去重存放,即创建快照时检查磁盘的每一个区间:如果区间内容与历史快照对应数据块相比有改动,则新增快照使用新数据创建新数据块;否则新增快照将继续使用历史快照的数据块。
去重存放节省了大量存储空间,但需要更新切片存储空间的信息,当快照被删除时,可能会导致一些数据块不再被快照引用,这些不再被引用的数据块称为无用空间(垃圾空间),需要定期扫描和清理,具体分为数据块统计和数据块删除,数据块统计是指统计没有被快照引用的数据块,数据块删除是指将统计获得的没有被快照引用的数据块删除。目前针对磁盘快照的管理主要包括如下步骤:
1)获取磁盘的快照链;
2)创建一个可用数据块的空集合和一个可删除数据块的空集合;
3)将快照链中的快照分为可用和已删除两部分;
4)遍历可用部分的每一个快照,读取快照的元数据获得其使用的数据块列表,将其数据块列表加入可用数据块集合;
5)遍历已删除部分的每一个快照,读取快照的元数据获得其使用的数据块列表,在可用数据块集合中查找这个数据块;如果存在,表明该数据块还在被使用;如果不存在,则表明该数据块当前没有被快照引用,应当删除,将其加入到可删除数据块集合;
6)遍历过程中禁止创建新增快照和删除已有快照,遍历完成后重新允许创建新增快照和删除已有快照;
7)通过存储系统的删除命令将可删除数据块集合中的数据块删除掉。
如上所述,为了保证统计结果的正确性,上述实现方式在遍历过程中禁止创建新增快照和删除已有快照,实际业务中遍历统计阶段的耗时为1至30分钟不等,这段时间内禁止创建新增快照和删除已有快照,影响业务可用性。
发明内容
本申请提供一种磁盘快照的管理方法,以解决现有技术存在的影响业务可用性的问题。
本申请同时涉及一种磁盘快照的管理装置,以及一种可读存储介质。
本申请提供一种磁盘快照的管理方法,包括:
获取磁盘的快照链包含的快照以及所述快照的第一状态标识;
对所述快照引用的数据块进行统计;
在所述统计后获取所述快照链包含的快照的第二状态标识;
对所述快照的第一状态标识和所述第二状态标识进行比对;
若所述快照链中存在状态标识发生变化的快照,则针对状态标识发生变化的快照进行统计并更新统计结果。
可选的,所述快照的状态标识包括:可用状态和不可用状态。
可选的,所述快照链包含的快照的状态标识发生变化,包括:
所述统计过程中所述快照链包含的快照被删除,被删除快照的状态标识从可用状态变为不可用状态。
可选的,所述快照链包含的快照的状态标识发生变化,包括:
所述统计过程中所述快照链中有新增快照建立,新增快照的状态标识被设为可用状态。
可选的,所述对所述快照引用的数据块进行统计,采用如下方式实现:
创建基准数据块集;所述基准数据块集的元素用于记录其对应数据块的名称以及其对应数据块被快照引用的引用计数;
读取所述快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下操作:
判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;
若不存在,在所述基准数据块集中建立所述数据块对应元素,并基于所述数据块所属快照的状态标识初始化所述数据块的引用计数。
可选的,若所述快照链在所述统计过程中有新增快照建立,相应的,所述针对状态标识发生变化的快照进行统计并更新统计结果,采用如下方式实现:
读取所述新增快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下数据块判断操作:判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;若不存在,在所述基准数据块集中建立所述数据块对应元素,并根据所述数据块所属快照的状态标识初始化所述数据块的引用计数;
获取所述快照链包含的快照以及所述快照的状态标识;
将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照读取所述快照引用的数据块的数据块列表,并执行所述数据块判断操作。
可选的,所述基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数,包括:
判断所述数据块所属快照的状态标识是否为所述可用状态,若是,将所述基准数据块集中记录的所述数据块的引用计数加1;
和/或,判断所述数据块所属快照的状态标识是否为所述不可用状态,若是,则保持所述基准数据块集中记录的所述数据块的引用计数不变。
可选的,所述基于所述数据块所属快照的状态标识初始化所述数据块的引用计数,包括:
判断所述数据块所属快照的状态标识是否为所述可用状态,若是,将所述基准数据块集中记录的所述数据块的引用计数初始化为1;
和/或,判断所述数据块所属快照的状态标识为所述不可用状态,若是,则将所述基准数据块集中记录的所述数据块的引用计数初始化为0。
可选的,若所述快照链包含的快照在所述统计过程中被删除,相应的,所述针对状态标识发生变化的快照进行统计并更新统计结果,采用如下方式实现:
读取所述被删除快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下计数更新操作:在所述基准数据块集中查找记录所述数据块名称的元素;将所述元素记录的所述数据块的引用计数减1;
获取所述快照链包含的快照以及所述快照的状态标识;
将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照执行所述计数更新操作。
可选的,若所述快照链在所述统计过程中有新增快照建立且所述快照链包含的快照在所述统计过程中被删除,相应的,所述针对状态标识发生变化的快照进行统计并更新统计结果,采用如下方式实现:
读取所述新增快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下数据块判断操作:判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;若不存在,在所述基准数据块集中建立所述数据块对应元素,并根据所述数据块所属快照的状态标识初始化所述数据块的引用计数;
读取所述被删除快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下计数更新操作:在所述基准数据块集中查找记录所述数据块名称的元素;将所述元素记录的所述数据块的引用计数减1;
获取所述快照链包含的快照以及所述快照的状态标识;
将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照读取所述快照引用的数据块的数据块列表,并执行所述数据块判断操作和/或所述计数更新操作。
可选的,所述读取所述新增快照引用的数据块的数据块列表采用遍历的方式进行读取,每遍历一个新增快照,则读取所述新增快照引用的数据块的数据块列表;
并且,每遍历一个新增快照,执行一次下述操作:判断所述快照链包含的新增快照是否全部完成遍历,若是,执行所述数据块判断操作;若否,则继续遍历所述快照链包含的尚未遍历的新增快照。
可选的,所述读取所述被删除快照引用的数据块的数据块列表采用遍历的方式进行读取,每遍历一个被删除快照,则读取所述被删除快照引用的数据块的数据块列表;
并且,每遍历一个被删除快照,执行一次下述操作:判断所述快照链包含的被删除快照是否全部完成遍历,若是,执行所述计数更新操作;若否,则继续遍历所述快照链包含的尚未遍历的被删除快照。
可选的,所述读取所述快照引用的数据块的数据块列表采用遍历的方式进行读取,每遍历一个所述快照链包含的快照,则读取所述快照引用的数据块的数据块列表;
并且,每遍历一个所述快照链包含的快照,执行一次下述操作:判断所述快照链包含的快照是否全部完成遍历,若否,则继续遍历所述快照链包含的尚未遍历的快照。
可选的,若所述对所述快照的第一状态标识和所述第二状态标识进行比对步骤的比对结果为所述快照链中不存在状态标识发生变化的快照,执行如下操作:
遍历所述基准数据块集中元素对应的数据块,每遍历一个数据块,执行如下操作:判断所述基准数据块集中记录的所述数据块的引用计数是否为0,若是,删除所述数据块;若否,判断所述基准数据块集中元素记录的数据块是否全部完成遍历,若尚未完成遍历,则返回执行所述遍历所述基准数据块集中元素对应的数据块子步骤。
可选的,若所述将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对子步骤的比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后未发生变化,执行如下操作:
遍历所述基准数据块集中元素对应的数据块,每遍历一个数据块,执行如下操作:判断所述基准数据块集中记录的所述数据块的引用计数是否为0,若是,删除所述数据块;若否,判断所述基准数据块集中元素记录的所述数据块是否全部完成遍历,若尚未完成,则返回执行所述遍历所述基准数据块集中元素对应的数据块子步骤。
本申请还提供一种磁盘快照的管理装置,包括:
第一获取单元,用于获取磁盘的快照链包含的快照以及所述快照的第一状态标识;
统计单元,用于对所述快照引用的数据块进行统计;
第二获取单元,用于在所述统计后获取所述快照链包含的快照的第二状态标识;
比对单元,用于对所述快照的第一状态标识和所述第二状态标识进行比对;
若所述比对单元输出的比对结果为所述快照链中存在状态标识发生变化的快照,则运行统计结果更新单元;
所述统计结果更新单元,用于针对状态标识发生变化的快照进行统计并更新统计结果。
本申请还提供一种可读存储介质,其上存储有指令,所述指令被执行以用于:
获取磁盘的快照链包含的快照以及所述快照的第一状态标识;
对所述快照引用的数据块进行统计;
在所述统计后获取所述快照链包含的快照的第二状态标识;
对所述快照的第一状态标识和所述第二状态标识进行比对;
若所述快照链中存在状态标识发生变化的快照,则针对状态标识发生变化的快照进行统计并更新统计结果。
本申请提供的所述磁盘快照的管理方法,包括:获取磁盘的快照链包含的快照以及所述快照的第一状态标识;对所述快照引用的数据块进行统计;在所述统计后获取所述快照链包含的快照的第二状态标识;对所述快照的第一状态标识和所述第二状态标识进行比对;若所述快照链中存在状态标识发生变化的快照,则针对状态标识发生变化的快照进行统计并更新统计结果。
所述磁盘快照的管理方法,在对所述快照引用的数据块进行统计过程中,在统计前后两次获取所述快照链包含的快照的第一状态标识和第二状态标识,通过比对所述快照的第一状态标识和第二状态标识来确定统计过程中所述快照链是否发生变化,并针对所述快照链中状态标识发生变化的快照进行统计并更新统计结果,从而获得更加准确的统计结果,提高统计结果的正确性;同时,数据块的统计过程与实际业务产生的快照新建和快照删除可同时进行,统计过程与实际业务互不冲突,可用性更高。
附图说明
附图1是本申请提供的一种磁盘快照的管理方法实施例的处理流程图;
附图2是本申请提供的一种数据块统计过程的示意图;
附图3是本申请提供的另一种数据块统计过程的示意图;
附图4是本申请提供的一种磁盘快照的管理装置实施例的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其他方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供一种磁盘快照的管理方法,本申请还提供一种磁盘快照的管理装置,以及一种可读存储介质。以下分别结合本申请提供的实施例的附图逐一进行详细说明,并且对方法的各个步骤进行说明。
本申请提供的一种磁盘快照的管理方法实施例如下:
参照附图1,其示出了本申请提供的一种磁盘快照的管理方法实施例的处理流程图,参照附图2,其示出了本申请提供的一种数据块统计过程的示意图,参照附图3,其示出了本申请提供的另一种数据块统计过程的示意图。
步骤S101,获取磁盘的快照链包含的快照以及所述快照的第一状态标识。
在磁盘快照的管理过程中,首先对磁盘的快照链包含的快照引用的数据块进行统计,然后根据统计结果删除无用数据块,以节省快照引用的数据块的存储空间。但是,在对快照引用的数据块进行统计的过程中,在统计开始时获取快照链的初始状态,如果统计过程中有快照链中有新增快照加入或者有快照被删除,快照链的状态会相应的发生变化,这种变化会导致统计结果的正确性收到影响;反之,如果统计能够在快照链最新的状态上进行,统计结果的正确性就能够得到保证。按照这个思路,本申请提供的所述磁盘快照的管理方法,在对快照链包含的快照引用的数据块进行统计的过程中,增加验证统计结果是否在快照链最新的状态得到的步骤,进一步,当快照链在统计过程中发生变化时,通过迭代的方式以增量的方式去补充快照链的统计信息,使统计的快照链逐步收敛(快照链包含的快照数目和快照的状态同时收敛),从而获得更加准确的统计结果。可见,本申请提供的这种实现方式允许数据块的统计过程与实际业务产生的快照新建和快照删除可同时进行,统计过程与实际业务互不冲突,不会在统计过程中由于新建和/或删除快照而打断统计过程,可用性更高。
具体在验证统计结果是否在快照链的最新状态上统计获得时,在统计开始时获取快照链的状态信息作为初始状态,此后对快照链包含的快照引用的数据块进行统计,统计完成后,获取快照链的状态作为结束状态,通过对比快照链的初始状态和结束状态来判断快照链在统计过程中是否发生变化,如果初始状态和结束状态一致,则表明快照链中的快照在统计过程中未发生变化,结束统计操作并进入数据块删除操作;如果不一致,则表明快照链在统计过程中发生变化,可能是快照链中有快照加入和/或有快照被删除,在这种情况下,当前统计结果并不一定准确,需要对当前统计结果进行订正,具体采用迭代的方式,通过比对快照链的初始状态和结束状态来确定统计过程中快照链中发生变化的快照,通过分析快照链中发生变化的快照,将变更后的数据更新到之前的统计结果中;每执行一次迭代,都会将快照链中发生变化的快照带来的变化更新到统计结果中,当某一次迭代过程中发现快照链在统计前后未发生变化,即快照链在统计过程中未发生变化,此时的统计结果符合正确性要求,即可结束统计操作从而进入数据块删除操作。
本申请实施例中,首先读取磁盘的快照链,即获取所述快照链包含的全部快照,如附图2所示。在获取到所述快照链之后,在此基础上对所述磁盘的快照链包含的快照引用的数据块进行统计,从而根据统计结果删除所述快照链中无用的数据块,以节省存储空间。在读取到所述磁盘的快照链的基础上,获取所述快照链包含的快照的状态标识,即获取所述快照链在进行数据块统计前的初始状态(第一状态标识)。所述快照的状态分为可用状态和不可用状态,可用状态是指所述数据块正在被使用,即当前数据块被至少一个快照引用;不可用状态是指当前数据块已经没有被快照引用,并且已经从所述快照链中被删除;或者,不可用状态是指当前数据块为无效状态的数据块;除此之外,不可用状态还可以用来表示数据块没有被引用或者数据块无法被引用等状态。
步骤S102,对所述快照引用的数据块进行统计。
获取到所述快照链包含的快照的第一状态标识之后,在此基础上,本步骤对所述快照引用的数据块进行统计,即:针对所述快照链包含的快照引用的数据块执行统计操作,如附图2所示,本申请实施例提供的一种优选实施方式中,针对所述快照链包含的快照引用的数据块执行统计操作,采用如下方式实现:
1)创建基准数据块集;
本申请实施例所述基准数据块集,用于记录数据块的名称,以及数据块被快照引用的被引用次数(即引用计数),具体将数据块名称和引用计数的组合作为所述基准数据块集的一个元素,并且所述基准数据块集中的元素、该元素记录的数据块名称以及该数据块的引用计数三者之间一一对应。所述基准数据块集在创建时为空集合,在统计过程中通过遍历所述快照链中快照引用的数据块,将已遍历数据块的名称和引用计数记录到所述基准数据块集中。
2)读取所述快照所引用数据块的数据块列表;
在具体实施时,读取所述快照引用的数据块的数据块列表可采用遍历的方式进行读取,每遍历一个所述快照链包含的快照,则通过读取所述快照元数据来获取所述快照引用的数据块组成的数据块列表。
3)在遍历所述快照链中快照的过程中,每遍历一个所述快照链包含的快照,针对所述快照的数据块列表中的每一个数据块,执行如下操作:
判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,表明当前数据块已经被快照所引用,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数。具体更新过程中,通过判断引用当前数据块的所述快照的状态标识是可用状态还是不可用状态,如果引用当前数据块的所述快照的状态标识为可用状态,将当前数据块的引用计数加1,即当前数据块所属快照为可用状态,则将所述基准数据块集中记录的当前数据块的引用计数加1;如果引用当前数据块的所述快照的状态标识为不可用状态,保持当前数据块的引用计数不变,即当前数据块所属快照为不可用状态,则保持所述基准数据块集中记录的当前数据块的引用计数不变。
若不存在,表明已遍历的快照尚未引用当前数据块,在所述基准数据块集中建立所述数据块对应元素,并基于所述数据块所属快照的状态标识初始化所述数据块的引用计数。具体初始化的过程中,通过判断引用当前数据块的所述快照的状态标识是可用状态还是不可用状态,如果引用当前数据块的所述快照的状态标识为可用状态,则将当前数据块的引用计数初始化为1;如果引用当前数据块的所述快照的状态标识为不可用状态,则将当前数据块的引用计数初始化为0。
优选的,在遍历过程中,每遍历一个所述快照链包含的快照,执行一次下述操作:判断所述快照链中的快照是否全部完成遍历,若是,则执行下述步骤S103,在所述统计操作执行后获取所述快照链包含的快照以及所述快照的状态标识;若否,则继续遍历所述快照链包含的尚未遍历的快照。
步骤S103,在所述统计后获取所述快照链包含的快照的第二状态标识。
如上所述,上述步骤S101获取所述快照链在所述统计操作执行前的快照以及所述快照的第一状态标识,本步骤在所述统计操作执行后,再次获取所述快照链包含的快照的第二状态标识,如附图2所示。
步骤S104,对所述快照的第一状态标识和所述第二状态标识进行比对。
上述步骤S101获取到所述快照链在所述统计操作执行前的快照以及所述快照的第一状态标识,上述步骤S103获取到所述快照链在所述统计操作执行后的快照以及所述快照的第二状态标识。基于此,如附图2所示,本步骤对所述快照链在所述统计操作执行前后的快照进行对比,以及对所述快照的第一状态标识和所述第二状态标识进行比对,即:判断所述快照链在所述统计操作执行前后是否发生变化,如果发生变化,则执行下述步骤S105,针对状态标识发生变化的快照进行统计并更新统计结果;如果未发生变化,则执行数据块删除操作。
本申请实施例提供的一种优选实施方式中,所述数据块删除操作具体采用如下方式实现:遍历所述基准数据块集中元素对应的数据块,每遍历一个数据块,执行如下操作:判断所述基准数据块集中记录的所述数据块的引用计数是否为0,若是,删除所述数据块;若否,判断所述基准数据块集中元素记录的数据块是否全部完成遍历,若尚未完成遍历,则继续对所述基准数据块集中未遍历元素对应的数据块进行遍历。
步骤S105,针对状态标识发生变化的快照进行统计并更新统计结果。
本步骤得以实施的前提是上述步骤S104中,所述统计操作执行前后,所述快照链包含的快照发生变化,或者所述快照的第一状态标识与所述第二状态标识相比发生变化。上述步骤通过获取所述快照链在统计操作前后的快照以及所述快照的第一状态标识和第二状态标识,通过对比这两次获得的所述快照链包含的快照以及所述快照的第一状态标识和第二状态标识,能够精确获得统计过程中所述快照链中发生变化的快照,并且针对所述快照链中发生变化的快照进行处理,将所述快照链中发生变化的快照更新到统计结果中,不需要对所述快照链整体进行检查,节省时间。
本申请实施例提供的一种优选实施方式中,所述快照链在所述统计前后发生变化包括如下三种:所述统计操作执行过程中所述快照链中有新增快照建立且所述快照链包含的快照被删除,所述统计操作执行过程中所述快照链中有新增快照建立,以及,所述统计操作执行过程中所述快照链包含的快照被删除。如果所述统计操作执行过程中所述快照链包含的快照被删除,则被删除快照的状态标识从可用状态变为不可用状态,即快照的状态标识发生变化。
下述针对这三种情况一一进行说明:
1)所述统计操作执行过程中所述快照链中有新增快照建立且所述快照链包含的快照被删除;
在所述统计操作的执行过程中,如果所述快照链中有新增快照建立且所述快照链包含的快照被删除,则需对所述新增快照引用的数据块和所述已删除快照引用的数据块进行统计(执行所述统计操作)。在具体实施时,可采用迭代的方式对所述新增快照和所述已删除快照产生的变化进行更新,直至所述快照链包含的快照逐步收敛(由于对快照数据块的统计速度往往大于在所述快照链中创建快照的速度,因此迭代统计过程必然会结束),即某一次迭代过程中发现所述快照链在所述统计前后未发生变化,此时的统计结果符合正确性要求,结束迭代。下面以任意一次迭代过程为例,说明迭代过程中是如何对状态标识发生变化的快照进行统计并更新统计结果的。如附图3所示,本申请实施例提供的一种优选实施方式中,所述针对状态标识发生变化的快照进行统计并更新统计结果,具体采用如下方式实现:
a、读取所述新增快照引用的数据块的数据块列表;
在具体实施时,读取所述新增快照引用的数据块的数据块列表与上述读取所述快照所引用数据块的数据块列表类似,可采用遍历的方式进行读取,每遍历一个新增快照,则读取所述新增快照引用的数据块的数据块列表。并且,每遍历一个新增快照,执行一次下述操作:
判断所述快照链包含的新增快照是否全部完成遍历,若是,执行下述子步骤c,读取所述被删除快照引用的数据块的数据块列表;若否,则继续遍历所述快照链包含的尚未遍历的新增快照。
b、针对所述数据块列表中的数据块,执行如下数据块判断操作:
判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数。具体更新过程中,通过判断引用当前数据块的所述快照的状态标识是可用状态还是不可用状态,如果引用当前数据块的所述快照的状态标识为可用状态,则将所述基准数据块集中记录的当前数据块的引用计数加1;如果引用当前数据块的所述快照的状态标识为不可用状态,保持所述基准数据块集中记录的当前数据块的引用计数不变。
若不存在,在所述基准数据块集中建立所述数据块对应元素,并根据所述数据块所属快照的状态标识初始化所述数据块的引用计数。具体初始化当前数据块的引用计数的过程中,通过判断引用当前数据块的所述快照的状态标识是可用状态还是不可用状态,如果引用当前数据块的所述快照的状态标识为可用状态,则将当前数据块的引用计数初始化为1;如果引用当前数据块的所述快照的状态标识为不可用状态,则将当前数据块的引用计数初始化为0。
c、读取所述被删除快照引用的数据块的数据块列表;
类似的,此处读取所述被删除快照引用的数据块的数据块列表同样可采用遍历的方式进行读取,每遍历一个被删除快照,则读取所述被删除快照引用的数据块的数据块列表。并且,每遍历一个被删除快照,执行一次下述操作:
判断所述快照链包含的被删除快照是否全部完成遍历,若是,执行下述子步骤e,获取所述快照链包含的快照以及所述快照的状态标识;若否,则继续遍历所述快照链包含的尚未遍历的被删除快照。
d、针对所述数据块列表中的数据块,执行如下操作:
在所述基准数据块集中查找记录所述数据块名称的元素,并将所述元素记录的所述数据块的引用计数减1。由于数据块是从被快照引用的状态变为被删除状态,即数据块对应的快照是从可用状态变为不可用状态,在之前的统计操作的执行过程中,经过遍历过这一数据块,因此,所述基准数据块集必然存在记录这一数据块名称和引用次数的元素。基于此,在读取到所述被删除快照引用的数据块的数据块列表,针对所述被删除快照数据块列表中的数据块,只需在所述基准数据块集中查找记录所述数据块名称的元素,并将所述元素记录的所述数据块的引用计数减1。
e、获取所述快照链包含的快照以及所述快照的状态标识;
f、将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
此处,将上述子步骤e获取的所述快照以及所述快照的状态标识与前一次统计操作执行后获取到的所述快照以及所述快照的状态标识进行比对,即:将当前这一次迭代过程中统计操作执行之前与执行之后所述快照链的快照以及所述快照的状态标识进行比对,目的是为了确定所述快照链在当前这一次统计操作执行前后是否发生变化,若所述快照链在当前这一次迭代过程中统计操作执行前后未发生变化,则执行所述数据块删除操作;若所述快照链在当前这一次迭代过程中统计操作执行前后发生变化,则在此基础上重复执行上述步骤a至步骤f。
2)所述统计操作执行过程中所述快照链中有新增快照建立;
在所述统计操作的执行过程中,如果所述快照链中有新增快照建立,则需对所述新增快照引用的数据块进行统计(执行所述统计操作)。具体的,本申请采用迭代的方式对所述新增快照产生的变化进行更新,直至所述快照链包含的快照逐步收敛,即某一次迭代过程中发现所述快照链在所述统计前后未发生变化,此时的统计结果符合正确性要求,结束迭代。下面以任意一次迭代过程为例,说明迭代过程中是如何对所述状态标识发生变化的快照进行统计并更新统计结果的。本申请实施例提供的另一种优选实施方式中,所述针对状态标识发生变化的快照进行统计并更新统计结果,具体采用如下方式实现:
a、读取所述新增快照引用的数据块的数据块列表;
在具体实施时,读取所述新增快照引用的数据块的数据块列表与上述读取所述快照所引用数据块的数据块列表类似,可采用遍历的方式进行读取,每遍历一个新增快照,则读取所述新增快照引用的数据块的数据块列表。并且,每遍历一个新增快照,执行一次下述操作:
判断所述快照链包含的新增快照是否全部完成遍历,若是,执行下述子步骤c,读取所述被删除快照引用的数据块的数据块列表;若否,则继续遍历所述快照链包含的尚未遍历的新增快照。
判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数。具体更新过程中,进一步判断引用当前数据块的所述快照的状态标识是可用状态还是不可用状态,如果引用当前数据块的所述快照的状态标识为可用状态,则将所述基准数据块集中记录的当前数据块的引用计数加1;如果引用当前数据块的所述快照的状态标识为不可用状态,保持所述基准数据块集中记录的当前数据块的引用计数不变。
若不存在,在所述基准数据块集中建立所述数据块对应元素,并根据所述数据块所属快照的状态标识初始化所述数据块的引用计数。具体初始化当前数据块的引用计数的过程中,判断引用当前数据块的所述快照的状态标识是可用状态还是不可用状态,如果引用当前数据块的所述快照的状态标识为可用状态,则将当前数据块的引用计数初始化为1;如果引用当前数据块的所述快照的状态标识为不可用状态,则将当前数据块的引用计数初始化为0。
c、获取所述快照链包含的快照以及所述快照的状态标识;
d、将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
此处,将上述子步骤c获取的所述快照以及所述快照的状态标识与前一次统计操作执行后获取到的所述快照以及所述快照的状态标识进行比对,即:将当前这一次迭代过程中统计操作执行之前与执行之后所述快照链的快照以及所述快照的状态标识进行比对,目的是为了确定所述快照链在当前这一次迭代过程中统计操作执行前后是否发生变化,若所述快照链在当前这一次迭代过程中统计操作执行前后未发生变化,则执行所述数据块删除操作;若所述快照链在当前这一次迭代过程中统计操作执行前后发生变化,则在此执行上述迭代过程。
3)所述统计操作执行过程中所述快照链包含的快照被删除。
在所述统计操作的执行过程中,如果所述快照链包含的快照被删除,则需对所述已删除快照引用的数据块进行统计(执行所述统计操作)。具体的,本申请采用迭代的方式对所述已删除快照产生的变化进行更新,直至所述快照链包含的快照逐步收敛,即某一次迭代过程中发现所述快照链在所述统计前后未发生变化,此时的统计结果符合正确性要求,则结束迭代。下面以任意一次迭代过程为例,说明迭代过程中是如何对所述状态标识发生变化的快照进行统计并更新统计结果的。本申请实施例提供的第三种优选实施方式中,所述针对状态标识发生变化的快照进行统计并更新统计结果,具体采用如下方式实现:
a、读取所述被删除快照引用的数据块的数据块列表;
类似的,此处读取所述被删除快照引用的数据块的数据块列表同样可采用遍历的方式进行读取,每遍历一个被删除快照,则读取所述被删除快照引用的数据块的数据块列表。并且,每遍历一个被删除快照,执行一次下述操作:
判断所述快照链包含的被删除快照是否全部完成遍历,若是,执行下述子步骤c,获取所述快照链包含的快照以及所述快照的状态标识;若否,则继续遍历所述快照链包含的尚未遍历的被删除快照。
b、针对所述数据块列表中的数据块,执行如下计数更新操作:
在所述基准数据块集中查找记录所述数据块名称的元素,并将所述元素记录的所述数据块的引用计数减1。由于数据块是从被快照引用的状态变为被删除状态,即数据块对应的快照是从可用状态变为不可用状态,在之前的统计操作的执行过程中,经过遍历过这一数据块,因此,所述基准数据块集必然存在记录这一数据块名称和引用次数的元素。基于此,在读取到所述被删除快照引用的数据块的数据块列表,针对所述被删除快照数据块列表中的数据块,只需在所述基准数据块集中查找记录所述数据块名称的元素,并将所述元素记录的所述数据块的引用计数减1。
c、获取所述快照链包含的快照以及所述快照的状态标识;
e、将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
此处,将上述子步骤c获取的所述快照以及所述快照的状态标识与前一次统计操作执行后获取到的所述快照以及所述快照的状态标识进行比对,即:将当前这一次迭代过程中统计操作执行之前与执行之后所述快照链的快照以及所述快照的状态标识进行比对,目的是为了确定所述快照链在当前这一次迭代过程中统计操作执行前后是否发生变化,若所述快照链在当前这一次迭代过程中统计操作执行前后未发生变化,则执行所述数据块删除操作;若所述快照链在当前这一次迭代过程中统计操作执行前后发生变化,则在此基础上重复执行上述步骤a至步骤e。
综上所述,所述磁盘快照的管理方法,在对所述快照链包含的快照引用的数据块进行统计过程中,在统计前后两次获取所述快照链包含的快照的状态标识,通过比对这两次获得的快照以及所述快照的状态标识来确定统计过程中所述快照链是否发生变化,并针对所述快照链中状态标识发生变化的快照进行统计并更新统计结果,从而获得更加准确的统计结果;同时,数据块的统计过程与实际业务产生的快照新建和快照删除可同时进行,统计过程与实际业务互不冲突,可用性更高。
本申请提供的一种磁盘快照的管理装置实施例如下:
在上述的实施例中,提供了一种磁盘快照的管理方法,与之相对应的,本申请还提供了一种磁盘快照的管理装置,下面结合附图进行说明。
参照附图4,其示出了本申请提供的一种磁盘快照的管理装置实施例的示意图。
由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见上述提供的方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。
本申请提供一种磁盘快照的管理装置,包括:
第一获取单元401,用于获取磁盘的快照链包含的快照以及所述快照的第一状态标识;
统计单元402,用于对所述快照引用的数据块进行统计;
第二获取单元403,用于在所述统计后获取所述快照链包含的快照的第二状态标识;
比对单元404,用于对所述快照的第一状态标识和所述第二状态标识进行比对;
若所述比对单元输出的比对结果为所述快照链中存在状态标识发生变化的快照,则运行统计结果更新单元405;
所述统计结果更新单元405,用于针对状态标识发生变化的快照进行统计并更新统计结果。
可选的,所述快照的状态标识包括:可用状态和不可用状态。
可选的,所述快照链包含的快照的状态标识发生变化,包括:
所述统计过程中所述快照链包含的快照被删除,被删除快照的状态标识从可用状态变为不可用状态。
可选的,所述快照链包含的快照的状态标识发生变化,包括:
所述统计过程中所述快照链中有新增快照建立,新增快照的状态标识被设为可用状态。
可选的,所述统计单元402,包括:
基准数据块集创建子单元,用于创建基准数据块集;所述基准数据块集的元素用于记录其对应数据块的名称以及其对应数据块被快照引用的引用计数;
数据块列表读取子单元,用于读取所述快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,运行数据块查找子单元;所述数据块查找子单元,用于判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,运行引用计数更新子单元;若不存在,运行数据块建立子单元;
所述引用计数更新子单元,用于基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;
所述数据块建立子单元,用于在所述基准数据块集中建立所述数据块对应元素,并基于所述数据块所属快照的状态标识初始化所述数据块的引用计数。
可选的,若所述比对单元404输出的比对结果为所述快照链在所述统计过程中有新增快照建立,相应的,所述统计结果更新单元405,包括:
第一数据块列表读取子单元,用于读取所述新增快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,运行第一判断子单元;所述第一判断子单元,用于判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,运行第一引用计数更新子单元;若不存在,运行第一数据块建立子单元;
第一引用计数更新子单元,用于基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;
第一数据块建立子单元,用于在所述基准数据块集中建立所述数据块对应元素,并根据所述数据块所属快照的状态标识初始化所述数据块的引用计数;
第一获取子单元,用于获取所述快照链包含的快照以及所述快照的状态标识;
第一比对子单元,用于将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若所述第一比对子单元输出的比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照运行所述统计结果更新单元405。
可选的,所述第一引用计数更新子单元,包括:
第一更新子单元,用于判断所述数据块所属快照的状态标识是否为所述可用状态,若是,将所述基准数据块集中记录的所述数据块的引用计数加1;
第二更新子单元,用于判断所述数据块所属快照的状态标识是否为所述不可用状态,若是,则保持所述基准数据块集中记录的所述数据块的引用计数不变。
可选的,所述第一数据块建立子单元,包括:
第一初始化子单元,用于判断所述数据块所属快照的状态标识是否为所述可用状态,若是,将所述基准数据块集中记录的所述数据块的引用计数初始化为1;
第二初始化子单元,用于判断所述数据块所属快照的状态标识为所述不可用状态,若是,则将所述基准数据块集中记录的所述数据块的引用计数初始化为0。
可选的,若所述比对单元404输出的比对结果为所述快照链包含的快照在所述统计过程中被删除,相应的,所述统计结果更新单元405,包括:
第二数据块列表读取子单元,用于读取所述被删除快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,运行第一数据块查找子单元;所述第一数据块查找子单元,用于在所述基准数据块集中查找记录所述数据块名称的元素,将所述元素记录的所述数据块的引用计数减1;
第二获取子单元,用于获取所述快照链包含的快照以及所述快照的状态标识;
第二比对子单元,用于将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若所述第二比对子单元输出的比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照运行所述统计结果更新单元405。
可选的,若所述比对单元404输出的比对结果为所述快照链在所述统计过程中有新增快照建立且所述快照链包含的快照在所述统计过程中被删除,相应的,所述统计结果更新单元405,包括:
第三数据块列表读取子单元,用于读取所述新增快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,运行第二判断子单元;所述第二判断子单元,用于判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,运行第二引用计数更新子单元;若不存在,运行第二数据块建立子单元;
第二引用计数更新子单元,用于基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;
第二数据块建立子单元,用于在所述基准数据块集中建立所述数据块对应元素,并根据所述数据块所属快照的状态标识初始化所述数据块的引用计数;
第四数据块列表读取子单元,用于读取所述被删除快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,运行第二数据块查找子单元;所述第二数据块查找子单元,用于在所述基准数据块集中查找记录所述数据块名称的元素,将所述元素记录的所述数据块的引用计数减1;
第三获取子单元,用于获取所述快照链包含的快照以及所述快照的状态标识;
第三比对子单元,用于将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若所述第三比对子单元输出的比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照运行所述统计结果更新单元405。
可选的,所述第三数据块列表读取子单元在读取所述新增快照引用的数据块的数据块列表时采用遍历的方式进行读取,每遍历一个新增快照,则读取所述新增快照引用的数据块的数据块列表;
并且,每遍历一个新增快照,执行一次下述操作:判断所述快照链包含的新增快照是否全部完成遍历,若是,执行所述数据块判断操作;若否,则继续遍历所述快照链包含的尚未遍历的新增快照。
可选的,所述第四数据块列表读取子单元在读取所述被删除快照引用的数据块的数据块列表时采用遍历的方式进行读取,每遍历一个被删除快照,则读取所述被删除快照引用的数据块的数据块列表;
并且,每遍历一个被删除快照,执行一次下述操作:判断所述快照链包含的被删除快照是否全部完成遍历,若是,执行所述计数更新操作;若否,则继续遍历所述快照链包含的尚未遍历的被删除快照。
可选的,所述数据块列表读取子单元在读取所述快照引用的数据块的数据块列表时采用遍历的方式进行读取,每遍历一个所述快照链包含的快照,则读取所述快照引用的数据块的数据块列表;
并且,每遍历一个所述快照链包含的快照,执行一次下述操作:判断所述快照链包含的快照是否全部完成遍历,若否,则继续遍历所述快照链包含的尚未遍历的快照。
可选的,若所述比对单元404输出的比对结果为所述快照链中不存在状态标识发生变化的快照,运行遍历删除单元;
所述遍历删除单元,用于遍历所述基准数据块集中元素对应的数据块,每遍历一个数据块,执行如下操作:判断所述基准数据块集中记录的所述数据块的引用计数是否为0,若是,删除所述数据块;若否,判断所述基准数据块集中元素记录的数据块是否全部完成遍历,若尚未完成遍历,则运行所述遍历删除单元。
可选的,若所述第三比对子单元输出的比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后未发生变化,运行遍历删除子单元;
所述遍历删除子单元,用于遍历所述基准数据块集中元素对应的数据块,每遍历一个数据块,执行如下操作:判断所述基准数据块集中记录的所述数据块的引用计数是否为0,若是,删除所述数据块;若否,判断所述基准数据块集中元素记录的所述数据块是否全部完成遍历,若尚未完成,运行所述遍历删除子单元。
本申请提供的一种可读存储介质实施例如下:
在上述的实施例中,提供了一种磁盘快照的管理方法,此外,本申请还提供了一种用于实现所述磁盘快照的管理方法的可读存储介质。本申请提供的所述可读存储介质实施例描述得比较简单,相关的部分请参见上述提供的所述磁盘快照的管理方法实施例的对应说明即可。下述描述的实施例仅仅是示意性的。
本申请提供一种可读存储介质,其上存储有指令,所述指令被执行以用于:
获取磁盘的快照链包含的快照以及所述快照的第一状态标识;
对所述快照引用的数据块进行统计;
在所述统计后获取所述快照链包含的快照的第二状态标识;
对所述快照的第一状态标识和所述第二状态标识进行比对;
若所述快照链中存在状态标识发生变化的快照,则针对状态标识发生变化的快照进行统计并更新统计结果。
可选的,所述快照的状态标识包括:可用状态和不可用状态。
可选的,所述快照链包含的快照的状态标识发生变化,包括:
所述统计过程中所述快照链包含的快照被删除,被删除快照的状态标识从可用状态变为不可用状态。
可选的,所述快照链包含的快照的状态标识发生变化,包括:
所述统计过程中所述快照链中有新增快照建立,新增快照的状态标识被设为可用状态。
可选的,所述对所述快照引用的数据块进行统计,采用如下方式实现:
创建基准数据块集;所述基准数据块集的元素用于记录其对应数据块的名称以及其对应数据块被快照引用的引用计数;
读取所述快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下操作:
判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;
若不存在,在所述基准数据块集中建立所述数据块对应元素,并基于所述数据块所属快照的状态标识初始化所述数据块的引用计数。
可选的,若所述快照链在所述统计过程中有新增快照建立,相应的,所述针对状态标识发生变化的快照进行统计并更新统计结果,采用如下方式实现:
读取所述新增快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下数据块判断操作:判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;若不存在,在所述基准数据块集中建立所述数据块对应元素,并根据所述数据块所属快照的状态标识初始化所述数据块的引用计数;
获取所述快照链包含的快照以及所述快照的状态标识;
将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照读取所述快照引用的数据块的数据块列表,并执行所述数据块判断操作。
可选的,所述基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数,包括:
判断所述数据块所属快照的状态标识是否为所述可用状态,若是,将所述基准数据块集中记录的所述数据块的引用计数加1;
和/或,判断所述数据块所属快照的状态标识是否为所述不可用状态,若是,则保持所述基准数据块集中记录的所述数据块的引用计数不变。
可选的,所述基于所述数据块所属快照的状态标识初始化所述数据块的引用计数,包括:
判断所述数据块所属快照的状态标识是否为所述可用状态,若是,将所述基准数据块集中记录的所述数据块的引用计数初始化为1;
和/或,判断所述数据块所属快照的状态标识为所述不可用状态,若是,则将所述基准数据块集中记录的所述数据块的引用计数初始化为0。
可选的,若所述快照链包含的快照在所述统计过程中被删除,相应的,所述针对状态标识发生变化的快照进行统计并更新统计结果,采用如下方式实现:
读取所述被删除快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下计数更新操作:在所述基准数据块集中查找记录所述数据块名称的元素;将所述元素记录的所述数据块的引用计数减1;
获取所述快照链包含的快照以及所述快照的状态标识;
将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照执行所述计数更新操作。
可选的,若所述快照链在所述统计过程中有新增快照建立且所述快照链包含的快照在所述统计过程中被删除,相应的,所述针对状态标识发生变化的快照进行统计并更新统计结果,采用如下方式实现:
读取所述新增快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下数据块判断操作:判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;若不存在,在所述基准数据块集中建立所述数据块对应元素,并根据所述数据块所属快照的状态标识初始化所述数据块的引用计数;
读取所述被删除快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下计数更新操作:在所述基准数据块集中查找记录所述数据块名称的元素;将所述元素记录的所述数据块的引用计数减1;
获取所述快照链包含的快照以及所述快照的状态标识;
将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照读取所述快照引用的数据块的数据块列表,并执行所述数据块判断操作和/或所述计数更新操作。
可选的,所述读取所述新增快照引用的数据块的数据块列表采用遍历的方式进行读取,每遍历一个新增快照,则读取所述新增快照引用的数据块的数据块列表;
并且,每遍历一个新增快照,执行一次下述操作:判断所述快照链包含的新增快照是否全部完成遍历,若是,执行所述数据块判断操作;若否,则继续遍历所述快照链包含的尚未遍历的新增快照。
可选的,所述读取所述被删除快照引用的数据块的数据块列表采用遍历的方式进行读取,每遍历一个被删除快照,则读取所述被删除快照引用的数据块的数据块列表;
并且,每遍历一个被删除快照,执行一次下述操作:判断所述快照链包含的被删除快照是否全部完成遍历,若是,执行所述计数更新操作;若否,则继续遍历所述快照链包含的尚未遍历的被删除快照。
可选的,所述读取所述快照引用的数据块的数据块列表采用遍历的方式进行读取,每遍历一个所述快照链包含的快照,则读取所述快照引用的数据块的数据块列表;
并且,每遍历一个所述快照链包含的快照,执行一次下述操作:判断所述快照链包含的快照是否全部完成遍历,若否,则继续遍历所述快照链包含的尚未遍历的快照。
可选的,若所述对所述快照的第一状态标识和所述第二状态标识进行比对步骤的比对结果为所述快照链中不存在状态标识发生变化的快照,执行如下操作:
遍历所述基准数据块集中元素对应的数据块,每遍历一个数据块,执行如下操作:判断所述基准数据块集中记录的所述数据块的引用计数是否为0,若是,删除所述数据块;若否,判断所述基准数据块集中元素记录的数据块是否全部完成遍历,若尚未完成遍历,则返回执行所述遍历所述基准数据块集中元素对应的数据块子步骤。
可选的,若所述将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对子步骤的比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后未发生变化,执行如下操作:
遍历所述基准数据块集中元素对应的数据块,每遍历一个数据块,执行如下操作:判断所述基准数据块集中记录的所述数据块的引用计数是否为0,若是,删除所述数据块;若否,判断所述基准数据块集中元素记录的所述数据块是否全部完成遍历,若尚未完成,则返回执行所述遍历所述基准数据块集中元素对应的数据块子步骤。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (17)

1.一种磁盘快照的管理方法,其特征在于,包括:
获取磁盘的快照链包含的快照以及所述快照的第一状态标识,其中,所述快照的第一状态为统计开始时获取快照状态链的状态信息;
对所述快照引用的数据块进行统计;
在所述统计后获取所述快照链包含的快照的第二状态标识;
对所述快照的第一状态标识和所述第二状态标识进行比对;
若所述快照链中存在状态标识发生变化的快照,则针对状态标识发生变化的快照进行统计并更新统计结果;
其中,所述对所述快照引用的数据块进行统计,采用如下方式实现:
创建基准数据块集;所述基准数据块集的元素用于记录其对应数据块的名称以及其对应数据块被快照引用的引用计数;
读取所述快照引用的数据块的数据块列表。
2.根据权利要求1所述的磁盘快照的管理方法,其特征在于,所述快照的状态标识包括:可用状态或不可用状态。
3.根据权利要求2所述的磁盘快照的管理方法,其特征在于,所述快照链包含的快照的状态标识发生变化,包括:
所述统计过程中所述快照链包含的快照被删除,被删除快照的状态标识从可用状态变为不可用状态。
4.根据权利要求2或3所述的磁盘快照的管理方法,其特征在于,所述快照链包含的快照的状态标识发生变化,包括:
所述统计过程中所述快照链中有新增快照,新增快照的状态标识被设为可用状态。
5.根据权利要求1-3任意一项所述的磁盘快照的管理方法,其特征在于,
针对所述数据块列表中的数据块,执行如下操作:
判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;
若不存在,在所述基准数据块集中建立所述数据块对应元素,并基于所述数据块所属快照的状态标识初始化所述数据块的引用计数。
6.根据权利要求5所述的磁盘快照的管理方法,其特征在于,若所述快照链在所述统计过程中有新增快照,相应的,所述针对状态标识发生变化的快照进行统计并更新统计结果,采用如下方式实现:
读取所述新增快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下数据块判断操作:判断所述基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;若不存在,在所述基准数据块集中建立所述数据块对应元素,并根据所述数据块所属快照的状态标识初始化所述数据块的引用计数;
获取所述快照链包含的快照以及所述快照的状态标识;
将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照读取所述快照引用的数据块的数据块列表,并执行所述数据块判断操作。
7.根据权利要求5所述的磁盘快照的管理方法,其特征在于,所述基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数,包括:
判断所述数据块所属快照的状态标识是否为可用状态,若是,将所述基准数据块集中记录的所述数据块的引用计数加1;
和/或,判断所述数据块所属快照的状态标识是否为不可用状态,若是,则保持所述基准数据块集中记录的所述数据块的引用计数不变。
8.根据权利要求5所述的磁盘快照的管理方法,其特征在于,所述基于所述数据块所属快照的状态标识初始化所述数据块的引用计数,包括:
判断所述数据块所属快照的状态标识是否为可用状态,若是,将所述基准数据块集中记录的所述数据块的引用计数初始化为1;
和/或,判断所述数据块所属快照的状态标识为不可用状态,若是,则将所述基准数据块集中记录的所述数据块的引用计数初始化为0。
9.根据权利要求3所述的磁盘快照的管理方法,其特征在于,若所述快照链包含的快照在所述统计过程中被删除,相应的,所述针对状态标识发生变化的快照进行统计并更新统计结果,采用如下方式实现:
读取所述被删除快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下计数更新操作:在基准数据块集中查找记录所述数据块名称的元素;将所述元素记录的所述数据块的引用计数减1;
获取所述快照链包含的快照以及所述快照的状态标识;
将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照执行所述计数更新操作。
10.根据权利要求4所述的磁盘快照的管理方法,其特征在于,若所述快照链在所述统计过程中有新增快照建立且所述快照链包含的快照在所述统计过程中被删除,相应的,所述针对状态标识发生变化的快照进行统计并更新统计结果,采用如下方式实现:
读取所述新增快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下数据块判断操作:判断基准数据块集中是否存在记录所述数据块名称的元素,若存在,基于所述数据块所属快照的状态标识更新所述基准数据块集中记录的所述数据块的引用计数;若不存在,在所述基准数据块集中建立所述数据块对应元素,并根据所述数据块所属快照的状态标识初始化所述数据块的引用计数;
读取所述被删除快照引用的数据块的数据块列表;
针对所述数据块列表中的数据块,执行如下计数更新操作:在所述基准数据块集中查找记录所述数据块名称的元素;将所述元素记录的所述数据块的引用计数减1;
获取所述快照链包含的快照以及所述快照的状态标识;
将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对;
若比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后发生变化,则针对发生变化的快照读取所述快照引用的数据块的数据块列表,并执行所述数据块判断操作和/或所述计数更新操作。
11.根据权利要求6所述的磁盘快照的管理方法,其特征在于,所述读取所述新增快照引用的数据块的数据块列表采用遍历的方式进行读取,每遍历一个新增快照,则读取所述新增快照引用的数据块的数据块列表;
并且,每遍历一个新增快照,执行一次下述操作:判断所述快照链包含的新增快照是否全部完成遍历,若是,执行所述数据块判断操作;若否,则继续遍历所述快照链包含的尚未遍历的新增快照。
12.根据权利要求9所述的磁盘快照的管理方法,其特征在于,所述读取所述被删除快照引用的数据块的数据块列表采用遍历的方式进行读取,每遍历一个被删除快照,则读取所述被删除快照引用的数据块的数据块列表;
并且,每遍历一个被删除快照,执行一次下述操作:判断所述快照链包含的被删除快照是否全部完成遍历,若是,执行所述计数更新操作;若否,则继续遍历所述快照链包含的尚未遍历的被删除快照。
13.根据权利要求5所述的磁盘快照的管理方法,其特征在于,所述读取所述快照引用的数据块的数据块列表采用遍历的方式进行读取,每遍历一个所述快照链包含的快照,则读取所述快照引用的数据块的数据块列表;
并且,每遍历一个所述快照链包含的快照,执行一次下述操作:判断所述快照链包含的快照是否全部完成遍历,若否,则继续遍历所述快照链包含的尚未遍历的快照。
14.根据权利要求1至3任意一项所述的磁盘快照的管理方法,其特征在于,若所述对所述快照的第一状态标识和所述第二状态标识进行比对步骤的比对结果为所述快照链中不存在状态标识发生变化的快照,执行如下操作:
遍历基准数据块集中元素对应的数据块,每遍历一个数据块,执行如下操作:判断所述基准数据块集中记录的所述数据块的引用计数是否为0,若是,删除所述数据块;若否,判断所述基准数据块集中元素记录的数据块是否全部完成遍历,若尚未完成遍历,则返回执行所述遍历所述基准数据块集中元素对应的数据块子步骤。
15.根据权利要求6、9或10所述的磁盘快照的管理方法,其特征在于,若所述将获取到的所述快照以及所述快照的状态标识与前一次统计后获取到的所述快照以及所述快照的状态标识进行比对子步骤的比对结果为所述快照链包含的快照和/或所述快照的状态标识在统计前后未发生变化,执行如下操作:
遍历所述基准数据块集中元素对应的数据块,每遍历一个数据块,执行如下操作:判断所述基准数据块集中记录的所述数据块的引用计数是否为0,若是,删除所述数据块;若否,判断所述基准数据块集中元素记录的所述数据块是否全部完成遍历,若尚未完成,则返回执行所述遍历所述基准数据块集中元素对应的数据块子步骤。
16.一种磁盘快照的管理装置,其特征在于,包括:
第一获取单元,用于获取磁盘的快照链包含的快照以及所述快照的第一状态标识,其中,所述快照的第一状态为统计开始时获取快照状态链的状态信息;
统计单元,用于对所述快照引用的数据块进行统计;
第二获取单元,用于在所述统计后获取所述快照链包含的快照的第二状态标识;
比对单元,用于对所述快照的第一状态标识和所述第二状态标识进行比对;
若所述比对单元输出的比对结果为所述快照链中存在状态标识发生变化的快照,则运行统计结果更新单元;
所述统计结果更新单元,用于针对状态标识发生变化的快照进行统计并更新统计结果;
其中,所述对所述快照引用的数据块进行统计,采用如下方式实现:
创建基准数据块集;所述基准数据块集的元素用于记录其对应数据块的名称以及其对应数据块被快照引用的引用计数;
读取所述快照引用的数据块的数据块列表。
17.一种可读存储介质,其特征在于,其上存储有指令,所述指令被执行以用于:
获取磁盘的快照链包含的快照以及所述快照的第一状态标识,其中,所述快照的第一状态为统计开始时获取快照状态链的状态信息;
对所述快照引用的数据块进行统计;
在所述统计后获取所述快照链包含的快照的第二状态标识;
对所述快照的第一状态标识和所述第二状态标识进行比对;
若所述快照链中存在状态标识发生变化的快照,则针对状态标识发生变化的快照进行统计并更新统计结果;
其中,所述对所述快照引用的数据块进行统计,采用如下方式实现:
创建基准数据块集;所述基准数据块集的元素用于记录其对应数据块的名称以及其对应数据块被快照引用的引用计数;
读取所述快照引用的数据块的数据块列表。
CN201711128522.XA 2017-11-15 2017-11-15 一种磁盘快照的管理方法、装置以及可读存储介质 Active CN109783274B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711128522.XA CN109783274B (zh) 2017-11-15 2017-11-15 一种磁盘快照的管理方法、装置以及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711128522.XA CN109783274B (zh) 2017-11-15 2017-11-15 一种磁盘快照的管理方法、装置以及可读存储介质

Publications (2)

Publication Number Publication Date
CN109783274A CN109783274A (zh) 2019-05-21
CN109783274B true CN109783274B (zh) 2023-03-14

Family

ID=66494673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711128522.XA Active CN109783274B (zh) 2017-11-15 2017-11-15 一种磁盘快照的管理方法、装置以及可读存储介质

Country Status (1)

Country Link
CN (1) CN109783274B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109739819A (zh) * 2019-01-15 2019-05-10 北京智融时代信息技术有限公司 可回溯的快照无损压缩方法、装置、设备及可读存储介质
CN113157199A (zh) * 2020-01-22 2021-07-23 阿里巴巴集团控股有限公司 快照占用空间计算方法、装置、电子设备及存储介质
CN113419667A (zh) * 2020-05-29 2021-09-21 阿里巴巴集团控股有限公司 快照容量计算方法和装置、电子设备以及计算机可读存储介质
CN117873958A (zh) * 2023-12-15 2024-04-12 天翼云科技有限公司 一种基于多版本数据的快照容量计算方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331378A (ja) * 2000-05-22 2001-11-30 Hitachi Ltd 記憶装置システムのスナップショット管理方法
CN101777016A (zh) * 2010-02-08 2010-07-14 北京同有飞骥科技有限公司 一种连续数据保护系统的快照存储和数据恢复方法
CN104714755A (zh) * 2013-12-13 2015-06-17 华为技术有限公司 一种快照管理方法及装置
CN105224422A (zh) * 2015-10-20 2016-01-06 浙江大华技术股份有限公司 一种数据备份方法及设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4292882B2 (ja) * 2003-03-18 2009-07-08 株式会社日立製作所 複数のスナップショット維持方法及びサーバ装置及びストレージ装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331378A (ja) * 2000-05-22 2001-11-30 Hitachi Ltd 記憶装置システムのスナップショット管理方法
CN101777016A (zh) * 2010-02-08 2010-07-14 北京同有飞骥科技有限公司 一种连续数据保护系统的快照存储和数据恢复方法
CN104714755A (zh) * 2013-12-13 2015-06-17 华为技术有限公司 一种快照管理方法及装置
CN105224422A (zh) * 2015-10-20 2016-01-06 浙江大华技术股份有限公司 一种数据备份方法及设备

Also Published As

Publication number Publication date
CN109783274A (zh) 2019-05-21

Similar Documents

Publication Publication Date Title
CN109783274B (zh) 一种磁盘快照的管理方法、装置以及可读存储介质
US11474972B2 (en) Metadata query method and apparatus
US10628378B2 (en) Replication of snapshots and clones
US11032368B2 (en) Data processing method, apparatus, and system
US9645892B1 (en) Recording file events in change logs while incrementally backing up file systems
US11093387B1 (en) Garbage collection based on transmission object models
US20180107402A1 (en) System and method for data storage using log-structured merge trees
US10013312B2 (en) Method and system for a safe archiving of data
CN108021590B (zh) 一种目标对象属性确定方法、属性更新方法及装置
KR101766790B1 (ko) 메인 메모리 데이터 베이스를 관리 하기 위한 방법 및 컴퓨팅 장치
CN113448917B (zh) 计算设备、非暂态机器可读存储介质和计算机实现的方法
US10628298B1 (en) Resumable garbage collection
CN113568582B (zh) 数据管理方法、装置和存储设备
CN111444114B (zh) 一种非易失性内存中数据的处理方法、装置及系统
CN114461599A (zh) 分段数据存储方法、装置、存储介质及电子装置
CN114297196A (zh) 元数据存储方法、装置、电子设备及存储介质
CN113448946A (zh) 数据迁移方法及装置、电子设备
KR102354343B1 (ko) 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치
KR20170106626A (ko) 메인 메모리 데이터 베이스를 관리 하기 위한 방법 및 컴퓨팅 장치
CN106354830B (zh) 一种数据库集群节点间数据同步的方法及装置
CN115987759A (zh) 数据处理方法、装置、电子设备及存储介质
US11645333B1 (en) Garbage collection integrated with physical file verification
CN110874182B (zh) 一种条带索引的处理方法、装置及设备
CN114968069A (zh) 一种数据存储方法、装置、电子设备和存储介质
CN110399100A (zh) 一种迁移处理的方法、装置、计算机存储介质及终端

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