一种连续数据保护系统的快照存储和数据恢复方法.pdf

上传人:r5 文档编号:965218 上传时间:2018-03-21 格式:PDF 页数:10 大小:495.41KB
返回 下载 相关 举报
摘要
申请专利号:

CN201019185014.4

申请日:

2010.02.08

公开号:

CN101777016A

公开日:

2010.07.14

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/14申请日:20100208|||公开

IPC分类号:

G06F11/14; G06F12/06

主分类号:

G06F11/14

申请人:

北京同有飞骥科技有限公司

发明人:

李虓; 周泽湘; 谭毓安; 王成武; 郭毅

地址:

100081北京市海淀区中关村南大街36号

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明公开了一种连续数据保护系统中的快照存储和数据恢复方法。针对块级CDP系统,在块级连续数据保护系统中,对磁盘数据块的每一个写操作,都有一个记录该写操作的CDP元数据。将CDP元数据作为一个链表节点,该节点中除了包含数据块的块号以外,还设置前向链接、上行链接、下行链接这3个字段。在此基础上,构造一个二叉树,记录各个关键链表节点的表头,即形成关键节点集合,从这些表头出发的链表能够反映当前时刻磁盘每一个块地址到日志数据块映射关系。本方法能够使用少量的存储空间就可以保存快照时刻的映射关系,从而实现支持更密集的数据快照,有利于缩短数据恢复时间。

权利要求书

1: 一种连续数据保护系统中的快照存储和数据恢复方法,其特征在于: 在块级连续数据保护系统中,对磁盘数据块的每一个写操作,都有一个记录该写操作的CDP元数据;将CDP元数据作为一个链表节点,该节点中除了包含数据块的块号以外,还设置前向链接、上行链接、下行链接这3个字段;在此基础上,构造一个二叉树,记录各个关键链表节点的表头,即形成关键节点集合,从这些表头出发的链表能够反映当前时刻磁盘每一个块地址到日志数据块映射关系; 当CDP系统捕获到对磁盘数据块的一个写操作时,便生成一个链表节点;CDP系统在日志数据区中记录数据块内容,并在链表节点中记录数据块的块号,同时更新本节点和相关节点的前向链接、上行链接、下行链接字段;此时,数据块和链表节点分别写入CDP日志,同时更新二叉树,维护关键节点集合,即增加、删除集合中的节点,使之实时反映磁盘数据块和日志数据区之间的映射状态; 当需要保存当前时刻的快照时,将二叉树中所有的节点内容作为快照的元数据;这个二叉树和CDP元数据中的关键链表,代表了快照时刻的映射关系; 当需要恢复快照时,首先从快照的元数据中获取有效表头,再通过CDP日志中的链表节点,从表头开始,沿着节点中的上行链接和下行链接进行搜索,从而获得所有数据块的映射关系; 当需要恢复快照之外的其它时间点数据时,首先恢复到该时间点之前的一次快照,获得该快照时刻的映射关系,再遍历快照时刻到该时间点之间的CDP元数据,根据元数据内容更新映射关系。

说明书


一种连续数据保护系统的快照存储和数据恢复方法

    【技术领域】

    本发明属于数据保护容灾备份技术领域,涉及一种连续数据保护系统的快照存储和数据恢复方法,尤其涉及一种在块级连续数据保护系统中利用链表和关键节点集合来存储快照和数据恢复的方法。

    背景技术

    在计算机领域,为了保护重要的数据信息,通常采用数据备份技术,在数据不可用时能从备份介质中恢复数据。但是在恢复数据时,两次备份之间的数据可能会丢失。对于一些关键的信息系统,所能容忍的数据丢失量,即恢复点目标(RPO,Recovery Point Object)要尽可能地低,这就需要应用连续数据保护(CDP,Continuous Data Protection)技术。

    CDP技术的原理是将更改过的所有数据按时间顺序保存下来,每次写操作都会生成带有时间戳的数据块版本,在恢复数据时能够获取任意一个时间点的数据状态。其中,块级CDP是将一个磁盘,即逻辑单元(LUN,Logical Unit)划分为固定大小的数据块,以数据块为单位来记录数据变化,特点是与应用的耦合比较低,性能和效率优于文件级CDP。

    当需要恢复数据到某个指定的时间点时,CDP系统可以从开始时间点一直到指定的时间点遍历所有已经记录的修改过的数据块,以恢复该时间点的数据状态,即获得该时间点的磁盘的每一个逻辑块地址(LBA,Logical Block Address)与CDP所记录的数据块之间的映射关系。

    为了缩短遍历时间,通常需要在CDP系统中定期产生数据快照,将某个时刻的映射关系存储起来。当需要恢复快照时刻的数据时,就可以直接获得映射关系,而无需再遍历CDP日志;要恢复数据到其他时间点时,从该时间点之前的那一次快照开始,遍历CDP日志直到该时间点,即可获得映射关系,而无须从开始时间点遍历。

    数据快照越密集,数据恢复所需的时间就越短,能够满足更低的数据恢复时间目标(RTO,Recovery Time Object)。然而,CDP系统生成快照时需要保存每一个块地址(LBA)到日志数据块之间的映射,因此需要付出较多的存储空间。

    【发明内容】

    本发明的目的在于提供一种连续数据保护系统中的快照存储和数据恢复方法,针对块级CDP系统,能够使用少量的存储空间就可以保存快照时刻的映射关系,从而实现支持更密集的数据快照,有利于缩短数据恢复时间。

    为实现上述目的,本发明所采用的技术方案如下:

    在块级连续数据保护系统中,对磁盘数据块的每一个写操作,都有一个记录该写操作的CDP元数据。将CDP元数据作为一个链表节点,该节点中除了包含数据块的块号以外,还设置前向链接、上行链接、下行链接这3个字段。在此基础上,构造一个二叉树,记录各个关键链表节点的表头,即形成关键节点集合,从这些表头出发的链表能够反映当前时刻磁盘每一个块地址(LBA)到日志数据块映射关系。

    当CDP系统捕获到对磁盘数据块的一个写操作时,便生成一个链表节点。CDP系统在日志数据区中记录数据块的数据内容,并在链表节点中记录数据块的块号,同时更新本节点和相关节点的前向链接、上行链接、下行链接字段。此时,数据块和链表节点分别写入CDP日志,同时更新二叉树,维护关键节点集合,即增加、删除集合中的节点,使之实时反映磁盘数据块和日志数据区之间的映射状态。

    当需要保存当前时刻的快照时,将二叉树中所有的节点内容作为快照的元数据。这个二叉树和CDP元数据中的关键链表,代表了快照时刻的映射关系。

    当需要恢复快照时,首先从快照的元数据中获取有效表头,再通过CDP日志中的链表节点,从表头开始,沿着节点中的上行链接和下行链接进行搜索,从而获得所有数据块的映射关系。

    当需要恢复快照之外的其它时间点数据时,首先恢复到该时间点之前的一次快照,获得该快照时刻的映射关系,再遍历快照时刻到该时间点之间的CDP元数据,根据元数据内容更新映射关系。

    有益效果

    本发明方法,对比现有技术,具有以下优点:

    1)生成快照时,仅需保存二叉树即可,而不需要直接保存磁盘的所有数据块在日志中地存储位置,从而减少了保存CDP快照所需要的存储空间,提高了快照的存储效率。

    2)缩短了数据恢复时间。由于减少了快照占用的存储空间,CDP系统可以以较高的频率(即较短的间隔)生成快照。由于快照频率的增加,两个快照之间的数据量变化相应减少,恢复数据所必须遍历的元数据较少,因此可以较快地完成数据恢复。

    【附图说明】

    图1为数据结构示意图;

    图2为关键节点示意图。

    【具体实施方式】

    下面结合附图和具体实施例对本发明作进一步详细说明。

    一种连续数据保护系统中的快照存储和数据恢复方法,其技术方案如下:

    在块级连续数据保护系统中,对磁盘数据块的每一个写操作,都有一个记录该操作的CDP元数据。将CDP元数据作为一个链表节点,该节点中除了包含数据块的块号以外,还设置前向链接、上行链接、下行链接3个字段。在此技术上,构造一个二叉树,记录各个关键链表的表头(即关键节点集合),从这些表头出发的链表能够反映当前时刻的映射关系。下面进行具体说明。

    一、CDP日志及快照中的元数据结构,如图1所示。

    1.CDP日志

    CDP日志包括数据区和元数据区。其中,数据区保存数据块,元数据区保存CDP元数据(即链表节点)。

    按文件系统或上层应用的最小访问粒度确定数据块的大小(例如,每个数据块的大小为4KB),将整个磁盘划分N个数据块,块地址的范围为0到N-1。

    2.链表节点

    每一个链表节点对应于一个数据块写操作。链表节点作为CDP元数据,它包括4个字段:数据块的块号、前向链接、上行链接、下行链接字段。

    CDP日志中的链表节点在日志元数据区中顺序存放。日志元数据区能容纳的节点总数为M。链表节点的序号为1到M-1,节点编号记为Ck,1≤k≤M-1,CDP系统不使用链表节点0。同时,设置一个计数器,从1开始计数,每记录一个数据块写操作(即在日志中加入一个CDP元数据)后,计数器加1。链表节点的序号就是当前时刻计数器的计数值。

    对于第k个数据块写操作(即,计数器计数值为k时接收到的写操作),CDP系统把要写入该数据块的数据保存到CDP日志的数据区中,块地址为k,并把这个操作的元数据存储在链表节点Ck中。Ck中存储的内容为:

    Ck.L:该数据块的块号L;

    Ck.v:前向链接,该数据块的下一次写操作的元数据节点序号v;

    Ck.p:上行链接,该数据块的上一个数据块(即块号为L-1的数据块)的当前节点序号p;

    Ck.q:下行链接,该数据块的下一个数据块(即块号为L+1的数据块)的当前节点序号q

    图2表示了15次数据块写操作的链表节点。如图所示,共有8个数据块,块号为0至7,其中数据块5未被写入。每个链表节点表示一次数据块写入操作,图中的横坐标是链表节点C1至C15的时刻,纵坐标是写入的数据块块号。例如,数据块6在时刻7和时刻13被写入,生成C7、C13。图中实线箭头表示上行链接,指向左下方的虚线箭头表示下行链接,指向右方的水平虚线箭头表示前向链接。

    3.二叉树P

    设置一个二叉树P,用于保存当前时刻的关键节点集合,且P按照节点块号大小顺序索引。关键节点集合是CDP日志中链表节点的一个子集,对于每一次数据块写入操作,CDP系统将修改相关的链表节点并调整关键节点集合,反映当前时刻所有磁盘数据块在CDP日志数据区的存储位置。从关键节点集合中的节点出发,沿着上行、下行链接,能够获得所有数据块的最近的一次写入操作的节点序号。

    以图2为例,时刻8的关键节点集合为{C6,C8}。沿C6的上行链接可以找到C5、C2和C1,而这三个节点分别是时刻8数据块3、数据块2和数据块1的最新修改。同时块C6还可以沿下行链接找到C4,它是数据块4在该时刻的最新修改。沿C8的上行链接可以找到C7,它是数据块6在该时刻的最新修改。

    C5则不是时间点8的关键节点,因为它沿下行链接找到的是C3,而C3对应的数据块在时间点8的最新修改由C6所记录。

    图2中数据块5未被修改,因此链表节点C4和C7的下行和上行链接被置为0。

    4.映射表S

    CDP系统在内存中设置一个映射表S,一共N项,每一项记录一个磁盘数据块的最后一次写入操作,即该操作的CDP元数据链表节点序号。节点序号为0时,表示该数据块未被修改。

    5.秒级索引I

    恢复时间点可以精确到秒级,CDP系统设置一个索引表,每一秒在表的末尾增加一项,记录当前时刻计数器的计数值。

    6.快照元数据E

    快照元数据包括:快照名称、建立快照的时间(年、月、日、时、分、秒)、当前时刻的计数值、二叉树P中关键节点集合。

    7.磁盘原始数据区R

    磁盘原始数据区的容量和要保护的磁盘相同,容纳N个数据块。在建立CDP系统时,将磁盘上的所有数据块复制到磁盘原始数据区。

    下面分别具体说明在CDP系统中的记录CDP日志、保存快照、恢复快照、恢复任意时刻点数据的实现过程。

    (1)记录数据块写入操作

    CDP系统中记录一个磁盘数据块写操作(设其块号为B,0≤B≤N-1,要写入该块的数据为D)的详细流程如下:

    1.取得当前计数器的计数值为k,计数值加1;k大于等于M时,日志区满,系统不再记录数据块写操作。

    2.将数据D写入到日志的数据区k。

    3.构造此次数据块写操作的元数据即链表节点Ck,Ck的4个字段为:Ck.L、Ck.v、Ck.p、Ck.q。

    a)Ck.L=B,即记录该数据块对应的块号。

    b)CS[B].v=k。更新该数据块上次改写的前向链接v。从表S中取出该块上次改写的链表节点序号S[B],使CS[B]的前向链接指向本链表节点Ck。

    c)Ck.v=0。本链表节点Ck的前向链接置空,下一次对块B的写操作才会设置Ck.v。

    d)构造上行链接。B=0时,Ck.p=0;否则Ck.p=S[B-1],本链表节点Ck的上行链接指向上一块(B-1)的最后一次修改的链表节点。

    e)构造下行链接。B=N-1时,Ck.q=0;否则Ck.q=S[B+1],本链表节点Ck的下行链接指向下一块(B+1)的最后一次修改的链表节点。

    4.更新映射表S,S[B]=k。

    5.更新时刻k的当前关键节点集合二叉树P。

    a)将链表节点Ck插入到P。对于时刻k,Ck描述的是块B的最后更新,因此将Ck插入二叉树P。

    b)获取上行链接节点序号a=Ck.p,如果a不等于0且Ca在二叉树P中,则从树中删除Ca。因为如果写入块的上行链接指向上个时间点k-1的一个关键节点,则在时间点k时它不再是关键节点。

    c)获取上行链接节点序号b=Ck.p,如果b不等于0且Cb在二叉树P中,则从树中删除Cb。因为如果写入块的下行链接指向上个时间点k-1的一个关键节点,则在时间点k时它不再是关键节点。

    (2)保存快照

    生成快照时,将快照名称、当前时间(年月日时分秒格式)、当前计数值、当前时刻的二叉树P中保存的关键节点等记录在快照元数据E中。其中二叉树P中的关键节点按照节点中块号大小顺序存放在E中。要记录N个数据块的映射关系,映射表S需要N项,而二叉树P只需要包含当前时刻的关键节点,它所占据的存储空间比映射表S要小。在测试中,P中保存的节点数量一般只占磁盘数据块数量N的1%左右。

    (3)恢复快照时刻的磁盘数据

    要恢复某一时刻k的快照,CDP系统需要根据该时间点的关键节点集合和日志构建出该时刻的映射表S。

    S的全部N项被初始化为0。对于快照时间点的关键节点集合中的每一个关键节点Ci,执行以下操作:

    1.将该关键节点所记录的数据块写操作加入S,即S[Ci.L]=i。

    2.从Ci节点出发,沿上行链接遍历,直到某个节点Cm的前向链接中的节点序号小于k(即节点Cm所记录的块操作不是在时间点k时的最新修改),或上行链接为0,将途经的每个节点(不包括节点Cm)加入S。

    3.从Ci节点出发,沿下行链接遍历,直到某个节点Cn的前向链接中的节点序号小于k(即节点Cn所记录的块操作不是在时间点k时的最新修改),或下行链接为0,将途经的每个节点(不包括节点Cn)加入S。

    计算机读取快照时刻的磁盘数据块(块号为B)时,CDP系统从映射表S中取出表项j=S[B]。若j等于0,则该块未被修改,从原始磁盘数据区R中读取数据块(块号为B);否则读取存CDP日志数据区中块地址为j的数据,即该快照中的磁盘数据块B的内容。

    (4)恢复任意时刻的磁盘数据

    用户指定一个时间(单位为秒),要构造某一时刻的映射表S,CDP系统执行以下操作:

    1.在秒级索引I中获取该时刻的计数值h。

    2.获取该时间点的前一个快照,按上述算法构造快照时间点k的映射表S。

    3.读取CDP日志区的链表节点(序号范围为k到h),对于每一个链表节点Cj,按顺序将Cj所记录的数据块写操作加入S,即S[Cj.L]=j。

    计算机读取该时刻的磁盘数据块(块号为B)时,方法与读取快照时刻的磁盘数据块相同。

    实施例

    下面结合图2进行实例说明。

    在图2中,时刻11的关键节点集合为{C11,C8}。保存时刻11的快照时,只需要将C11、C8两个链表节点按块号由小到大的顺序(即C11,C8,因为C11.L=3,C8.L=8)保存。同样,时刻10的关键节点集合为{C10,C6,C11},当保存时刻10的快照时,只需要保存C10,C6,C11三个关键节点。

    当需要恢复时刻11的快照时,将映射表S初始化为全0,并从快照元数据中读出关键节点集合{C11,C8},首先取出链表节点C11,将C11记录的写操作加入S(即S[2]=11)。接着沿C11的上行链接(图中实线箭头)在CDP的元数据区(链表节点区)中找到C10,将C10加入S(S[1]=10),又沿C10的上行链接找到C9并将之加入S(S[0]=9),当再次沿C9的上行链接查找时,发现此链接为0,于是终止上行查找,转向下行查找。沿C11的下行链接(图中虚线箭头)先后找到C6和C4并加入S,同样因为C4的下行链接为零,终止下行查找。此时就完成了对关键节点C11的处理,接着处理关键节点集合中的下一个节点C8。C8的上行链接指向C7,而C7的上行链接为0,C8的下行链接也为0,因此,对C8的处理将C8和C7加入S,S的内容为:S[0]=9,S[1]=10,S[2]=11,S[3]=6,S[4]=4,S[5]=0,S[6]=7,S[7]=8,即为时刻11时所有块号的最新修改。

    S[5]=0,表示CDP日志数据区未记录磁盘块5的修改,而时刻11数据块0、1、2、3、4、6、7的内容可以从CDP日志数据区中的数据块9、10、11、6、4、7、8中获取。

    当要恢复时刻10的快照时,步骤和恢复时刻11的快照一致,只是在对关键节点C10进行下行查找时,当找到C5时稍有区别。此时C5的下行链接指向C3,但C3的前向链接(图中双点线)指向C6,而C6是在时刻10之前写入的(6<10),因此下行查找终止。C3的前向链接指出了C3不是块号3在时刻10的最新修改。

一种连续数据保护系统的快照存储和数据恢复方法.pdf_第1页
第1页 / 共10页
一种连续数据保护系统的快照存储和数据恢复方法.pdf_第2页
第2页 / 共10页
一种连续数据保护系统的快照存储和数据恢复方法.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种连续数据保护系统的快照存储和数据恢复方法.pdf》由会员分享,可在线阅读,更多相关《一种连续数据保护系统的快照存储和数据恢复方法.pdf(10页珍藏版)》请在专利查询网上搜索。

本发明公开了一种连续数据保护系统中的快照存储和数据恢复方法。针对块级CDP系统,在块级连续数据保护系统中,对磁盘数据块的每一个写操作,都有一个记录该写操作的CDP元数据。将CDP元数据作为一个链表节点,该节点中除了包含数据块的块号以外,还设置前向链接、上行链接、下行链接这3个字段。在此基础上,构造一个二叉树,记录各个关键链表节点的表头,即形成关键节点集合,从这些表头出发的链表能够反映当前时刻磁盘每。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1