CN105138417B - 一种基于zfs send的异步复制方法 - Google Patents
一种基于zfs send的异步复制方法 Download PDFInfo
- Publication number
- CN105138417B CN105138417B CN201510405509.9A CN201510405509A CN105138417B CN 105138417 B CN105138417 B CN 105138417B CN 201510405509 A CN201510405509 A CN 201510405509A CN 105138417 B CN105138417 B CN 105138417B
- Authority
- CN
- China
- Prior art keywords
- threads
- sets
- breakpoint
- cache
- file
- 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.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于zfs send的异步复制方法,包括:1)执行复制功能,客户端启动;2)本地存储系统与远端备份系统交换初始化消息;3)客户端发送断点文件,具体为:客户端创建线程组:读线程组,用于读取快照内容并保存到高速缓存中;写线程组,用于将保存至高速缓存的快照内容生成断点文件写入低速磁盘中,判断占用的高速缓存是否达到最大值;发送线程组,用于将高速缓存中的断点文件通过网络接口发送给服务端;各线程组间通过消息驱动,本线程完成当前阶段的工作后,将消息转到下一个线程继续处理;4)服务端接收断点文件,并返回复制结果。与现有技术相比,本发明具有有效保证数据一致性、备份效率高等优点。
Description
技术领域
本发明涉及存储系统技术领域,尤其是涉及一种基于zfs send的异步复制方法,是备份容灾系统中的核心技术。
背景技术
过去数年间,随着各行各业数字化进程的推进,数据的重要性也越来越明显。在一些事件中,很多公司就是因为没有容灾系统,导致数据全部毁于一旦。客户数据丢失,受损的不仅仅是公司,还有客户。本地备份对人为操作失误、单台机器故障所造成的数据破坏和丢失是有效的。但对火灾、地震等所造成的系统和数据破坏就显得无能为力了。如果要充分保障系统和数据的安全,只是在本地将数据进行备份还远远不够,还必须在远程地点建立另外一个系统,并包含当前生产系统的全部数据备份,这就需要使用远程复制技术。
远程复制技术是应用于数据远程容灾的关键技术,它通过在远程异地对重要的数据保留一份或多份副本,使得在灾难发生时降低对数据的破坏程序,同时在较短的时间内恢复业务运行。远程复制技术有以下几个核心因素需要考虑:
1、实现层次
主要有应用层、操作系统层和存储层。应用层的数据复制是指由应用软件来实现数据的远程复制。这种方式,需要对现有应用软件进行升级,增加应用软件的复杂性,对整个业务系统的性能造成较大的影响。
操作系统的数据复制是通过操作系统的逻辑卷管理层来实现的远程复制。它以存储的逻辑数据块为单位进行,当本地生产中心某个逻辑卷中的数据块被更新时,需要把这个更新操作复制到远程容灾中心所对应的逻辑卷中。这种方式会占用主机系统的资源,影响主机上应用软件的运行效率。
存储设备的数据复制是指将复制功能实现在存储这一层,以卷或文件系统为单位。此种方式不占用主机资源,同时对操作系统和应用透明,大大降低上层软件设计的复杂程序。本文描述的复制即实现在这一层。
2、同步方式
主要有同步复制和异步复制二种方式。同步数据复制是指本地生产系统中的每一个IO均需写入到远端备份系统中才算完成;异步数据复制是指本地生产系统中的IO均正常执行,无须等待远程复制的完成,本地生产数据将在稍后的某个时刻被发送到远端备份系统中。
这二种方式各有优缺点。同步复制实时性强,灾难发生时本地数据与远端数据完全一致,不会有数据不一致的情况。但此种方式受带宽影响很大,数据传输距离较短。一旦两个站点之间的网络出现拥塞、故障,则会导致业务系统不可用。
异步复制方式由于写本地数据与将数据发送到远端备份不在同一时刻进行,从而不影响主机对业务的响应速度,但是牺牲了本地和远端数据的严格一致性。一旦本地系统挂掉,会存在部分数据丢失。
3、数据一致性
数据一致性是指关联数据之间的逻辑关系是否正常和完整。在异步复制过程中,会出现这样一种情况,即先后发生的两个有逻辑关联性的时间,在被复制到远端备份站点之后,远端备份系统可能只保存了后来发生的事件,而先发生的事件却没有了,或者先保存了后来发生的事件,后保存了先发生的事件。这就是数据不一致了,若本地生产系统挂掉,远端备份系统接管运行,业务系统就会在这份错误的数据上运行,造成严重的后果。因此,如何保证远端备份系统的数据一致性是异步复制需要考虑的一个问题。
快照是对指定数据集的一个完全可用拷贝,该拷贝包括相应数据在某个时间点的映射。基于这个特性,可以在源对象上做快照,然后将这份快照对应的全部数据块复制到远程站点,这样远端备份系统就可以得到一个完全可用的关于生产系统的备份。然后每隔一段固定的时间,重复上述过程,即可将新的数据从生产系统备份到远端系统中,同时保证远端的数据是可用的。
这种做法,不仅仅可以充分利用现有快照功能,还能够比较简单的实现复制功能。
4、复制周期
采用异步复制技术,本地生产系统的数据和远端备份系统的数据会不严格一致。若生产系统挂掉,则会造成部分数据丢失。数据丢失的多少,取决于复制的频率,即周期。为减小数据丢失,则必须更频繁地进行异步复制操作。没有一个统一的原则来表明什么样的频繁合适,需要根据企业能承受多少数据损失来确定。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于zfs send的异步复制方法,基于zfs send命令在存储层实现远程复制功能,不占用主机资源、对操作系统和主机应用透明,提供极强的可扩展性,便于添加特定业务环镜中需要的额外特性,或者减少不需要的特性。
本发明的目的可以通过以下技术方案来实现:
一种基于zfs send的异步复制方法,该方法由设置于本地存储系统中的客户端和设置于远端备份系统中的服务端实现,包括以下步骤:
1)执行复制功能,客户端启动;
2)本地存储系统与远端备份系统交换初始化消息;
3)客户端发送断点文件,具体为:
客户端创建线程组:
读线程组,用于读取快照内容并保存到高速缓存中,读取完成后发消息通知写线程组;
写线程组,用于将保存至高速缓存的快照内容生成断点文件,判断占用的高速缓存是否达到最大值,若是,则将生成的断点文件写入低速磁盘中,当后续写线程检测高速缓存有空闲空间时再将该文件读入高速缓存;若否,则直接发消息通知发送线程组或将低速磁盘中的断点文件读入高速缓存中后再发消息通知发送线程组;
发送线程组,用于将高速缓存中的断点文件通过网络接口发送给服务端;
各线程组间通过消息驱动,本线程完成当前阶段的工作后,将消息转到下一个线程继续处理;
4)服务端接收断点文件,并返回复制结果。
所述步骤2)中,交换的初始化消息包括待复制的卷或文件系统名字、待复制的卷或文件系统的数据大小、本次复制的特征以及是否从上次被中断的地方开始续传。
所述步骤4)中,服务端接收断点文件的过程中创建:
接收线程组,用于将接收到的所有断点文件重新组合,在远端备份系统中生成快照。
所述步骤4)中,服务端接收断点文件的过程中创建:
查询线程,用于将复制结果反馈给客户端。
所述客户端发送断点文件和服务端接收断点文件的过程中还创建:
加密线程组,用于对每个断点文件进行加密或解密。
所述客户端发送断点文件和服务端接收断点文件的过程中还创建:
压缩线程组,用于对每个断点文件进行压缩或解压。
与现有技术相比,本发明具有以下有益效果:
1、实现复制功能,在满足不占用主机资源、同时对操作系统和应用透明、不影响存储对业务的响应速度的前提下,将本地生产站点的数据备份到远端站点。同时,保证了远端备份站点上的数据一致性,在本地生产系统挂掉的情况下,能够真正的将业务接管过去。再次,每隔一段时间或待复制对象新增数据达到指定阀值的时候,自动触发一次新的复制,将新增的数据复制到远端备份站点。
2、高性能,在千兆组网环镜下,复制速率可以达到108MB/s,万兆组网环镜下,复制速率可以达到400MB/s。
3、提供断点续传特性。通过本发明方法,改进了zfs send中断后就必须重新传送全部数据的缺点。当由于某些因素(比如生产系统异常断电、网络中断等)而导致复制过程被迫中断时,已经传递到远端备份站点的数据无须再次传递,只需要从中断的地方开始传递。这可以大大节省客户时间,提高备份效率。
4、提供加密特性,保证数据在网络上传输的安全性。支持以下加密算法:DES算法、使用两个密钥的3DES算法、使用三个密钥的3DES算法、DESX算法、RC2算法、RC4算法、RC5算法、IDEA算法、AES算法、Blowfish算法。
5、通过压缩特性,减少重复数据传输,进一步提高数据传输效率。支持以下压缩算法:Gzip、Bzip2、LZMA、XZ、LZ4、LZO算法。
6、可扩展,各线程的功能相互独立,并且使用消息进行驱动。通过此种方式,使得各线程之间不相互依赖。若要增加某个新的特性,只需要将实现该特性的线程的消息队列注册到现有的消息链中即可;若要去掉某个特性,则只需要将实现该特性的线程的消息队列从消息链中移除即可。
7、本发明在复制占用的高速缓存达到一定量或比例时,将读取的快照内容临时写到低速磁盘中,避免当读取的快照数据量很大时占用过多高速缓存而影响到系统稳定性。
8、本发明通过快照的断点处理及断点文件的重新组合,将快照全部复制到远程备份终端,保证了数据的一致性。
附图说明
图1为本发明客户端的流程示意图;
图2为本发明服务端的流程示意图;
图3为本发明的复制过程交互示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例1
本实施例提供一种基于zfs send的异步复制方法,该方法由设置于本地存储系统中的客户端(copy client)和设置于远端备份系统中的服务端(copy server)实现,服务端常驻系统中,监听客户端的连接,客户端只有在用户执行复制功能的时候才会被执行。
如图1-图3所示,上述异步复制方法具体包括以下步骤:
1)执行复制功能,客户端启动。复制功能通过用户或调度线程下发复制命令到本地存储系统启动。调度线程下发复制命令具体为:每隔一段时间或待复制对象新增数据达到指定阀值的时候,自动触发一次新的复制。
2)本地存储系统与远端备份系统交换初始化消息,包括待复制的卷或文件系统名字、待复制的卷或文件系统的数据大小、本次复制的特征(比如是否支持加密、压缩)以及是否从上次被中断的地方开始续传等。
3)客户端发送断点文件,具体为:
客户端创建线程组:
读线程组(reader),用于读取快照内容并保存到高速缓存中,读取完成后发消息通知写线程组;
写线程组(writer),用于将保存至高速缓存的快照内容生成断点文件。判断占用的高速缓存是否达到最大值,若是,则将生成的断点文件写入低速磁盘中,当后续写线程检测高速缓存有空闲空间时再将该文件读入高速缓存;若否,则直接发消息通知发送线程组或将低速磁盘中的断点文件读入高速缓存中后再发消息通知发送线程组;
发送线程组(sender),用于将高速缓存中的断点文件通过网络接口发送给服务端。
4)服务端接收断点文件,并返回复制结果,当数据已正确复制到远端站点后,释放本次复制占用的资源并退出,结束本次复制操作。
服务端接收断点文件的过程中也创建与客户端中读线程组、写线程组功能相同的线程组用于获取断点文件,同时还创建:接收线程组(receiver),用于将接收到的所有断点文件重新组合,在远端备份系统中生成快照;查询线程(query),用于将复制结果反馈给客户端。
在客户端发送断点文件和服务端接收断点文件的过程中还分别创建:加密线程组,用于对每个断点文件进行加密或解密;压缩线程组,用于对每个断点文件进行压缩或解压。
各线程组间通过消息驱动,本线程完成当前阶段的工作后,将消息转到下一个线程继续处理。这样设计大大提高了程序的可扩展性。只要将消息不送往某个线程的消息队列中,即可屏蔽该特性,反之亦然。消息只传递元数据,快照数据一直保存在高速缓存中以便加快处理速度。
实施例2
本实施例提供的基于zfs send的异步复制方法中不包含加密、压缩等特性,参考图1-图3所示,具体复制过程如下:
1.用户或调度线程下发复制命令到本地存储系统中,本地存储系统会拉起复制客户端进程。
2.本地存储系统首先会与远端备份系统交换初始化消息,消息主要包含有以下内容:待复制的卷或文件系统名字、待复制的卷或文件系统的数据大小、是否从上次被中断的地方开始续传等。
3.本地复制进程创建三组线程:发送线程组,用于向远端站点发送快照断点文件;读线程,用于从磁盘中读取快照内容;写线程组,用于生成断点文件,同时将断点文件写入磁盘或从磁盘中读出。
4.创建各线程组后,主线程就睡眠等待各线程完成工作。
5.读线程每读入一个断点文件大小的快照数据到高速缓存中,就发送一个消息通知写线程处理,然后继续读入下一个断点文件的快照数据到高速缓存中。
6.写线程接收到读线程发过来的消息后,先判断占用的高速缓存是否已达到最大值,是则将该断点文件写入磁盘,待后续高速缓存有空闲空间时再将该文件读入高速缓存进行处理,否则直接发消息通知发送线程将此文件传送到远端站点。
7.发送线程在接收到写线程发送的消息后,通过网络接口将该断点文件发送给远端站点。
8.当主线程监测到所有线程都退出后,就会向远端站点询问本次复制的结果。
9.当数据已正确复制到远端站点后,就释放本次复制占用的资源并退出,结束本次复制操作。
Claims (6)
1.一种基于zfs send的异步复制方法,其特征在于,该方法由设置于本地存储系统中的客户端和设置于远端备份系统中的服务端实现,包括以下步骤:
1)执行复制功能,客户端启动;
2)本地存储系统与远端备份系统交换初始化消息;
3)客户端发送断点文件,具体为:
客户端创建线程组:
读线程组,用于读取快照内容并保存到高速缓存中,读取完成后发消息通知写线程组;
写线程组,用于将保存至高速缓存的快照内容生成断点文件,判断占用的高速缓存是否达到最大值,若是,则将生成的断点文件写入低速磁盘中,当后续写线程检测高速缓存有空闲空间时再将该文件读入高速缓存;若否,则直接发消息通知发送线程组或将低速磁盘中的断点文件读入高速缓存中后再发消息通知发送线程组;
发送线程组,用于将高速缓存中的断点文件通过网络接口发送给服务端;
各线程组间通过消息驱动,本线程完成当前阶段的工作后,将消息转到下一个线程继续处理;
4)服务端接收断点文件,并返回复制结果;
上述方法中,每隔一段时间或待复制对象新增数据达到指定阀值的时候,自动触发一次新的复制,将新增的数据复制到远端备份站点。
2.根据权利要求1所述的基于zfs send的异步复制方法,其特征在于,所述步骤2)中,交换的初始化消息包括待复制的卷或文件系统名字、待复制的卷或文件系统的数据大小、本次复制的特征以及是否从上次被中断的地方开始续传。
3.根据权利要求1所述的基于zfs send的异步复制方法,其特征在于,所述步骤4)中,服务端接收断点文件的过程中创建:
接收线程组,用于将接收到的所有断点文件重新组合,在远端备份系统中生成快照。
4.根据权利要求1所述的基于zfs send的异步复制方法,其特征在于,所述步骤4)中,服务端接收断点文件的过程中创建:
查询线程,用于将复制结果反馈给客户端。
5.根据权利要求1所述的基于zfs send的异步复制方法,其特征在于,所述客户端发送断点文件和服务端接收断点文件的过程中还创建:
加密线程组,用于对每个断点文件进行加密或解密。
6.根据权利要求1所述的基于zfs send的异步复制方法,其特征在于,所述客户端发送断点文件和服务端接收断点文件的过程中还创建:
压缩线程组,用于对每个断点文件进行压缩或解压。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510405509.9A CN105138417B (zh) | 2015-07-10 | 2015-07-10 | 一种基于zfs send的异步复制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510405509.9A CN105138417B (zh) | 2015-07-10 | 2015-07-10 | 一种基于zfs send的异步复制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138417A CN105138417A (zh) | 2015-12-09 |
CN105138417B true CN105138417B (zh) | 2018-07-20 |
Family
ID=54723773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510405509.9A Expired - Fee Related CN105138417B (zh) | 2015-07-10 | 2015-07-10 | 一种基于zfs send的异步复制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105138417B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733514B (zh) * | 2018-05-24 | 2022-07-08 | 郑州云海信息技术有限公司 | 一种异构存储间快照实现的方法、系统及设备 |
CN110109781A (zh) * | 2019-07-02 | 2019-08-09 | 南京云信达科技有限公司 | 一种用于s3云服务的数据备份方法 |
CN115174596B (zh) * | 2022-07-27 | 2024-10-18 | 济南浪潮数据技术有限公司 | 一种设备远程复制方法、装置以及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102801754A (zh) * | 2011-05-24 | 2012-11-28 | 英业达集团(天津)电子技术有限公司 | 一种断点续传的方法及系统 |
CN103164295A (zh) * | 2013-03-22 | 2013-06-19 | 危子彪 | 基于zfs文件系统和kvm内核虚拟底层系统的企业it业务虚拟化容灾方法 |
CN103875229A (zh) * | 2013-12-02 | 2014-06-18 | 华为技术有限公司 | 异步复制方法、装置与系统 |
CN104484242A (zh) * | 2014-12-10 | 2015-04-01 | 上海爱数软件有限公司 | 一种写时拷贝快照备份过程中可断点传输的方法 |
CN104503865A (zh) * | 2014-12-10 | 2015-04-08 | 杭州斯凯网络科技有限公司 | PostgreSQL快速恢复到任意时间点的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424314B2 (en) * | 2012-10-19 | 2016-08-23 | Oracle International Corporation | Method and apparatus for joining read requests |
-
2015
- 2015-07-10 CN CN201510405509.9A patent/CN105138417B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102801754A (zh) * | 2011-05-24 | 2012-11-28 | 英业达集团(天津)电子技术有限公司 | 一种断点续传的方法及系统 |
CN103164295A (zh) * | 2013-03-22 | 2013-06-19 | 危子彪 | 基于zfs文件系统和kvm内核虚拟底层系统的企业it业务虚拟化容灾方法 |
CN103875229A (zh) * | 2013-12-02 | 2014-06-18 | 华为技术有限公司 | 异步复制方法、装置与系统 |
CN104484242A (zh) * | 2014-12-10 | 2015-04-01 | 上海爱数软件有限公司 | 一种写时拷贝快照备份过程中可断点传输的方法 |
CN104503865A (zh) * | 2014-12-10 | 2015-04-08 | 杭州斯凯网络科技有限公司 | PostgreSQL快速恢复到任意时间点的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105138417A (zh) | 2015-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10127117B2 (en) | Online backup to an object service using bulk export | |
US7844787B2 (en) | Techniques for data replication with snapshot capabilities | |
JP4699091B2 (ja) | ディザスタリカバリ方法およびシステム | |
JP4668763B2 (ja) | ストレージ装置のリストア方法及びストレージ装置 | |
US7694177B2 (en) | Method and system for resynchronizing data between a primary and mirror data storage system | |
US20200341862A1 (en) | Data backup method and apparatus | |
US10831741B2 (en) | Log-shipping data replication with early log record fetching | |
CN103116615B (zh) | 一种基于版本矢量的数据索引方法及服务器 | |
CN110109778A (zh) | 一种大量小数据文件备份方法及恢复方法 | |
CN102708158B (zh) | 一种PostgreSQL云存储归档调度系统 | |
CN102866935B (zh) | 基于iscsi的即时复制方法和存储系统 | |
WO2014101409A1 (zh) | 一种数据备份方法及相关设备、系统 | |
CN102014152A (zh) | 一种远程复制系统及其方法 | |
CN105138417B (zh) | 一种基于zfs send的异步复制方法 | |
US8190947B1 (en) | Method and system for automatically constructing a replica catalog for maintaining protection relationship information between primary and secondary storage objects in a network storage system | |
CN103118104A (zh) | 一种基于版本矢量的数据还原方法及服务器 | |
WO2015067073A1 (zh) | 一种数据操作的方法和设备 | |
CN101771548A (zh) | 文件同步方法及系统 | |
WO2024103594A1 (zh) | 容器容灾方法、系统、装置、设备及计算机可读存储介质 | |
CN107135097A (zh) | 基于簿记建档的容灾系统及容灾方法 | |
CN110417892B (zh) | 基于报文解析的数据复制链路优化方法及装置 | |
CN103384266A (zh) | 一种基于文件级实时同步的Parastor200管理节点高可用方法 | |
US20070055834A1 (en) | Performance improvement for block span replication | |
CN114518973B (zh) | 分布式集群节点宕机重启恢复方法 | |
CN103605616A (zh) | 一种多控制器间的缓存数据一致性保障方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 201112 Shanghai, Minhang District, United Airlines route 1188, building second layer A-1 unit 8 Applicant after: SHANGHAI EISOO INFORMATION TECHNOLOGY CO., LTD. Address before: 201112 Shanghai, Minhang District, United Airlines route 1188, building second layer A-1 unit 8 Applicant before: Shanghai Eisoo Software Co.,Ltd. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180720 Termination date: 20190710 |