本发明涉及计算机系统及存储领域,具体涉及一种数据备份的方法及装置。
背景技术:
为了保证数据存取的持续性、可恢复性和高可用性,可用远程数据同步在远程维护一套或多套数据副本,一旦灾难发生,分布在异地存储系统上的备份数据并不会受到波及,从而实现容灾备份功能。远程镜像技术则是远程容灾方案中的关键技术之一,远程镜像按请求是否需要远程镜像站点的确认信息,又可分为同步远程镜像和异步远程镜像。
同步远程镜像是指通过远程镜像软件,将本地数据以完全同步的方式复制到异地,本地的每一个io均需等待远程复制的完成确认信息才能释放。异步远程镜像是先完成向本地存储系统的io操作,本地存储系统给主机返回写入完成响应信息,大多采用延迟复制的技术,即在确保本地数据完好无损后进行远程数据更新。
现有存储系统的异步镜像数据流程图如图1所示,当主站点的主卷和远端复制站点的从卷建立同步远程镜像关系以后,会启动一个初始同步,也就是将主卷数据全量拷贝到从卷;如果在初始同步时主卷收到生产主机写请求,若要写入位置的数据块已经拷贝,需要分别写入主卷和从卷。
同步镜像与异步镜像中分别写入主卷和从卷的流程相同如图1所示,步骤11、数据写入主机fifo(先进先出);步骤12、主机写io先写入板上内存memory,不写入高速缓冲存储器cache;步骤13、开始写到远端时,先将板上内存的数据拷贝至镜像专用缓冲器buffer;步骤14、镜像模块构造bio并发送到远端;步骤15,接口芯片将数据发送到数据链路并由远端fifo接收;步骤16,远端dma(directmemoryaccess,存储器直接访问)写入板上内存空间。
上述方法有影响镜像效率和系统性能的地方①是步骤13将数据从板上内存空间读取出来拷贝至镜像buffer空间,由于bio中的每一项必须要的structpage结构头,有一次主机scatterlist到bio页面的拷贝影响性能。②向对端发送数据之前必须先发消息到对端去申请写缓存空间,多了一次消息交互。③是在链路上发送数据时如果共享cache数据,要等对端全部接收完成后才能通知本端cache释放页面,持有cache页面时间较长,影响本地cache页面的使用效率。
技术实现要素:
:
本发明提供一种数据备份的方法及装置,以降低数据镜像备份过程的时延。
为解决上述技术问题,本发明提供一种数据备份的方法,应用于本端控制器,所述方法包括:
所述本端控制器在远端控制器申请预留内存;
当本端控制器将待写入数据写入主机的缓存时,并行的将所述待写入数据写入远端控制器的所述预留内存;
其中,所述远端控制器的个数为一个或多个。
可选地,所述方法还包括:
当接收到所述远端控制器返回的写完成响应时,所述本端控制器将其缓存中的待写入数据写入本端高速缓冲存储器cache。
可选地,所述方法还包括:
所述本端控制器和所述远端控制器相互注册并且映射内存。
可选地,
所述将所述待写入数据写入远端控制器的预留内存包括:
所述本端控制器将所述待写入数据以存储器直接访问dma方式写入所述预留页面。
本发明还提供一种数据备份的方法,应用于远端控制器,所述方法包括:
所述远端控制器为本端控制器分配预留内存;
通过所述预留内存接收所述本端控制器写入主机的所述待写入数据。
可选地,
所述通过所述预留内存接收所述本端控制器写入主机的所述待写入数据后还包括:
所述远端控制器将存储所述数据的页面置换到远端高速缓冲存储器cache后将所述待写入数据写入所述远端cache。
可选地,
所述远端控制器写入远端cache完成后,所述本端控制器将其缓存中的数据写入本端cache前,所述方法还包括:
所述远端控制器向所述本端控制器返回写完成响应,并更新其预留内存的映射状态。
可选地,所述方法还包括:
当所述远端控制器在预先设定的时间范围内未接收到所述本端控制器发送的待写入数据时,则所述远端控制器与所述本端控制器重新建立连接。
可选地,所述方法还包括:
当所述预留内存被使用后,在所述远端控制器的后台补充相应的预留内存。
本发明还提供一种数据备份的装置,设置于本端控制器,所述装置包括:
配置模块,用于在远端控制器申请预留内存;
第一处理模块,用于将待写入数据写入主机的缓存时,并行的将所述待写入数据写入远端控制器的所述预留内存;
其中,所述远端控制器的个数为一个或多个。
可选地,所述装置还包括:
第二处理模块,用于当接收到所述远端控制器返回的写完成响应时,将其缓存中的待写入数据写入本端高速缓冲存储器cache。
可选地,
所述配置模块还用于和所述远端控制器相互注册并且映射内存。
可选地,
所述处理模块用于将所述待写入数据写入远端控制器的预留内存具体是指:
将所述待写入数据以存储器直接访问dma方式写入所述预留页面。
本发明还提供一种数据备份的装置,设置于远端控制器,所述装置包括:
配置模块,用于为本端控制器分配预留内存;
第一处理模块,用于通过所述预留内存接收所述本端控制器写入主机的所述待写入数据。
可选地,所述装置还包括:
第二处理模块,用于将存储所述数据的页面置换到远端高速缓冲存储器cache后将所述待写入数据写入所述远端cache。
可选地,所述装置还包括:
第三处理模块,用于所述远端控制器向所述本端控制器返回写完成响应,并更新其预留内存的映射状态。
可选地,所述装置还包括:
连接模块,用于在预先设定的时间范围内未接收到所述本端控制器发送的待写入数据时,则与所述本端控制器重新建立连接。
可选地,
所述配置模块还用于当所述预留内存被使用后,在后台补充相应的预留内存。
上述方案在将数据写入本端缓存的同时,将该数据发送到另外一个或多个远端控制器的缓存中,此过程中不需进行数据拷贝,也不需要在写向远端之前串行申请缓存,降低了数据镜像备份过程的时延。
附图说明
图1为实施例一中的现有存储系统的异步镜像数据流程图;
图2为实施例一中的数据备份的流程图;
图3为实施例一中的数据备份的另一流程图;
图4为实施例一中的数据备份的另一流程图;
图5为实施例二中的数据备份的示意图;
图6为实施例二中的内存分配的示意图;
图7为实施例二中的数据备份另一示意图;
图8为实施例二中的cache页面置换的示意图;
图9为实施例三中的数据备份的装置的结构示意图;
图10为实施例三中的数据备份的装置的另一结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例一
如图2所示,本实施例提供一种数据备份的方法,应用于本端控制器,所述方法包括:
步骤s11:本端控制器在远端控制器申请预留内存;
在本实施例中,远端控制器的个数可以为一个或多个。
步骤s12:当本端控制器将待写入数据写入主机的缓存时,并行的将所述待写入数据写入远端控制器的预留内存;
具体的,在本实施例中,本端控制器将待写入数据以存储器直接访问dma方式写入所述预留页面。
可选地,还包括:
步骤s13:当接收到远端控制器返回的写完成响应时,本端控制器将其缓存中的待写入数据写入本端高速缓冲存储器cache。
可选地,还包括:
步骤s10:本端控制器和远端控制器相互注册并且映射内存。
如图3所示,本实施例还提供一种数据备份的方法,应用于远端控制器,所述方法包括:
步骤s21:远端控制器为本端控制器分配预留内存;
步骤s22:通过预留内存接收本端控制器写入主机的待写入数据。
可选地,还包括:
步骤s23:远端控制器将存储数据的页面置换到远端高速缓冲存储器cache后将待写入数据写入所述远端cache。
可选地,远端控制器写入远端cache完成后,本端控制器将其缓存中的数据写入本端cache前,还包括:
步骤s24:所述远端控制器向所述本端控制器返回写完成响应,并更新其预留内存的映射状态。
还包括:
步骤s25:当远端控制器在预先设定的时间范围内未接收到本端控制器发送的待写入数据时,则所述远端控制器与所述本端控制器重新建立连接。
步骤s26:当预留内存被使用后,在远端控制器的后台补充相应的预留内存。
需要说明的是,步骤s25和s26的执行顺序不做具体限定,可以因具体情况不需要执行,也可以根据实际情况的执行顺序而定。
如图4所示,本端控制器与远端控制器可以按照以下方式进行进行数据备份:
步骤s30:本端控制器和远端控制器相互注册并且映射内存;
步骤s31:本端控制器在远端控制器申请预留内存;
步骤s32:当本端控制器将待写入数据写入主机的缓存时,并行的将所述待写入数据写入远端控制器的预留内存;
步骤s33:当预留内存被使用后,在远端控制器的后台补充相应的预留内 存;
步骤s34:远端控制器将存储数据的页面置换到远端高速缓冲存储器cache后将待写入数据写入所述远端cache;
步骤s35:远端控制器向本端控制器返回写完成响应,并更新其预留内存的映射状态;
步骤s36:当接收到远端控制器返回的写完成响应后,本端控制器将其缓存中的待写入数据写入本端高速缓冲存储器cache。
实施例二
下面结合附图进一步说明对本发明的技术方案:
如图5所示,同时写入主卷和从卷流程如下:
两端控制器交互,分配到对端的缓存。
步骤41:本端和远端相互注册并且映射内存。
本端和远端相互注册并且映射内存后,可以使得本端访问对端内存如同普通内存一样。
如图6所示,本端与远端交互,分配对端的缓存,本端为对端设置页面缓存池,缓存池根据使用情况会自动补充页面进来,当本端给对端发送数据时,直接在远端预留缓存池中申请页面用于芯片将数据从fifo中dma到数据页面中。
步骤42:主机开始写数据。
步骤43:在本实施例中,本端控制器和远端控制配置过芯片dma,该芯片本身支持dma功能,例如fibrechannel芯片,该芯片可以直接将数据dma写入本地缓存,这是一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过cpu,也不需要cpu干预。
步骤44:将数据dma写入远端缓存,由远端接收并写入预留缓存。
步骤45:远端将预留缓存中的页面置换到cache。
步骤46:远端镜像给本端返回写完成响应。
步骤47:本端收到响应之后将本端缓存中的数据写入cache。本端写完之后,向主机返回响应。
步骤48:本端和远端还可以监控整个镜像网络的数据时延,有效的管理整个镜像网络。其中,与远端的操作交互都通过端口1,要求磁阵端口1同时支持启动器和目标器模式。
需要说明的是,在本实施例中,主机下发写请求,本端分配到写缓存之后响应主机,主机开始写入数据,芯片接收到fifo中之后dma到已经分配好的写缓存之中,然后通过芯片队列中的条目来控制,条目中的每一项都指向一个待接收数据缓存,组织好条目数据后,通知芯片更新队列发送xfer_rdy,芯片会自动按照协议要求接收数据。改造驱动软件的实现,给芯片配置二个或多个目的地址,让芯片将数据同时写入配置好的地址中。
如图7所示,图7(a)是现有技术的实现方式:比如主机要写数据abcd到本地并且镜像到远端,本端先申请好缓存之后响应主机,主机写a,b,c,d数据下来步骤11,12。数据全部写入本地之后过程1完成,开始过程2,从本地缓存中读出a,b,c,d数据写入远端步骤21,22;过程1和过程2是串行的过程,主机请求完成的时延如时间轴所示。
而图7(b)中,通过本发明的技术方案改造后,本端先申请好缓存之后响应主机,主机写a,b,c,d数据同时写远端步骤11,21,12,22,这样整个过程是并行的,有效缩短整个请求的时延。
此外,如图8所示,远端将预留缓存中的页面置换到cache,即将预留缓存中的数据写入cache时,不需要进行页面拷贝,而是进行页面置换。
步骤①本端在预留缓存1,2,3块写入数据之后给对端发送数据,远端收到之后开始与cache页面池置换;
步骤②将cache页面池中的11,12,13装入预分配内存池,将数据块1,2,3写入cache区;
步骤③远端在给本端的响应时更新预留缓存的映射情况。
对于像iscsi这种有拷贝不支持芯片dma的接口类型,在不加装硬件模块的情况下,向对端发送数据之前不需要先发消息到对端去申请写缓存空间,少了一次消息交互;如果增加提升性能的硬件装置,本装置可以为fpga芯片或者asic芯片,在将数据写入本端控制器的缓存中的同时,也可以通过链路数据通道将该数据镜像到另外一个或多个控制器的缓存中与上面描述相同。
实施例三
如图9所示,本实施例还提供一种数据备份的装置,设置于本端控制器,装置包括:
配置模块11,用于在远端控制器申请预留内存;
第一处理模块12,用于将待写入数据写入主机的缓存时,并行的将所述待写入数据写入远端控制器的所述预留内存;
其中,所述远端控制器的个数为一个或多个。
可选地,所述装置还包括:
第二处理模块13,用于当接收到所述远端控制器返回的写完成响应时,将其缓存中的待写入数据写入本端高速缓冲存储器cache。
所述配置模块还用于和所述远端控制器相互注册并且映射内存。
可选地,所述第一处理模块12用于将所述待写入数据写入远端控制器的预留内存具体是指:
将所述待写入数据以存储器直接访问dma方式写入所述预留页面。
如图10所示,本实施例还提供一种数据备份的装置,设置于远端控制器,所述装置包括:
配置模块21,用于为本端控制器分配预留内存;
第一处理模块22,用于通过所述预留内存接收所述本端控制器写入主机的所述待写入数据。
可选地,所述装置还包括:
第二处理模块23,用于将存储所述数据的页面置换到远端高速缓冲存储器cache后将所述待写入数据写入所述远端cache。
可选地,所述装置还包括:
第三处理模块24,用于所述远端控制器向所述本端控制器返回写完成响应,并更新其预留内存的映射状态。
可选地,所述装置还包括:
连接模块25,用于在预先设定的时间范围内未接收到所述本端控制器发送的待写入数据时,则与所述本端控制器重新建立连接。
可选地,
所述配置模块21还用于当所述预留内存被使用后,在后台补充相应的预留内存。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/模块可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。