一种基于云存储环境的连续数据保护的缓存方法
【技术领域】
[0001]本发明属于云存储应用领域,更具体地,涉及一种基于云存储环境的连续数据保护的缓存方法。
【背景技术】
[0002]随着互联网数据量的爆炸式增长,如何高效、可靠、稳定的存储这些数据愈发成为业界关注的焦点,因此如何为用户提供有效的数据保护方法也成为数据保护领域的研宄热点。
[0003]当前在数据保护领域中使用方式是按一定时间间隔(比如一天)对需要备份的磁盘数据进行一次全量的数据备份。
[0004]然而,这种数据备份方式存在着一个很明显的缺点,即无法恢复到时间周期中的任意一个时间点。这样导致的后果在于,随着数据量的增大,尤其是数据量增长速度的加快,单位时间内增加的数据量也将随之变大,对于金融,银行的等恢复粒度要求较高的行业来说可能造成一定的关键性数据的丢失;另外,虽然现在的连续数据保护技术能够为用户提供恢复到任意时间点的功能,但是现在的的连续数据保护技术存在着扩容、数据迀移的成本较高及数据恢复效率低等问题;而且,由于广域网传输带宽限制的问题,使得该连续数据保护技术没有得到广泛的利用。
【发明内容】
[0005]针对现有技术的以上缺陷或改进需求,本发明提供了一种基于云存储环境的连续数据保护的缓存方法。其目的在于,结合云存储和连续数据保护技术两大技术的优势,解决现有云备份技术中存在的恢复时间粒度大、扩容和数据迀移成本高、数据恢复效率低的技术问题。
[0006]为实现上述目的,按照本发明的一个方面,提供了一种基于云存储环境的连续数据保护的缓存方法,包括以下步骤:
[0007](I)接收来自客户端的数据保护请求,并判断该数据保护请求是登陆请求,同步请求,恢复请求,备份请求,还是退出请求,如果是登陆请求则进入步骤(2),如果是同步请求则进入步骤(3),如果是备份请求则进入步骤(4),如果是恢复请求则进入步骤(5),如果是退出请求则进入步骤(9);
[0008](2)获取该客户端的IP地址,并根据该登录请求获取被保护磁盘分区,根据IP地址和被保护磁盘分区判断该客户端是否存在于用户列表文件中,如果存在,则向客户端返回该账号已存在的提示,然后返回步骤(I),如果不存在,分配一个唯一的账号给该客户端,将客户端的IP地址、磁盘分区号、分配的账号记录在用户列表文件中,并根据该账号创建记录该客户端信息的元数据记录文件、元数据映射表和数据文件位置表。并向客户端反馈需要同步的提示,然后返回步骤(I);
[0009](3)根据该同步请求对应的同步数据生成对应的磁盘分区镜像文件,并发送生成完成的信息给客户端,然后返回步骤(I);
[0010](4)接收备份请求对应的数据和元数据,将数据进行本地存储,获取数据在本地存储的位置信息、以及该扇区号最近一次备份过程中所存储的元数据在元数据记录文件中的位置,将元数据、数据在本地存储的位置信息、以及该扇区号上一次备份过程中所存储的元数据在元数据记录文件中的位置存放在元数据记录文件中,并使用存放的位置更新元数据映射表中该扇区号最近一次备份过程中所存储的元数据存放在元数据记录文件中的位置;
[0011](5)根据恢复请求获取恢复数据的恢复时间点,根据恢复数据的恢复时间点检索所有扇区号的元数据、所有扇区号的数据在本地存储的位置信息、以及所有扇区号上一次备份过程中所存储的元数据,以形成恢复视图;
[0012](6)读取磁盘分区镜像文件,并将该磁盘分区镜像文件写入恢复请求对应的恢复文件中;
[0013](7)顺序读取恢复视图中的记录,并根据数据大小、数据在本地存储的位置信息获取数据,并将该数据覆盖到恢复文件中以形成新的恢复文件;
[0014](8)利用open-1scsi协议读取新的恢复文件中的数据,并将读取的数据发回给客户端,并发送成功标识,然后返回步骤(I);
[0015](9)释放TCP连接,回收系统资源,同时将客户端占用的线程放入空闲线程池。
[0016]优选地,步骤(I)中,通过读取数据保护请求的数据包头部的字段,如果该字段为0,则表示该请求是登录请求,如果为I则表示该请求是恢复请求,如果为2则表示该请求是备份请求,如果为3则表示该请求是同步请求,如果为4则表示该请求是退出请求。
[0017]优选地,元数据包括时间戳、数据大小以及数据在磁盘中的扇区号。
[0018]优选地,数据在本地存储的位置信息包括所存储的文件名以及文件偏移,扇区号最近一次备份过程中所存储的元数据在元数据记录文件中的位置从元数据映射表中获取。
[0019]优选地,步骤(4)中将数据进行本地存储的过程包括以下子步骤:
[0020](4-1-1)打开记录当前备份数据文件信息的文件,里面记录了当前备份数据文件编号、当前备份数据文件总大小、剩余空间大小,如果记录当前备份数据文件信息的文件为空文件,则进入步骤(4-1-2),否则进入步骤(4-1-3);
[0021](4-1-2)设置备份数据文件名起始标识,然后创建备份数据文件,在数据文件位置表中记录该备份数据文件在本地,并更新记录当前备份数据文件信息的文件,设置当前备份数据文件编号,当前备份数据文件总大小和剩余空间大小都设置为文件规定的大小,转步骤(4-1-4);
[0022](4-1-3)读取文件中的信息,得到当前文件编号,转步骤(4-1-4);
[0023](4-1-4)判断当前备份数据文件没有超过了规定的大小,如果没有超过,则将数据写入到当前备份数据文件,并更新记录当前备份数据文件信息的文件,设置当前备份数据文件剩余空间大小;如果超过规定值,则生成新的备份数据文件,新的备份数据文件名在前一个备份数据文件名前提上加1,并将数据写入新的备份数据文件,然后更新记录当前备份数据文件信息的文件,设置当前备份数据文件编号、当前备份数据文件总大小、剩余空间大小等,最后返回数据写入当前备份数据文件的文件名及文件偏移。
[0024]优选地,步骤(4)中将元数据进行组织存储的过程具体包括以下子步骤:
[0025](4-2-1)根据元数据中的扇区号找到对应的元数据映射表中的位置。该扇区号对应的元数据映射表表项中记录着该扇区最近一次备份过程中所存储的元数据在元数据记录文件的位置以及该扇区备份过程中所存储的元数据日志链表的长度,并转入步骤(4-2-2);
[0026](4-2-2)获取该扇区号对应的元数据映射表表项的信息,并将该扇区号最近一次备份过程中所存储的元数据在元数据记录文件的位置写入新生成的元数据的最近一次备份过程元数据记录位置字段,并将元数据映射表中该扇区备份过程中所存储的元数据日志链表长度加1,将元数据、数据在本地存储的位置信息、以及该扇区号上一次备份过程中所存储的元数据在元数据记录文件中的位置写入元数据记录文件中,并将返回的存储位置更新元数据映射表中该扇区最近一次备份过程中所存储的元数据在元数据记录文件中的位置。
[0027]优选地,步骤(5)包括以下子步骤:
[0028](5-1)遍历元数据映射表中的每一个元数据映射表项,元数据映射表项代表指定扇区最近一次备份过程中生成的元数据在元数据记录文件中的位置,并对元数据映射表项代表的扇区的元数据日志链进行回溯,找出小于恢复时间的最大时刻的元数据,并转入步骤(5-2);
[0029](5-2)提取元数据中的磁盘扇区号,数据长度和数据的存储位置信息形成磁盘的恢复视图。
[0030]优选地,步骤(7)中获取数据的过程具体包括以下子步骤:
[0031](7-1)根据数据文件位置表查找存储文件是否在本地,是则进入步骤(7-2),否则进入步骤(7-3);
[0032](7-2)从云存储端下载相应文件。进入步骤(7-3);
[0033](7-3)解析数据在本地存储的位置信息和数据大小,读取数据。
[0034]按照本发明的另一方面,提供了一种基于云存储环境的连续数据保护的缓存系统,包括以下步骤:
[0035]第一模块,用于接收来自客户端的数据保护请求,并判断该数据保护请求是登陆请求,同步请求,恢复请求,备份请求,还是退出请求,如果是登陆请求则进入第二模块,如果是同步请求则进入第三模块,如果是备份请求则进入第四模块,如果是恢复请求则进入第五模块,如果是退出请求则进入第九模块;
[0036]第二模块,用于获取该客户端的IP地址,并根据该登录请求获取被保护磁盘分区,根据IP地址和被保护磁盘分区判断该客户端是否存在于用户列表文件中,如果存在,则向客户端返回该账号已存在的提示,然后返回第一模块,如果不存在,分配一个唯一的账
号给该客户端,将客户端的IP地址、磁盘分区号、分配的账号记录在用户列表文件中,并根据该账号创建记录该客户端信息的元数据记录文件、元数据映射表和数据文件位置表。并向客户端反馈需要同步的提示,然后返回第一模块;
[0037]第三模块,用于根据该同步请求对应的同步数据生成对应的磁盘分区镜像文件,并发送生成完成的信息给客户端,然后返回第一模块;
[0038]第四模块,用于接收备份请求对应的数据和元数据,将数据进行本地存储,获取数据在本地存储的位置信息、以及该扇区号最近一次备份过程中所存储的元数据在元数据记录文件中的位置,将元数据、数据在本地存储的位置信息、以及该扇区号上一次备份过程中所存储的元数据在元数据记录文件中的位置存放在元数据记录文件中,并使用存放的位置更新元数据映射表中该扇区号最近一次备份过程中所存储的元数据存放在元数据记录文件中的位置;
[0039]第五模块,用于根据恢复请求获取恢复数据的恢复时间点,根据恢复数据的恢复时间点检索所有扇区号的元数据、所有扇区号的数据在本地存储的位置信息、以及所有扇区号上一次备份过程中所存储的元数据,以形成恢复视图;
[0040]第六模块,用于读取磁盘分区镜像文件,并将该磁盘分区镜像文件写入恢复请求对应的恢复文件中;
[0041]第七模块,用于顺序读取恢复视图中的记录,并根据数据大小、数据在本地存储的位置信息获取数据,并将该数据覆盖到恢复文件中以形成新的恢复文件;
[0042]第八模块,用于利用open-1scsi协议读取新的恢复文件中的数据,并将读取的数据发回给客户端,并发送成功标识,然后返回步骤(I);
[0043]第九模块,用于释放TCP连接,回收系统资源,同时将客户端占用的线程放入空闲线程池。
[0044]总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0045]1、能够解决现有方法中存在的恢复时间粒度大的技术问题:由于采用了有别于传统备份技术的连续数据保护技术,连续数据保护技术能够实时地对客户端发生的对磁盘的写操作数据进行捕获、重定向、并将写操作数据备份到缓存代理端。在备份过程中需要根据捕获的写操作数据创建时间戳、数据大小、写入的扇区号等元数据,并将元数据和数据一并发送给缓存代理端。缓存代理端采用步骤(4)将元数据和数据存放到缓存代理端,数据的存放过程采用步骤(4-1-1)、步骤(4-1-2)、步骤(4-1-3)和步骤(4_1_4),将数据存放到备份数据文件中,并获取数据存放的位置信息,数据存放的位置信息作为新的元数据的一个字段。元数据的存放过程采用步骤(4-2-1)和步骤(4-2-2),首先需根据元数据、数据存放的位置信息、该扇区号最近一次备份过程产生的元数据在元数据记录文件中的位置信息构建新的元数据,该扇区号最近一次备份过程产生的元数据在元数据记录文件中的位置信息通过查找元数据映射表来获取,并将新的元数据存放到元数据记录文件中,最后更新元数据映射表,使得该扇区最近一次备份过程产生的新的元数据的存储位置指向本次新的元数据存放位置。采用连续数据保护解决了备份粒度大的问题。
[0046]2、本发明能够解决现有方法中存在的扩容和数据迀移成本高的技术问题:本发明基于云存储环境,由于采用了调度方法中的步骤(I)和步骤(2),能够动态地将备份数据迀移到云存储中,这样便可以节省存储数据的硬件开销;步骤(I)是根据磁盘空间的使用率以及每个客户端使用的磁盘空间量和每个客户端的备份数据增长率来决定是否触发迀移操作并决定迀移哪个客户端的数据,步骤(2)是迀移操作及备份数据文件的记录操作,备份文件的记录操作记录备份文件是在缓存代理端还是云存储端。采用云存储环境和调度方法,能够有效解决扩容和数据迀移成本高的问题;
[0047]3、本发明能够解决现有方法中存在的数据恢复效率低的技术问题:本发明采用了元数据映射表这一部件,元数据映射表记录各扇区最近一次备份过程中所存储的元数据在元数据记录文件中的位置,通过元数据映射表和元数据记录文件中的记录可以跳跃式的找到所有扇区在恢复时间点的元数据,并生成恢复视图;恢复过程如步骤(5)、步骤(6)、步骤(7)、步骤(8)所示,首先获取恢复时间点,并根据恢复时间点、元数据记录文件、元数据映射表得到恢复视图,然后根据恢复视图和数据文件位置表找到相应的数据,根据磁盘分区镜像文件生成恢复文件,覆盖恢复文件的相应部分;最后将恢复文件发送给客户端。
[0048]4、本发明的效率高,能够为用户提供7*24的数据备份服务,当故障发生时,丢失的数据极少,最大限度的保护了数据。
【附图说明】
[0049]图1是本发明基于云存储环境的连续数据保护的缓存方法的总体流程图;
[0050]图2是本发明将数据进行本地存储的细化流程图;
[0051]图3是本发明将元数据进行组织存储的细化流程图;
[0052]图4是本发明方法中步骤(5)的细化流程图;
[0053]图5是本发明步骤(7)中获取数据的细化流程图。
【具体实施方式】
[0054]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0055]本发明的思路在于,传统服务器端扩容成本昂贵、可扩展性差,且⑶P备份服务积攒的数据随着时间的推移将急剧增加。为此,可将备份的数据迀移至云存储服务提供商,从而解决可扩展性差的问题。我们设计一个缓存代理端,一方面让它响应客户端的服务请求,另一方面则根据缓存代理端备份数据量的情况,不定时的将备份数据迀移至云存储端。为使数据恢复操作具有较小的响应时间,采用LRU策略迀移备份数据。这样最近使用过的备份数据将保存在缓存代理端。为加快数据恢复速度,创建元数据映射表,用于记录各扇区最近一次备份过程中所存储的元数据在元数据记录文件中的位置,元数据映射表保存在数据库中。
[0056]如图1所示,本发明基于云存储环境的连续数据保护的缓存方法包括以下步骤:
[0057](I)接收来自客户端的数据保护请求,并判断该数据保护请求是登陆请求,同步请求,恢复请求,备份请求,还是退出请求,如果是登陆请求则进入步骤(2),如果是同步请求则进入步骤(3),如果是备份请求则进入步骤(4),如果是恢复请求则进入步骤(5),如果是退出请求则进入步骤(9);具体而言,通过读取数据保护请求的数据包头部的字段,如果该字段为0,则表示该请求是登录请求,如果为I则表示该请求是恢复请求,如果为2则表示该请求是备份请求,如果为3则表示该请求是同步请求,如果为4则表示该请求是退出请求;
[0058](2)获取该客户端的IP地址,并根据该登录请求获取被保护磁盘分区,根据IP地址和被保护磁盘分区判断该客户端是否存在于用户列表文件中,如果存在,则向客户端返回该账号已存在的提示,然后返回步骤(I),如果不存在,分配一个唯一的账号给该客户端,将新客户端信息(IP地址,磁盘分区号,还有分配的账号)记录在用户列表文件中,并根据该账号创建记录该客户端信息的元数据记录文件、元数据映射表和数据文件位置表。并向客户端反馈需要同步的提示,然后返回步骤(I);具体而言,假设客户端的ip地址为192.168.0.2,被保护磁盘分区为sdc,则根据ip地址和被保护磁盘分区号到用户列表文件中查找是否存在该客户端,不存在则给该客户端(192.168.0.2,sdc)分配唯一的账号,并将IP地址、磁盘分区号、分配的账号,比如(192.168.0.2,sdc, I)记录到用户列表文件中,最后根据账号创建一个文件和两个数据库表:元数据记录文件和元数据映射表和数据文件位置表。元数据记录文件文件名的命名形式为/Q)P/data/metafile/metafile*,元数据映射表表名命名形式为MapTable*,其中*表不给客户端分配的唯一账号;存在则从用户列表中获取之前记录的账号;数据文件位置表记录数据文件在缓存代理端还是在云存储端或者既在缓存代理端又在云存储端;
[0059](3)根据该同步请求对应的同步数据生成对应的磁盘分区镜像文件,并发送生成完成的信息给客户端,然后返回步骤(I);具体而言,磁盘分区镜像文件命名方式为/CDP/data/init/init*,其中*表示给客户端分配的唯一账号;
[0060](4)接收备份请求对应的数据和元数据(其包括时间戳、数据大小以及数据在磁盘中的扇区号),将数据进行本地存储,获取数据在本地存储的位置信息、以及该扇区号最近一次备份过程中所存储的元
数据在元数据记录文件中的位置。其中,数据在本地存储的位置信息包括所存储的文件名以及文件偏移;扇区号最近一次备份过程中所存储的元数据在元数据记录文件中的位置从元数据映射表中获取。将元数据、数据在本地存储的位置信息、以及该扇区号上一次备份过程中所存储的元数据在元数据记录文件中的位置存放在元数据记录文件中,并使用存放的位置更新元数据映射表中该扇区号最近一次备份过程中所存储的元数据存放在元数据记录文件中的位置;
[0061]如图2所示,本步骤中将数据进行本地存储的过程包括以下子步骤:
[0062](4-1-1)打开记录当前备份数据文件信息的文件,其命名形式为ZtDP/storage/*/data_file.1nfo, *是代表该客户端的账号,里面记录了当前备份数据文件编号、当前备份数据文件总大小、剩余空间大小等。如果记录当前备份数据文件信息的文件为空文件,则进入步骤(4-1-2),否则进入步骤(4-1-3);
[0063](4-1-2)设置备份数据文件名起始标识为a,然后创建备份数据文件a.data,在数据文件位置表中记录a.data在本地,并更新记录当前备份数据文件信息的文件,设置当前备份数据文件编号为a,当前备份数据文件总大小和剩余空间大小都设置为文件规定的大小,比如4GB,转步骤(4-1-4);
[0064](4-1-3)读取文件中的信息,得到当前文件编号。转步骤(4-1-4);
[0065](4-1-4)判断当前备份数据文件没有超过了规定的大小,比如4GB,如果没有超过,则将数据写入到当前备份数据文件,并更新记录当前备份数据文件信息的文件,设置当前备份数据文件剩余空间大小;如果超过规定值,则生成新的备份数据文件,新的备份数据文件名在前一个备份数据文件名前提上加1,比如前一个备份数据文件名为a.data,则新的备份数据文件名为b.data,并将数据写入新的备份数据文件,然后更新记录当前备份数据文件信息的文件,设置当前备份数据文件编号、当前备份数据文件总大小、剩余空间大小等。最后返回数据写入当前备份数据文件的文件名及文件偏移,即数据在本地存储的位置信息。
[0066]如图3所示,本步骤中将元数据进行组织存储的过程具体包括以下子步骤:
[0067](4-2-1)根据元数据中的扇区号找到对应的元数据映射表中的位置。该扇区号对应的元数据映射表表项中记录着该扇区最近一次备份过程中所存储的元数据在元数据记录文件的位置以及该扇区备份过程中所存储的元数据日志链表的长度(日志链表指的是描述对该扇区I/O操作的元数据所形成的一个链表);并转入步骤(4-2-2);
[0068](4-2-2)获取该扇区号对应的元数据映射表表项的信息,并将该扇区号最近一次备份过程中所存储的元数据在元数据记录文件的位置写入新生成的元数据的最近一次备份过程元数据记录位置字段,并将元数据映射表中该扇区备份过程中所存储的元数据日志链表长度加I。将元数据、数据在本地存储的位置信息、以及该扇区号上一次备份过程中所存储的元数据在元数据记录文件中的位置写入元数据记录文件中并将返回的存储位置更新元数据映射表中该扇区最近一次备份过程中所存储的元数据在元数据记录文件中的位置;
[0069](5)根据恢复请求获取恢复数据的恢复时间点,根据恢复数据的恢复时间点检索所有扇区号的元数据、所有扇区号的数据在本地存储的位置信息、以及所有扇区号上一次备份过程中所存储的元数据,以形成恢复视图;如图4所示,本步骤包括以下子步骤:
[0070](5-1)遍历元数据映射表中的每一个元数据映射表项,元数据映射表项代表指定扇区最近一次备份过程中生成的元数据在元数据记录文件中的位置,并对元数据映射表项代表的扇区的元数据日志链进行回溯,找出小于恢复时间的最大时刻的元数据;并转入步骤(5-2);
[0071](5-2)提取元数据中的磁盘扇区号,数据长度和数据的存储位置信息形成磁盘的恢复视图。
[0072](6)读取磁盘分区镜像文件,并将该磁盘分区镜像文件写入恢复请求对应的恢复文件中;
[0073](7)顺序读取恢复视图中的记录,并根据数据大小、数据在本地存储的位置信息获取数据,并将该数据覆盖到恢复文件中以形成新的恢复文件;具体而言,根据恢复视图中记录的数据的扇区号确定数据应该被覆盖到恢复文件中的起始位置;
[0074]如图5所示,本步骤中获取数据的过程具体包括以下子步骤:
[0075](7-1)根据数据文件位置表查找存储文件是否在本地,是则进入步骤(7-2),否则进入步骤(7-3);
[0076](7-2)从云存储端下载相应文件。进入步骤(7-3);
[0077](7-3)解析数据在本地存储的位置信息和数据大小,读取数据。
[0078](8)利用open-1scsi协议读取新的恢复文件中的数据,并将读取的数据发回给客户端,并发送成功标识,然后转入步骤(I);
[0079](9)释放TCP连接,回收系统资源,同时将客户端占用的线程放入空闲线程池。
[0080]综上所述,本发明具有以下的优点:
[0081]1、能够解决现有方法中存在的恢复时间粒度大的技术问题:由于采用了有别于传统备份技术的连续数据保护技术,连续数据保护技术能够实时地对客户端发生的对磁盘的写操作数据进行捕获、重定向、并将写操作数据备份到缓存代理端。在备份过程中需要根据捕获的写操作数据创建时间戳、数据大小、写入的扇区号等元数据,并将元数据和数据一并发送给缓存代理端。缓存代理端采用步骤(4)将元数据和数据存放到缓存代理端,数据的存放过程采用步骤(4-1-1)、步骤(4-1-2)、步骤(4-1-3)和步骤(4_1_4),将数据存放到备份数据文件中,并获取数据存放的位置信息,数据存放的位置信息作为新的元数据的一个字段。元数据的存放过程采用步骤(4-2-1)和步骤(4-2-2),首先需根据元数据、数据存放的位置信息、该扇区号最近一次备份过程产生的元数据在元数据记录文件中的位置信息构建新的元数据,该扇区号最近一次备份过程产生的元数据在元数据记录文件中的位置信息通过查找元数据映射表来获取,并将新的元数据存放到元数据记录文件中,最后更新元数据映射表,使得该扇区最近一次备份过程产生的新的元数据的存储位置指向本次新的元数据存放位置。
[0082]2、本发明能够解决现有方法中存在的扩容和数据迀移成本高的技术问题:本发明基于云存储环境,由于采用了调度方法中的步骤(I)和步骤(2),能够动态地将备份数据迀移到云存储中,这样便可以节省存储数据的硬件开销;步骤(I)是根据磁盘空间的使用率以及每个客户端使用的磁盘空间量和每个客户端的备份数据增长率来决定是否触发迀移操作并决定迀移哪个客户端的数据,步骤(2)是迀移操作及备份数据文件的记录操作,备份文件的记录操作记录备份文件是在缓存代理端还是云存储端。
[0083]3、本发明能够解决现有方法中存在的数据恢复效率低的技术问题:本发明采用了元数据映射表这一部件,元数据映射表记录各扇区最近一次备份过程中所存储的元数据在元数据记录文件中的位置,通过元数据映射表和元数据记录文件中的记录可以跳跃式的找到所有扇区在恢复时间点的元数据,并生成恢复视图;恢复过程如步骤(5)、步骤(6)、步骤
(7)、步骤(8)所示,首先获取恢复时间点,并根据恢复时间点、元数据记录文件、元数据映射表得到恢复视图,然后根据恢复视图和数据文件位置表找到相应的数据,根据磁盘分区镜像文件生成恢复文件,覆盖恢复文件的相应部分;最后将恢复文件发送给客户端。
[0084]4、本发明的效率高,能够为用户提供7*24的数据备份服务,当故障发生时,丢失的数据极少,最大限度的保护了数据。
[0085]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于云存储环境的连续数据保护的缓存方法,其特征在于,包括以下步骤: (1)接收来自客户端的数据保护请求,并判断该数据保护请求是登陆请求,同步请求,恢复请求,备份请求,还是退出请求,如果是登陆请求则进入步骤(2),如果是同步请求则进入步骤(3),如果是备份请求则进入步骤(4),如果是恢复请求则进入步骤(5),如果是退出请求则进入步骤(9); (2)获取该客户端的IP地址,并根据该登录请求获取被保护磁盘分区,根据IP地址和被保护磁盘分区判断该客户端是否存在于用户列表文件中,如果存在,则向客户端返回该账号已存在的提示,然后返回步骤(I),如果不存在,分配一个唯一的账号给该客户端,将客户端的IP地址、磁盘分区号、分
配的账号记录在用户列表文件中,并根据该账号创建记录该客户端信息的元数据记录文件、元数据映射表和数据文件位置表。并向客户端反馈需要同步的提示,然后返回步骤(I); (3)根据该同步请求对应的同步数据生成对应的磁盘分区镜像文件,并发送生成完成的信息给客户端,然后返回步骤⑴; (4)接收备份请求对应的数据和元数据,将数据进行本地存储,获取数据在本地存储的位置信息、以及该扇区号最近一次备份过程中所存储的元数据在元数据记录文件中的位置,将元数据、数据在本地存储的位置信息、以及该扇区号上一次备份过程中所存储的元数据在元数据记录文件中的位置存放在元数据记录文件中,并使用存放的位置更新元数据映射表中该扇区号最近一次备份过程中所存储的元数据存放在元数据记录文件中的位置; (5)根据恢复请求获取恢复数据的恢复时间点,根据恢复数据的恢复时间点检索所有扇区号的元数据、所有扇区号的数据在本地存储的位置信息、以及所有扇区号上一次备份过程中所存储的元数据,以形成恢复视图; (6)读取磁盘分区镜像文件,并将该磁盘分区镜像文件写入恢复请求对应的恢复文件中; (7)顺序读取恢复视图中的记录,并根据数据大小、数据在本地存储的位置信息获取数据,并将该数据覆盖到恢复文件中以形成新的恢复文件; (8)利用open-1scsi协议读取新的恢复文件中的数据,并将读取的数据发回给客户端,并发送成功标识,然后返回步骤(I); (9)释放TCP连接,回收系统资源,同时将客户端占用的线程放入空闲线程池。2.根据权利要求1所述的缓存方法,其特征在于,步骤(I)中,通过读取数据保护请求的数据包头部的字段,如果该字段为0,则表示该请求是登录请求,如果为I则表示该请求是恢复请求,如果为2则表示该请求是备份请求,如果为3则表示该请求是同步请求,如果为4则表示该请求是退出请求。3.根据权利要求1所述的缓存方法,其特征在于,元数据包括时间戳、数据大小以及数据在磁盘中的扇区号。4.根据权利要求1所述的缓存方法,其特征在于,数据在本地存储的位置信息包括所存储的文件名以及文件偏移,扇区号最近一次备份过程中所存储的元数据在元数据记录文件中的位置从元数据映射表中获取。5.根据权利要求1所述的缓存方法,其特征在于,步骤(4)中将数据进行本地存储的过程包括以下子步骤: (4-1-1)打开记录当前备份数据文件信息的文件,里面记录了当前备份数据文件编号、当前备份数据文件总大小、剩余空间大小,如果记录当前备份数据文件信息的文件为空文件,则进入步骤(4-1-2),否则进入步骤(4-1-3); (4-1-2)设置备份数据文件名起始标识,然后创建备份数据文件,在数据文件位置表中记录该备份数据文件在本地,并更新记录当前备份数据文件信息的文件,设置当前备份数据文件编号,当前备份数据文件总大小和剩余空间大小都设置为文件规定的大小,转步骤(4-1-4); (4-1-3)读取文件中的信息,得到当前文件编号,转步骤(4-1-4); (4-1-4)判断当前备份数据文件没有超过了规定的大小,如果没有超过,则将数据写入到当前备份数据文件,并更新记录当前备份数据文件信息的文件,设置当前备份数据文件剩余空间大小;如果超过规定值,则生成新的备份数据文件,新的备份数据文件名在前一个备份数据文件名前提上加1,并将数据写入新的备份数据文件,然后更新记录当前备份数据文件信息的文件,设置当前备份数据文件编号、当前备份数据文件总大小、剩余空间大小等,最后返回数据写入当前备份数据文件的文件名及文件偏移。6.根据权利要求5所述的缓存方法,其特征在于,步骤(4)中将元数据进行组织存储的过程具体包括以下子步骤: (4-2-1)根据元数据中的扇区号找到对应的元数据映射表中的位置。该扇区号对应的元数据映射表表项中记录着该扇区最近一次备份过程中所存储的元数据在元数据记录文件的位置以及该扇区备份过程中所存储的元数据日志链表的长度,并转入步骤(4-2-2); (4-2-2)获取该扇区号对应的元数据映射表表项的信息,并将该扇区号最近一次备份过程中所存储的元数据在元数据记录文件的位置写入新生成的元数据的最近一次备份过程元数据记录位置字段,并将元数据映射表中该扇区备份过程中所存储的元数据日志链表长度加1,将元数据、数据在本地存储的位置信息、以及该扇区号上一次备份过程中所存储的元数据在元数据记录文件中的位置写入元数据记录文件中,并将返回的存储位置更新元数据映射表中该扇区最近一次备份过程中所存储的元数据在元数据记录文件中的位置。7.根据权利要求1所述的缓存方法,其特征在于,步骤(5)包括以下子步骤: (5-1)遍历元数据映射表中的每一个元数据映射表项,元数据映射表项代表指定扇区最近一次备份过程中生成的元数据在元数据记录文件中的位置,并对元数据映射表项代表的扇区的元数据日志链进行回溯,找出小于恢复时间的最大时刻的元数据,并转入步骤(5-2); (5-2)提取元数据中的磁盘扇区号,数据长度和数据的存储位置信息形成磁盘的恢复视图。8.根据权利要求1所述的缓存方法,其特征在于,步骤(7)中获取数据的过程具体包括以下子步骤: (7-1)根据数据文件位置表查找存储文件是否在本地,是则进入步骤(7-2),否则进入步骤(7-3); (7-2)从云存储端下载相应文件。进入步骤(7-3); (7-3)解析数据在本地存储的位置信息和数据大小,读取数据。9.一种基于云存储环境的连续数据保护的缓存系统,其特征在于,包括以下步骤: 第一模块,用于接收来自客户端的数据保护请求,并判断该数据保护请求是登陆请求,同步请求,恢复请求,备份请求,还是退出请求,如果是登陆请求则进入第二模块,如果是同步请求则进入第三模块,如果是备份请求则进入第四模块,如果是恢复请求则进入第五模块,如果是退出请求则进入第九模块; 第二模块,用于获取该客户端的IP地址,并根据该登录请求获取被保护磁盘分区,根据IP地址和被保护磁盘分区判断该客户端是否存在于用户列表文件中,如果存在,则向客户端返回该账号已存在的提示,然后返回第一模块,如果不存在,分配一个唯一的账号给该客户端,将客户端的IP地址、磁盘分区号、分配的账号记录在用户列表文件中,并根据该账号创建记录该客户端信息的元数据记录文件、元数据映射表和数据文件位置表。并向客户端反馈需要同步的提示,然后返回第一模块; 第三模块,用于根据该同步请求对应的同步数据生成对应的磁盘分区镜像文件,并发送生成完成的信息给客户端,然后返回第一模块; 第四模块,用于接收备份请求对应的数据和元数据,将数据进行本地存储,获取数据在本地存储的位置信息、以及该扇区号最近一次备份过程中所存储的元数据在元数据记录文件中的位置,将元数据、数据在本地存储的位置信息、以及该扇区号上一次备份过程中所存储的元数据在元数据记录文件中的位置存放在元数据记录文件中,并使用存放的位置更新元数据映射表中该扇区号最近一次备份过程中所存储的元数据存放在元数据记录文件中的位置; 第五模块,用于根据恢复请求获取恢复数据的恢复时间点,根据恢复数据的恢复时间点检索所有扇区号的元数据、所有扇区号的数据在本地存储的位置信息、以及所有扇区号上一次备份过程中所存储的元数据,以形成恢复视图; 第六模块,用于读取磁盘分区镜像文件,并将该磁盘分区镜像文件写入恢复请求对应的恢复文件中; 第七模块,用于顺序读取恢复视图中的记录,并根据数据大小、数据在本地存储的位置信息获取数据,并将该数据覆盖到恢复文件中以形成新的恢复文件; 第八模块,用于利用open-1scsi协议读取新的恢复文件中的数据,并将读取的数据发回给客户端,并发送成功标识,然后返回步骤(I); 第九模块,用于释放TCP连接,回收系统资源,同时将客户端占用的线程放入空闲线程池。
【专利摘要】本发明公开了一种基于云存储环境的连续数据保护的缓存代理端的设计方案,包括:缓存代理端将根据客户端的操作请求进行相关处理。如果是用户的登录请求,缓存代理端则会判断用户是否存在,如果用户不存在,则为该用户创建元数据记录文件、数据记录文件、时间记录文件和数据映射表,然后进行同步,创建被保护磁盘分区的初始镜像文件;如果存在,继续等待客户端的操作请求。如果是备份请求,缓存代理端则会构造对应的元数据并记录到对应的元数据日志链中,同时将数据写入数据记录文件。如果是恢复请求,缓存代理端则会完成对元数据的检索。本发明能够解决当前主流的备份技术恢复粒度大和传统的连续数据保护技术扩容和数据迁移成本较高的问题。
【IPC分类】G06F12/08, G06F11/14
【公开号】CN104899161
【申请号】CN201510320769
【发明人】周可, 李春花, 刘辉, 钟奕, 李宏伟
【申请人】华中科技大学
【公开日】2015年9月9日
【申请日】2015年6月12日