一种连续数据存储方法转让专利

申请号 : CN201110456548.3

文献号 : CN102591749B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周可李春花王欣兴

申请人 : 华中科技大学

摘要 :

本发明公开了一种连续数据存储方法,包括以下步骤:用户端连接连续数据保护服务器,加入连续数据保护服务器中的用户组,并获取组员信息列表;监听用户组的公共端口,以等待用户组的组员连接;创建副本监视线程;根据组员信息列表连接用户组的组员,判断组员身份并加入相应组员列表;监听并获取组员的同步请求,为组员创建副本属主线程。本发明利用单机存储和局域网的优势,提高了数据存取的效率。数据不再存放到服务器,而是以多个副本的形式存放到用户组其他成员主机上,既避免了服务器性能瓶颈,降低了服务成本,同时也保证了数据的安全性,即使本地主机硬盘损坏,仍可进行数据恢复。

权利要求 :

1.一种连续数据存储方法,其特征在于,包括以下步骤:

用户端连接连续数据保护服务器,加入所述连续数据保护服务器中的用户组,并从所述连续数据保护服务器获取组员信息列表;

监听所述用户组的公共端口,以等待所述用户组的组员连接;

创建副本监视线程;

所述用户端根据所述组员信息列表连接所述用户组的组员,并判断所述组员是副本属主,副本目的主机,还是其它组员;

若所述组员是其它组员,则将所述组员加入所述其它组员的列表;

监听并获取所述组员的同步请求;

将所述组员加入所述副本属主的列表;

为加入的所述组员创建副本属主线程;

判断所述用户端是否与所述组员连接完毕;

若所述用户端与所述组员连接没有完毕,则返回所述所述用户端根据所述组员信息列表连接所述用户组的组员,并判断所述组员是副本属主,副本目的主机,还是其它组员的步骤。

2.根据权利要求1所述的连续数据存储方法,其特征在于,还包括以下步骤:若所述组员是副本属主,则进入所述将所述组员加入所述副本属主的列表的步骤;

若所述组员是副本目的主机,则将所述组员加入所述副本属主的列表;

为加入的所述组员创建副本属主线程,并进入所述判断所述用户端是否与所述组员连接完毕的步骤;

若所述用户端与所述组员连接完毕,则过程结束。

3.根据权利要求2所述的连续数据存储方法,其特征在于,所述创建副本属主线程的步骤包括以下子步骤:(3-1)根据所述副本目的主机的编号判断是否存在同步日志文件,若存在则打开所述同步日志文件,并进入步骤(3-2),若不存在,则创建并初始化所述同步日志文件,并进入步骤(3-2);

(3-2)读取所述副本目的主机的状态信息,以判断其是否被标识为删除,若是则转子步骤(3-9),否则转子步骤(3-3);

(3-3)根据所述同步日志文件的同步进度判断是否存在新增数据,若是则转子步骤(3-4);否则转子步骤(3-8);

(3-4)将所述新增数据发送到所述副本目的主机;

(3-5)接收来自所述副本目的主机的信息,并判断所述信息是同步成功信息,还是心跳信息;

(3-6)若所述信息是同步成功信息,则更新所述同步日志文件,并将所述副本目的主机的通信时间t0更新为当前时间t1,并返回步骤(3-2);

(3-7)若所述信息是心跳信息,则将所述副本目的主机的通信时间t0更新为当前时间t1,并返回子步骤(3-2);

(3-8)判断所述当前时间t1和所述副本目的主机的通信时间t0的差是否大于副本失效时间,若是则将所述副本目的主机从所述副本目的主机的列表中删除并结束线程,否则返回子步骤(3-2);

(3-9)向所述副本目的主机发送删除副本命令,以删除所述同步日志文件,并将所述副本目的主机迁移到所述其它组员的列表并结束线程。

4.根据权利要求1所述的连续数据存储方法,其特征在于,所述创建副本监视线程的步骤包括以下子步骤:(4-1)判断是否有新组员加入所述副本目的主机的列表,是则转入子步骤(4-5),否则转入子步骤(4-2);

(4-2)判断所述副本目的主机的列表中所述副本目的主机的数量是大于、小于还是等于当前的副本系数,若等于则休眠一段时间,并返回子步骤(4-1),若大于则转入子步骤(4-3),若小于则转入子步骤(4-4);

(4-3)查看所述副本目的主机的列表中所述副本目的主机的同步日志文件,将同步进度最慢的组员标记为删除,并返回子步骤(4-1);

(4-4)从所述其它组员的列表中复制一个组员到所述副本目的主机的列表;

(4-5)为所述新组员开启所述副本属主线程,并返回子步骤(4-2)。

5.根据权利要求1所述的连续数据存储方法,其特征在于,所述为加入的所述组员创建副本属主线程的步骤包括以下子步骤:(5-1)监听所述副本属主的数据同步请求,以判断是否接收到新数据,若收到新数据则转入子步骤(5-4),否则转入子步骤(5-2);

(5-2)判断当前时间t1和所述用户端最近一次与所述副本属主通信的时间t2的差是否大于设定的阈值,若是则转入子步骤(5-3),否则返回子步骤(5-1);

(5-3)向所述副本属主发送心跳信息,并将所述用户端最近一次与所述副本属主通信的时间t2更新为所述当前时间t1,并返回子步骤(5-1);

(5-4)判断所述新数据的类型是副本同步数据,块数据寻址信息,还是副本删除请求,若是所述副本同步数据,则转入子步骤(5-5),若是所述块数据寻址信息,则转入子步骤(5-6),若是所述副本删除请求,则转入子步骤(5-7);

(5-5)提取所述副本同步数据中的控制参数,接收所述新数据,并将所述新数据添加到副本文件的相应位置,并返回子步骤(5-1);

(5-6)顺序解析所述块数据寻址信息中的寻址信息,从本地副本文件读取所述寻址信息对应的块数据,将所述块数据发送回所述副本属主,并返回子步骤(5-1);

(5-7)在所述用户端查找所述副本属主的副本文件并将其删除,将所述副本属主从所述副本属主的列表中迁移到所述其它组员的列表,并向所述副本属主反馈删除成功信息,结束线程。

6.根据权利要求5所述的连续数据存储方法,其特征在于,所述控制参数包括副本文件编号、文件内偏移以及数据长度。

7.根据权利要求1至6中任一所述的连续数据存储方法,其特征在于,所述连续数据存储方法应用于连续数据保护系统的数据存储,采用对等结构划分用户组进行存储管理,数据以多个副本的形式存放到所述用户组内的成员主机上,所述组内成员根据副本文件的从属关系分为副本目的主机、副本属主和其他组员。

说明书 :

一种连续数据存储方法

技术领域

[0001] 本发明属于计算机数据存储和备份方法,具体涉及连续数据保护系统的一种数据存储方法。

背景技术

[0002] 连续数据保护(Continuous Data Protection,CDP)方法,在不影响业务数据运行的前提下,可以实现持续捕捉或跟踪目标数据所发生的任何改变,并且能够恢复到此前任意时间点。它可以保护从某时刻开始的卷或者文件在此后的任意时刻的数据状态,也就是数据的每次改变,都会被无一遗漏地记录下来。由于此特性,连续数据保护方法对存储系统的性能和空间提出了更高的要求。现有CDP系统的存储解决方案:或者是将数据保存到专用存储库,或者是依靠受保护的主机使用远程存储空间。为了防止主持续数据保护库可能出现的损坏或丢失对恢复能力产生影响,一些持续数据保护解决方案还提供将持续数据保护库复制到另外一个远程库的能力。
[0003] 然而,现有的数据存储方法存在以下问题:专用存储库对硬件要求较高,而使用远程存储空间则效率较低,可扩展性较差,很难提供大规模的CDP服务。

发明内容

[0004] 本发明提供一种连续数据保护系统的数据存储方法,利用该数据存储方法,解决现有连续数据保护系统效率较低、成本较高、扩展不方便等问题,从而提供大规模的CDP服务。
[0005] 本发明是通过以下技术方案实现的:
[0006] 一种连续数据存储方法,包括以下步骤:用户端连接连续数据保护服务器,加入连续数据保护服务器中的用户组,并从连续数据保护服务器获取组员信息列表,监听用户组的公共端口,以等待用户组的组员连接,创建副本监视线程,用户端根据组员信息列表连接用户组的组员,并判断组员是副本属主,副本目的主机,还是其它组员,若组员是其它组员,则将组员加入其它组员的列表,监听并获取组员的同步请求,将组员加入副本属主的列表,为加入的组员创建副本属主线程,判断用户端是否与组员连接完毕,若用户端与组员连接没有完毕,则返回用户端根据组员信息列表连接用户组的组员,并判断组员是副本属主,副本目的主机,还是其它组员的步骤。
[0007] 本发明的方法还包括以下步骤:若组员是副本属主,则进入将组员加入副本属主的列表的步骤,若组员是副本目的主机,则将组员加入副本宿主的列表,为加入的组员创建副本宿主线程,并进入判断用户端是否与组员连接完毕的步骤,若用户端与组员连接完毕,则过程结束。
[0008] 创建副本宿主线程的步骤包括以下子步骤:(3-1)根据副本目的主机的编号判断是否存在同步日志文件,若存在则打开同步日志文件,并进入步骤(3-2),若不存在,则创建并初始化同步日志文件,并进入步骤(3-2),(3-2)读取副本目的主机的状态信息,以判断其是否被标识为删除,若是则转子步骤(3-9),否则转子步骤(3-3),(3-3)根据同步日志文件的同步进度判断是否存在新增数据,若是则转子步骤(3-4),否则转子步骤(3-8),(3-4)将新增数据发送到副本目的主机,(3-5)接收来自副本目的主机的信息,并判断信息是同步成功信息,还是心跳信息,(3-6)若信息是同步成功信息,则更新同步日志文件,并将副本目的主机的通信时间t0更新为当前时间t1,并返回步骤(3-2),(3-7)若信息是心跳信息,则将副本目的主机的通信时间t0更新为当前时间t1,并返回子步骤(3-2),(3-8)判断当前时间t1和副本目的主机的通信时间t0的差是否大于副本失效时间,若是则将副本目的主机从副本目的主机的列表中删除并结束线程,否则返回子步骤(3-2),(3-9)向副本目的主机发送删除副本命令,以删除同步日志文件,并将副本目的主机迁移到其它组员的列表并结束线程。
[0009] 创建副本监视线程的步骤包括以下子步骤:(4-1)判断是否有新组员加入副本目的主机的列表,是则转入子步骤(4-5),否则转入子步骤(4-2),(4-2)判断副本目的主机的列表中副本目的主机的数量是大于、小于还是等于当前的副本系数,若等于则休眠一段时间,并返回子步骤(4-1),若大于则转入子步骤(4-3),若小于则转入子步骤(4-4),(4-3)查看副本目的主机的列表中副本目的主机的同步日志文件,将同步进度最慢的组员标记为删除,并返回子步骤(4-1),(4-4)从其它组员的列表中复制一个组员到副本目的主机的列表,(4-5)为新组员开启副本宿主线程,并返回子步骤(4-2)。
[0010] 为加入的组员创建副本属主线程的步骤包括以下子步骤:(5-1)监听副本属主的数据同步请求,以判断是否接收到新数据,若收到新数据则转入子步骤(5-4),否则转入子步骤(5-2),(5-2)判断当前时间t1和用户端最近一次与副本属主通信的时间t2的差是否大于设定的阈值,若是则转入子步骤(5-3),否则返回子步骤(5-1),(5-3)向副本属主发送心跳信息,并将用户端最近一次与副本属主通信的时间t2更新为当前时间t1,并返回子步骤(5-1),(5-4)判断新数据的类型是副本同步数据,块数据寻址信息,还是副本删除请求,若是副本同步数据,则转入子步骤(5-5),若是块数据寻址信息,则转入子步骤(5-6),若是副本删除请求,则转入子步骤(5-7),(5-5)提取副本同步数据中的控制参数,接收新数据,并将新数据添加到副本文件的相应位置,并返回子步骤(5-1),(5-6)顺序解析块数据寻址信息中的寻址信息,从本地副本文件读取寻址信息对应的块数据,将块数据发送回副本属主,并返回子步骤(5-1),(5-7)在用户端查找副本属主的副本文件并将其删除,将副本属主从副本属主的列表中迁移到其它组员的列表,并向副本属主反馈删除成功信息,结束线程。
[0011] 控制参数包括副本文件编号、文件内偏移以及数据长度。
[0012] 连续数据存储方法应用于连续数据保护系统的数据存储,采用对等结构划分用户组进行存储管理,数据以多个副本的形式存放到用户组内的成员主机上,组内成员根据副本文件的从属关系分为副本目的主机、副本属主和其他组员。
[0013] 本发明应用于连续数据保护系统,具有以下优点和技术效果:
[0014] (1)安全性
[0015] 采用对等结构划分用户组,同一个用户组的组员之间相互可信,保证了数据不泄露。块数据以多个副本的方式存放于组内其他组员主机,保证了数据的安全性。
[0016] (2)低成本、可扩展性
[0017] 和将数据保存到专用存储库相比,本发明以组员作为数据副本服务器避免了存储服务器单点造成的性能瓶颈,提高了可扩展性,同时降低了CDP服务的成本。
[0018] (3)高效性
[0019] 和依靠受保护的主机使用远程存储空间相比,本发明使用本地磁盘读写性能高很多,从本地获取块数据能达到最快的恢复速度,而本地磁盘损坏后,还可以从组员处获取块数据用于恢复。由于充分利用了局域网的优势,加上负载均衡的获取策略,通过所有副本目的主机的协同传输,能高效的完成恢复请求。
[0020] (4)高可靠性
[0021] 本发明的方法考虑到用户主机是可能崩溃的,比如掉电、系统重启、硬盘坏掉,因而需要多个数据副本。而用户进行恢复时为了找到副本目的主机并获取块数据,没有凭借任何本地存储信息,而是采用一个寻址信息即存储地址在组内标识唯一的数据块,并作为元数据存储于CDP服务器。采用请求应答的方式,用户就能方便地找到副本目的主机。网络也是不稳定的因素,利用同步日志文件保证副本数据的一致性,即使掉电重启或网络波动,也能根据日志继续同步。副本监视则对所有副本实时监控,一旦发现有副本失效,立刻同步副本到新组员以维持副本数。

附图说明

[0022] 图1为本发明连续数据存储方法的流程图。
[0023] 图2为本发明方法中步骤(3)的细化流程图。
[0024] 图3为本发明方法中步骤(7)的细化流程图。
[0025] 图4为本发明方法中步骤(12)的细化流程图。
[0026] 图5为本发明方法所应用的连续数据存储系统的示意图。

具体实施方式

[0027] 以下首先对本发明中的技术术语进行解释和说明:
[0028] 组员信息列表:用户组所有组员的IP地址和监听端口,用于组员之间的连接;
[0029] 副本文件:用户的块数据文件在用户组内存放的若干个完全拷贝;
[0030] 副本系数:用户的副本文件的个数;
[0031] 副本目的主机:针对当前用户来说,即是组内存放当前用户数据副本的组员主机。当前用户主机的磁盘损坏后,还可以从所有副本目的主机获取块数据以完成恢复;
[0032] 副本属主:与副本目的主机正好相反,即是当前用户主机存放的数据副本的属主。当前用户配合副本属主的副本同步、获取和删除;
[0033] 其它组员:与当前用户不存在副本从属关系的组员;
[0034] 心跳信息:用户在空闲时每隔一定时间向副本属主发送的信息,通知副本属主该用户在线;
[0035] 同步进度:当前块数据文件已经成功同步到副本文件的数据长度。
[0036] 如图1所示,本发明连续数据存储方法包括以下步骤:
[0037] (1)用户端连接连续数据保护服务器,加入连续数据保护服务器中的用户组,并从连续数据保护服务器获取组员信息列表;
[0038] (2)监听用户组的公共端口,以等待用户组的组员连接;
[0039] (3)创建副本监视线程;
[0040] (4)用户端根据组员信息列表连接用户组的组员,并判断组员是副本属主,副本目的主机,还是其它组员;
[0041] (5)若组员是其它组员,则将组员加入其它组员的列表;监听并获取组员的同步请求;
[0042] (6)将组员加入副本属主的列表;
[0043] (7)为加入的组员创建副本属主线程;
[0044] (8)判断用户端是否与组员连接完毕;
[0045] (9)若用户端与组员连接没有完毕,则返回步骤(4),若用户端与组员连接完毕,则过程结束;
[0046] (10)若组员是副本属主,则进入步骤(6);
[0047] (11)若组员是副本目的主机,则将组员加入副本宿主的列表;
[0048] (12)为加入的组员创建副本宿主线程,并进入步骤(8);
[0049] 如图2所示,本发明方法中的步骤(3)包括以下子步骤:
[0050] (3-1)判断是否有新组员加入副本目的主机的列表,是则转入子步骤(3-5),否则转入子步骤(3-2);
[0051] (3-2)判断副本目的主机的列表中副本目的主机的数量是大于、小于还是等于当前的副本系数,若等于则休眠5秒钟,并返回子步骤(3-1),若大于则转入子步骤(3-3),若小于则转入子步骤(3-4);
[0052] (3-3)查看副本目的主机的列表中副本目的主机的同步日志文件,将同步进度最慢的组员标记为删除,并返回子步骤(3-1);
[0053] (3-4)从其它组员的列表中复制一个组员到副本目的主机的列表;
[0054] (3-5)为新组员开启副本宿主线程,并返回子步骤(3-2);
[0055] 子步骤(3-3)中,同步日志文件的格式为:
[0056]主机编号 文件编号 同步进度
[0057] 主机编号为副本目的主机的的编号,文件编号为正在同步的块数据文件编号,同步进度为当前块数据文件已经同步成功的数据长度。由于同步按文件编号顺序进行,小于编号的块数据文件都已同步成功。
[0058] 如图3所示,本发明方法中的步骤(7)包括以下子步骤:
[0059] (7-1)监听副本属主的数据同步请求,以判断是否接收到新数据,若收到新数据则转入子步骤(7-4),否则转入子步骤(7-2);
[0060] (7-2)判断当前时间t1和用户端最近一次与副本属主通信的时间t2的差是否大于设定的阈值(20s),若是则转入子步骤(7-3),否则返回子步骤(7-1);
[0061] (7-3)向副本属主发送心跳信息,并将用户端最近一次与副本属主通信的时间t2更新为t1,并返回子步骤(7-1);
[0062] (7-4)判断新数据的类型是副本同步数据,块数据寻址信息,还是副本删除请求,若是副本同步数据,则转入子步骤(7-5),若是块数据寻址信息,则转入子步骤(7-6),若是副本删除请求,则转入子步骤(7-7);
[0063] (7-5)提取副本同步数据中的控制参数,接收新数据,并将新数据添加到副本文件的相应位置,并返回子步骤(7-1);
[0064] (7-6)顺序解析块数据寻址信息中的寻址信息,从本地副本文件读取寻址信息对应的块数据,将块数据发送回副本属主,并返回子步骤(7-1);
[0065] (7-7)在用户端查找副本属主的副本文件并将其删除,将副本属主从副本属主的列表中迁移到其它组员的列表,并向副本属主反馈删除成功信息,结束线程。
[0066] 在子步骤(7-5)中,提取副本同步数据中的控制参数,控制参数格式为:
[0067]文件编号 文件偏移 数据长度
[0068] 其中,文件编号是本次同步的块数据文件编号,文件偏移为本次同步的块数据在块数据文件中的偏移,数据长度为本次同步的块数据长度。
[0069] 在子步骤(7-6)中,解析块数据寻址信息中的寻址信息,从本地副本文件读取寻址信息对应的块数据说明如下:
[0070] 用户主机产生的块数据不停的追加写入本地块数据文件,并返回一个目的存储地址,该地址添加到元数据信息再发送到服务器保存。目的存储地址格式为:
[0071]文件编号 文件偏移
[0072] 其中,文件编号是块数据文件的编号,块数据文件以2GB大小为单位创建并按数字顺序编号。文件偏移是块数据在文件内的偏移。
[0073] 元数据格式为:
[0074]序列号 扇区号 存储地址 大小 时间戳
[0075] 其中,序列号为写操作编号,扇区号为写操作在主机块设备上的起始扇区号,存储地址为写操作的块数据在块数据文件中的存储地址,大小为写操作的块数据长度,时间戳为写操作发生的时间。
[0076] 块数据文件统一存放于/CDP/storage目录下。而副本文件则存放于按副本属主的编号建立的目录(/CDP/副本属主的编号)下,因为该编号是由服务器分配的全局唯一号码。根据该编号就能找到用户的副本文件目录,根据元数据中的存储地址就能找到相应副本文件,并定位到块数据的偏移位置,最后根据元数据的大小就能读取完整的块数据。
[0077] 如图4所示,本发明方法中的步骤(12)包括以下子步骤:
[0078] (12-1)根据副本目的主机的编号判断是否存在同步日志文件,若存在则打开同步日志文件,并进入步骤(12-2),若不存在,则创建并初始化同步日志文件(主机编号为该副本目的主机的编号,文件编号为1,同步进度为0),并进入步骤(12-2);
[0079] (12-2)读取副本目的主机的状态信息,以判断其是否被标识为删除,若是则转子步骤(12-9),否则转子步骤(12-3);
[0080] (12-3)根据同步日志文件的同步进度判断是否存在新增数据,若是则转子步骤(12-4);否则转子步骤(12-8);
[0081] (12-4)将新增数据发送到副本目的主机;
[0082] (12-5)接收来自副本目的主机的信息,并判断信息是同步成功信息,还是心跳信息;
[0083] (12-6)若信息是同步成功信息,则更新同步日志文件(将同步进度更新为当前值加上新增数据的长度),并将副本目的主机的通信时间t0更新为当前时间t1,并返回步骤(12-2);
[0084] (12-7)若信息是心跳信息,则将副本目的主机的通信时间t0更新为当前时间t1,并返回子步骤(12-2);
[0085] (12-8)判断当前时间t1和副本目的主机的通信时间t0的差是否大于副本失效时间(60s),若是则将副本目的主机从副本目的主机的列表中删除并结束线程,否则返回子步骤(12-2);
[0086] (12-9)向副本目的主机发送删除副本命令,以删除同步日志文件,并将副本目的主机迁移到其它组员的列表并结束线程。
[0087] 如图5所示,本发明的连续数据存储方法应用于连续数据保护系统的数据存储,采用对等结构划分用户组进行存储管理,数据以多个副本的形式存放到用户组内的成员主机上,组内成员根据副本文件的从属关系分为副本目的主机、副本属主和其他组员。
[0088] 用户组由物理上临近、相互可信、并共享高速网络带宽的用户组成。图中的用户组包括8个用户,用户组任何组员既是CDP用户,同时也是组内其他用户的数据副本服务器。
[0089] 数据副本是为了本机块数据文件的安全而建立的副本,并实时地同步到其他组员主机上。根据数据的重要性以及组成员数,可以选择建立多个副本,由副本系数决定。如节点node2的副本系数为1,节点node5、node8的副本系数皆为2。
[0090] 副本目的主机是组内存放当前用户数据副本的成员主机,当前用户主机的磁盘损坏后,还可以从所有副本目的主机获取块数据完成恢复。node2的副本目的主机是node1;node5的副本目的主机是node3、node4;node8的副本目的主机是node7、node6。
[0091] 副本属主与副本目的主机正好相反,即是当前用户主机存放的数据副本的属主。当前用户配合副本属主的副本同步、获取和删除。node7、node6的副本属主为node8;
node3、node4的副本属主为node5;node1的副本属主为node2。
[0092] 其他组员不存在副本从属关系,一旦使用CDP服务,将转换为某些组员的副本属主。同时作为副本目的主机的候选者,等待其他组员将数据副本同步过来。
[0093] 本发明不仅仅局限于上述具体实施方式,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方式实施本发明,因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。