数据复制方法和存储控制器及系统与流程

文档序号:11780424阅读:223来源:国知局
数据复制方法和存储控制器及系统与流程
本发明实施例涉及计算机技术,尤其涉及一种数据复制方法和存储控制器及系统。

背景技术:
基于存储设备的复制方案是一种存储设备之间的数据复制方案,主要用于容灾,数据迁移和数据备份以及基于用户目的的数据远程传输。发送数据的一端可以称为:生产中心,接收数据的一端称为:灾备中心或容灾中心。基于存储设备的复制方案适用于从单个存储设备向其它节点发送数据,尤其适用于从集群存储系统向其它节点发送数据。当到达一个时间点时,接收端的数据与发送端的数据相同,那么视为接收端和发送端的数据保持一致。基于缓存周期的复制方案是基于存储设备的一种复制方案,其流程如下:主机发送写输入输出(Input/Output,以下简称I/O)到存储设备A,存储设备A中开辟缓存空间接收写I/O,该缓存空间接收写I/O的时间称为接收子周期。在接收子周期内,所有访问地址相同的写I/O被合并到最后一次接收到的写I/O。当接收子周期结束后,进入发送子周期。发送子周期为发送用于接收子周期接收到写I/O数据的周期。一个接收子周期和一个发送子周期,组成了一个完整向存储设备B复制数据的缓存周期。为了使存储设备B中数据与存储数据A中数据保持一致性,在发送子周期内存储设备A不再接收主机下发的写I/O,而是直接丢弃主机下发的写I/O,导致写I/O阻塞,只向存储设备B复制在接收子周期接收到的写I/O。只有发送子周期结束后,也就是在接收子周期接收到的写I/O发送完毕后,才进入下一个接收子周期,继续接收主机下发的写I/O。为了提高数据一致性的粒度,可以尽可能地缩短接收子周期,这样发送子周期也会缩短,但是写I/O阻塞的概率还是比较高。

技术实现要素:
本发明实施例提供一种数据复制方法和存储控制器及系统,可以降低写I/O发生阻塞的概率。第一方面,本发明实施例提供一种数据复制方法,包括:标签控制器接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期;若当前不存在已启动的接收子周期,所述标签控制器启动当前生成的标签对应的接收子周期,并根据所述接收子周期对应的标签标识所述写I/O数据;若当前存在已启动的接收子周期,所述标签控制器根据所述接收子周期对应的标签标识所述写I/O数据;在所述接收子周期结束时,所述标签控制器将所述接收子周期对应的标签标识的所述写I/O数据复制到目的端。结合第一方面,在第一种可能的实现方式中,还包括:所述标签控制器在标签生成时间点到达时生成标签,不同的标签生成时间点生成的标签不相同。结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能实现方式中,还包括:所述标签控制器向集群存储系统中各非标签控制器广播包括所述标签的标签启动消息。第二方面,本发明实施例还提供一种数据复制方法,包括:非标签控制器接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期;若当前不存在已启动的接收子周期,所述非标签控制器启动当前接收的标签对应的接收子周期,并根据所述接收子周期对应的标签标识所述写I/O数据;若当前存在已启动的接收子周期,所述非标签控制器根据所述接收子周期对应的标签标识所述写I/O数据;在所述接收子周期结束时,所述非标签控制器将所述接收子周期对应的标签标识的所述写I/O数据复制到目的端。结合第二方面,在第一种可能的实现方式中,所述非标签控制器接收集群存储系统中标签控制器广播的标签启动消息,所述标签启动消息包括所述标签,并且不同的标签生成时间点所述标签控制器广播的标签不相同。结合第二方面,或第二方面的第一种可能实现方式,在第二种可能的实现方式中,在所述接收子周期结束时,或,接收到所述标签控制器广播的针对结束的接收子周期对应标签的标识停止消息时,所述非标签控制器停止根据所述结束的接收子周期对应的标签标识所述主机下发的写I/O数据。第三方面,本发明实施例提供一种存储控制器,包括:判断模块,用于接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期;标识模块,用于若当前不存在已启动的接收子周期,启动当前生成的标签对应的接收子周期,并根据所述接收子周期对应的标签标识所述写I/O数据;所述标识模块,还用于若当前存在已启动的接收子周期,根据所述接收子周期对应的标签标识所述写I/O数据;复制模块,用于在所述接收子周期结束时,将所述接收子周期对应的标签标识的所述写I/O数据复制到目的端。结合第三方面。在第一种可能的实现方式中,还包括:标签控制模块,用于在标签生成时间点到达时生成标签,不同的标签生成时间点生成的标签不相同。结合第三方面。或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述标签控制模块,还用于向集群存储系统中各非标签控制器广播包括所述标签的标签启动消息。第四方面,本发明实施例还提供一种存储控制器,包括:判断模块,用于接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期;标识模块,用于若当前不存在已启动的接收子周期,启动当前接收的标签对应的接收子周期,并根据所述接收子周期对应的标签标识所述写I/O数据;所述标识模块,还用于若当前存在已启动的接收子周期,根据所述接收子周期对应的标签标识所述写I/O数据;复制模块,用于在所述接收子周期结束时,将所述接收子周期对应的标签标识的所述写I/O数据复制到目的端。结合第四方面,在第一种可能的实现方式中,还包括:标签控制模块,用于在标签生成时间点到达时生成标签,不同的标签生成时间点生成的标签不相同。结合第四方面,或第四方面的第一种可能实现方式,在第二种可能的实现方式中,所述标签控制模块,还用于向集群存储系统中各非标签控制器广播包括所述标签的标签启动消息。第五方面,本发明实施例提供一种数据复制系统,包括:第三方面提供的存储控制器和第四方面提供的存储控制器。第六方面,本发明实施例还提供一种存储控制器,包括:存储器、处理器、总线以及通信接口;其中所述处理器、所述通信接口、所述存储器通过所述总线完成相互间的通信;所述存储器,用于存储程序;所述处理器,用于执行所述程序;所述程序所包括的指令用于执行上述第一方面各实施例所提供的方法。第七方面,本发明实施例还提供一种存储控制器,包括:存储器、处理器、总线以及通信接口;其中所述处理器、所述通信接口、所述存储器通过所述总线完成相互间的通信;所述存储器,用于存储程序;所述处理器,用于执行所述程序;所述程序所包括的指令用于执行上述第二方面各实施例所提供的方法。上述技术方案中,存储控制器接收到主机下发到缓存的写I/O数据时、如果不存在已启动的接收子周期,存储控制器就可以启动当前生成的标签对应的新的接收子周期,并根据该接收子周期对应的标签标识当前主机下发的写I/O数据,存储控制器只需要判断是否存在已启动的接收子周期,而并不需要判断发送子周期的状态。如果存在已启动的接收子周期,则直接根据该接收子周期对应的标签标识当前主机下发的写I/O数据。在任一个接收子周期结束后,相应的发送子周期开始,即开始将根据该标签标识的写I/O数据复制到目的端。接收到主机下发的写I/O数据时,启动新的接收子周期的条件是:存在新生成的标签且不存在已启动的接收子周期。而不是在上一个缓存周期的发送子周期结束后,才能启动下一个缓存周期的接收子周期。因此,上一个缓存周期的发送子周期可以与下一个缓存周期的接收子周期同时进行,因此,降低了阻塞写I/O数据的概率。附图说明图1A为本发明实施例提供的一种数据复制方法流程图;图1B为本发明实施例提供的数据复制过程中一种缓存周期叠加示意图;图2A为本发明实施例提供的另一种数据复制方法流程图;图2B为本发明实施例提供的一种集群存储系统复制数据的场景图;图2C为本发明实施例提供的标签控制器发送的一种启动标签消息示意图;图3为本发明实施例常提供的又一种数据复制方法流程图;图4为本发明实施例常提供的再一种数据复制方法流程图;图5A为本实施例提供的一种存储控制器结构示意图;图5B为本实施例提供的另一种存储控制器结构示意图;图6A为本实施例提供的又一种存储控制器结构示意图;图6B为本实施例提供的再一种存储控制器结构示意图;图7为本实施例提供的再一种存储控制器结构示意图;图8为本实施例提供的再一种存储控制器结构示意图。具体实施方式图1A为本发明实施例提供的一种数据复制方法流程图。本实施例可适用于具有单存储控制器的源端向目的端复制数据的场景。如图1A所示,本实施例提供的方法包括:步骤11:标签控制器接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期。步骤12:若当前不存在已启动的接收子周期,所述标签控制器启动当前生成的标签对应的接收子周期,并根据所述接收子周期对应的标签标识所述写I/O数据。其中,所述接收子周期为当前生成的标签对应的接收子周期。步骤13:若当前存在已启动的接收子周期,所述标签控制器根据所述接收子周期对应的标签标识所述写I/O数据。本实施例中标签控制器为具有生成标签功能的存储控制器。标签控制器可以在每个标签生成时间点到达时生成标签,不同的标签生成时间点生成的标签不相同。标签控制器周期性生成不同的标签,相邻两个标签生成时间点的间隔时长可以相同,也可以不同。两个标签生成时间点的间隔时间称为标签生成周期。标签可以是用时间表示的时间标签。标签控制器接收到主机下发的写I/O数据时,先判断当前是否存在已启动的接收子周期,例如,对启动的每一个接收子周期进行记录,在一个接收子周期结束时,清除该接收子周期的记录。如果当前存在已启动的接收子周期,标签控制器根据所述接收子周期对应的标签标识当前接收到的写I/O数据;否则,标签控制器启动当前生成的标签对应的接收子周期即启动新的接收子周期,并根据当前生成的标签标识当前接收到的写I/O数据。在任一个接收子周期结束后,启动该接收子周期对应的发送子周期。通常情况下,主机先将写I/O数据下发到存储控制器的缓存中,之后由存储控制器从缓存将写I/O数据复制到存储阵列中。启动接收子周期就是在内存中开辟新的缓存空间用于接收写I/O数据,缓存空间的大小根据接收子周期的时长设置,如果缓存空间不足,会使写I/O数据在接收子周期内溢出,导致写I/O阻塞。不同的接收子周期,使用的缓存空间相互独立互不影响。标签控制器生成标签时,如果没有接收到主机下发的写I/O数据,则丢弃当前生成的标签;如果接收到主机下发的写I/O数据,则判断当前是否存在已启动的接收子周期,从而确定是否启动当前生成的标签对应的接收子周期。如果当前存在已启动的接收子周期,标签控制器也会丢弃当前生成的标签。从上述启动新的接收子周期的过程可以看出,当前是否存在新生成的标签是启动接收子周期的条件之一。启动新的接收子周期需同时满足以下三个条件:接收到主机下发的写I/O数据、存在新生成的标签且不存在已启动的接收子周期。标签控制器接收主机下发的写I/O数据时,如果当前不存在已启动的接收子周期,当前也没有新生成的标签即当前不是生成标签的时间点,则不能启动新的接收子周期,而是直接丢弃主机下发的写I/O数据。存储控制器丢弃主机下发的写I/O数据后,主机会重新下发被丢弃的写I/O数据。在标签生成频率提高即标签生成周期缩短且主机内存比较大的情况下,标签控制器接收到主机下发的写I/O数据时,极少可能出现以下现象:不存在已启动的接收子周期,也不存在新生成的标签。因而,本发明提供的技术方案在数据复制过程中,丢弃主机下发的写I/O数据的概率即阻塞写I/O的概率极低。步骤14:在所述接收子周期结束时,所述标签控制器将所述接收子周期对应的标签标识的写I/O数据复制到目的端。在所述接收子周期结束时,所述标签控制器将所述接收子周期对应的标签标识的写I/O复制到目的端。标签控制器会依次启动多个接收子周期,在任一个接收子周期结束时,标签控制器都会将当前结束的接收子周期对应的标签标识的写I/O复制到目的端。本发明实施例中,可采用同步复制模式,也可采用异步复制模式,将写I/O数据复制到目的端。目的端接收到的写I/O数据后,根据每个写I/O数据中的标签,确定每个写I/O数据所在的接收子周期,按照发送端发送写I/O数据顺序,在本地存储设备中存储接收到的写I/O数据,从而提高接收到写I/O数据的有效性。在任一个标签对应的接收子周期结束时,启动该标签对应的发送子周期,即将缓存中根据该标签标识的写I/O数据复制到目的端。一个标签对应的接收子周期和该标签对应的发送子周期组成了一个完整的缓存周期。在将写I/O数据复制到目的端的过程中,只要满足以上启动新的接收子周期的条件,都可以启动新的接收子周期,因此,一个缓存周期的发送子周期可以与下一个缓存周期的接收子周期同时进行,实现多个缓存周期相互叠加,因此可降低阻塞写I/O数据的概率。如图1B所示,在第一标签周期内,启动了第一标签对应的第一个缓存周期;在第二标签周期,启动了第二标签对应的第二个缓存周期;在第三标签周期内,启动了第三标签对应的第三个缓存周期。在第一个缓存周期还没有结束时,第二个缓存周期已启动,同样,第二缓存周期还没有结束时,第三个缓存周期已经启动,多个缓存周期相互叠加。需要说明是,图1B仅给出了一种可能情况,并不代表在每个标签周期都会启动新的缓存周期。在实际应用中,有可能间隔一个或几个标签周期后,才会启动一个新的缓存周期。每个接收子周期有两个临界点:一个是接收子周期启动的时间点,另一个是接收子周期结束的时间点。在写I/O很密集的情况下,如果在接收子周期结束的时间点上有写I/O到达,而且又存在新生成的标签,则会启动新的接收子周期。主机下发写I/O数据量非常大,那么叠加的缓存周期数就越多。在主机下发写I/O数据量正常且网络复制带宽正常的情况下,标签控制器的缓存周期的数据量是一定的,由于一个接收子周期接收到的写I/O数据全部发送到目的端后,发送子周期结束,也就是对应的缓存周期结束,因此,叠加的缓存周期的数量不会一直增加。需要说明的是,接收子周期的时长不能过短也不能过长。接收子周期的时长越短,接收子周期和发送子周期两个子周期的切换频率就越快,接收的写I/O数据和发送的写I/O数据就越少,当复制异常中断时,源端和目的端的数据一致性越高。但是,接收子周期的时长也不能太短,因为接收子周期太短,发送的写I/O数据量越少,而且接收子周期与发送子周期频繁切换会消耗控制器的计算资源。所以接收子周期的时长不能过短也不能过长,需要找到一个中间的合适值。这依赖于设计和实际的实验来探索。上述实施例提供的方法中,标签控制器接收到主机下发到缓存的写I/O数据时、如果不存在已启动的接收子周期,标签控制器就可以启动当前生成的标签对应的新的接收子周期,并根据该接收子周期对应的标签标识当前主机下发的写I/O数据,本发明实施例中,标签控制器只需要判断是否存在已启动的接收子周期,而并不需要判断发送子周期的状态。如果存在已启动的接收子周期,则直接根据该接收子周期对应的标签标识当前主机下发的写I/O数据。在任一个接收子周期结束后,相应的发送子周期开始,即开始将根据该标签标识的写I/O数据复制到目的端。上述实施例提供的方法中,接收到主机下发的写I/O数据时,启动新的接收子周期的条件是:存在新生成的标签且不存在已启动的接收子周期。而不是在上一个缓存周期的发送子周期结束后,才能启动下一个缓存周期的接收子周期。因此,上述实施例提供的方法中上一个缓存周期的发送子周期可以与下一个缓存周期的接收子周期同时进行,因此,降低了阻塞写I/O数据的概率。图2A为本发明实施例提供的另一种数据复制方法流程图。本实施例适用于具有集群存储系统的源端向目的端复制数据的场景。源端的集群存储系统中存储控制器包括标签控制器和非标签控制器,在源端的集群存储系统中选择一个存储控制器作为标签控制器,其它均为非标签控制器。通常情况下,标签控制器为集群存储系统的主存储控制器。如图2A所示,本实施例提供的方法包括:步骤20:所述标签控制器在标签生成时间点到达时生成标签,并向集群存储系统中各非标签控制器广播包括所述标签的标签启动消息。其中,不同的标签生成时间点生成的标签不相同。步骤21:标签控制器接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期。步骤22:若当前不存在已启动的接收子周期,所述标签控制器启动当前生成的标签对应的接收子周期,并根据所述接收子周期对应的标签标识所述写I/O数据。标签控制器可以在每个标签生成时间点到达时生成标签,并在生成标签时向集群存储系统中各非标签控制器广播包括所述标签的标签启动消息,不同的标签生成时间点生成的标签不相同。如2B所示,源端的集群存储系统可以包括多个管理不同存储阵列的存储控制器。源端可以包括一个主机或多个主机,主机可以向不同的存储控制器下发不同的写I/O数据。源端的每个存储控制器分别向目的端的存储系统复制自己接收到的写I/O数据。目的端的存储系统也可以是集群存储系统。源端可以是生产中心,相应地目的端可以是容灾中心;源端也可以是数据迁移过程中的发送端,相应地目的端可以是数据迁移过程中的接收端;源端也可以是数据备份系统的源中心,相应地,目的端是备份中心。标签控制器生成新的标签后,向集群存储系统中其它存储控制器即非标签控制器广播包括该标签的标签启动消息,即在本地集群存储系统中广播包括该标签的标签启动消息。标签控制器在一个标签生成时间点向每个非标签控制器点广播的标签启动消息是相同的,也就是,标签控制器在一个标签生成时间点向每个非标签控制器发送的标签均是相同的。如图2C所示,标签控制器以固定频率F向各个非标签控制器发送包括标签的标签启动消息。步骤23:若当前存在已启动的接收子周期,所述标签控制器根据所述接收子周期对应的标签标识所述写I/O数据。步骤24:在所述接收子周期结束时,所述标签控制器将所述接收子周期对应的标签标识的写I/O复制到目的端。集群存储系统中标签控制器处理接收到主机下发的写I/O数据的方法相同,不同之处在于:集群存储系统中标签控制器生成标签时,还向各非标签控制器广播包括标签的标签启动消息。步骤21至步骤24步骤11至步骤14相同,在此不再赘述。非标签控制器接收到标签启动消息后,对主机下发的写I/O的处理方法与标签控制器类似,不同之处在于:非标签控制器接收到主机下发的写I/O数据时,如果确定当前不存在接收子周期,启动当前接收到的标签启动消息中的标签对应的接收子周期。标签控制器向各非标签控制器广播包括标签的标签启动消息的目的是,促使集群存储系统中各存储控制器在本地同步启动新的接收子周期,以使各存储控制器将任意一个标签标识的写I/O数据全部复制到目的端后,源端的集群存储系统中数据与目的端的数据保持一致。为使管理简单化,在不同存储控制器中,每个接收子周期的时长设为预设时长,且每个接收子周期的时长均相等。通常情况下,主机下发的写I/O比较密集,标签控制器发送的标签启动消息到达不同的非标签控制器的时间点可能存在时间差,不同存储控制器启动同一个标签对应的接收子周期的时间点是相近的。由于同一个标签对应的接收子周期时长相等,相应地,不同存储控制器结束同一个标签对应的接收子周期的时间点也相近,也就是启动同一个标签对应的发送子周期的时间点也相近,因此,各存储控制器复制同一个标签标识的写I/O数据到目的端的时间点相近,从而使在一个标签对应的写I/O数据全部复制到目的端后,源端的集群存储系统中数据与目的端的数据可保持一致。可选地,不同的存储控制器有可能接收到主机下发到缓存的写I/O数据量差别较大,为了不同的存储控制器在相近的时间点启动同一个标签对应的发送子周期,进而使一个标签对应的发送子周期结束后,发送端的集群存储系统中数据与接收端的数据可保持一致,本发明还提供了以下技术方案:标签控制器在一个接收子周期结束时,向各所述非标签控制器广播停止标识消息,通知各所述非标签控制器停止根据该接收子周期对应的标签标识主机下发的写I/O数据,开始向接收端复制缓存中用上述标签标识的写I/O数据。上述实施例提供的方法中,标签控制器周期性向本地集群存储系统的各个非标签控制器发送包括标签的标签启动消息。标签控制器接收到主机下发到缓存的写I/O数据时、如果不存在已启动的接收子周期,就可以启动当前生成的标签对应的新的接收子周期,并根据该接收子周期对应的标签标识当前主机下发的写I/O数据。如果存在已启动的接收子周期,则直接根据该接收子周期对应的标签标识当前主机下发的写I/O数据。集群存储系统中每个非标签控制器,接收到主机下发到缓存的写I/O数据时、与标签控制器的处理方法不同之处在于,确定当前不存在接收子周期时,启动当前接收到的标签启动消息中的标签对应的接收子周期。在任一个接收子周期结束后,相应的发送子周期开始,即开始将根据该标签标识的写I/O数据复制到目的端。上述实施例提供的方法中,集群存储系统中每个存储控制器接收到主机下发的写I/O数据时,启动新的接收子周期的条件是:存在新生成的标签且不存在已启动的接收子周期。而不是在上一个缓存周期的发送子周期结束后,才能启动下一个缓存周期的接收子周期。因此,上述实施例提供的方法中上一个缓存周期的发送子周期可以与下一个缓存周期的接收子周期同时进行,因此,降低了源端的集群存储系统阻塞写I/O数据的概率。图3为本发明实施例常提供的又一种数据复制方法流程图。本实施例的执行主体为源端的集群存储系统中非标签控制器。如图3所示,本实施例提供的方法包括:步骤31:所述非标签控制器接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期。步骤32:若当前不存在已启动的接收子周期,所述非标签控制器启动当前接收的标签对应的接收子周期,并根据启动所述接收子周期对应的标签标识所述写I/O数据。标签控制器可以在每个标签生成时间点到达时生成标签,并在生成标签时向集群存储系统中各非标签控制器广播包括所述标签的标签启动消息,不同的标签生成时间点生成的标签不相同。非标签控制器接收到标签启动消息后,对主机下发的写I/O的处理方法与标签控制器类似,不同之处在于,非标签控制器接收到主机下发的写I/O数据时,如果确定当前不存在接收子周期,启动当前接收到的标签启动消息中的标签对应的接收子周期。步骤33:若当前存在已启动的接收子周期,所述非标签控制器根据所述接收子周期对应的标签标识所述写I/O数据。非标签控制器接收到标签启动消息时,如果没有接收到主机下发的写I/O数据,则丢弃当前标签启动消息中的标签;如果接收到主机下发的写I/O数据,则判断当前是否存在已启动的接收子周期,从而确定是否启动当前标签启动消息中的标签对应的接收子周期。如果当前存在已启动的接收子周期,标签控制器也会丢弃当前生成的标签。步骤34:在所述接收子周期结束时,所述非标签控制器将所述接收子周期对应的标签标识的写I/O复制到目的端。可选地,不同的存储控制器有可能接收到主机下发到缓存的写I/O数据量差别较大,为了不同的存储控制器在相近的时间点启动同一个标签对应的发送子周期,进而使任一个标签对应的发送子周期结束后,源端的集群存储系统中的数据与目的端中的数据保持一致,非标签控制器接收到标签控制器广播的针对结束的接收子周期对应标签的标识停止消息时,停止根据所述结束的接收子周期对应的标签标识所述主机下发的写I/O数据。或者,非标签控制器在任意一个所述接收子周期结束时,停止根据所述结束的接收子周期对应的标签标识所述主机下发的写I/O数据。可选地,每个非标签控制器在任意一个接收子周期结束时,或接收到标签控制器发送的标识停止消息时,统计在当前结束的接收子周期内接收到写I/O数据的个数。通过统计的写I/O数据的个数,可确定是否将当前结束的接收子周期内接收的所有写I/O数据全部复制到目的端。另外,每个非标签控制器也可在接收到标签控制器发送的标识停止消息后,向标签控制器返回响应消息,在响应消息中携带各自在上述标识停止消息所针对的接收子周期内接收到写I/O数据的个数,由标签控制器统计在上述标识停止消息所针对的接收子周期内所有存储控制器所标识的写I/O数据的总个数,从而可确定集群存储系统是否将上述标识停止消息所针对的接收子周期内的所有写I/O数据发送到目的端。可选地,为提高数据复制效率,在任意一个接收子周期内,存储控制器将访问地址相同的写I/O数据集合并成所述写I/O数据集合中最后一次接收到的写I/O数据。图4为本发明实施例提供的再一种数据复制方法流程图。本实施例为一个缓存周期内各存储控制器的执行过程。如图4所示,包括:步骤41:标签控制器在每个标签生成时间点到达时生成标签,并向各非标签控制器广播包括所述标签的标签启动消息。步骤42A:标签控制器接收到主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期,若不存在已启动的接收子周期,启动当前生成的标签对应的接收子周期,根据当前生成的标签标识所述写I/O数据,否则,根据已启动的接收子周期对应的标签标识所述写I/O数据。步骤42B:非标签控制器接收到主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期,若不存在已启动的接收子周期,启动当前接收到的标签启动消息中的标签对应的接收子周期,并根据启动当前接收到的标签启动消息中的标签标识所述写I/O数据,否则,根据已启动的接收子周期对应的标签标识所述写I/O数据。通过情况下,主机的下发的写I/O数据比较密集,步骤42A与步骤42B启动的接收子周期可视为同一个标签对应的接收子周期。步骤43:标签控制器在步骤42A启动的一个接收子周期结束时,向各非标签控制器广播针对所述接收子周期的标识停止消息。步骤44:非标签控制器接收到标识停止消息时,停止根据标识停止消息所针对的接收子周期对应的标签标识主机下发的写I/O数据。每个存储控制器在接收子周期内接收到主机下发的写I/O数据量可能不相同,有的写I/O数据量会很大,相应地,用标识写I/O数据的时间会较长;有的写I/O数据量会很小,相应地,用标识写I/O数据的时间会较短。因此,在一个标签对应的接收子周期内,有的存储控制器可能已根据上述标签标识了接收到的所有写I/O数据,而有的存储控制器可能还没有根据上述标签标识接收到的部分写I/O数据。为了在一个标签对应的接收子周期后,源端的集群存储系统中数据与目的端的数据保持一致。标签控制器在一个标签对应的接收子周期结束后,在本地集群存储系统广播标识停止消息,各存储控制器接收到标识停止消息后,停止根据标识停止消息所针对的接收子周期对应的标签标识主机下发的写I/O数据。同时进入标识停止消息所针对的接收子周期对应的发送子周期,即同时开始将所述接收子周期对应的标签标识过的写I/O数据复制到目的端。步骤45A:标签控制器进入步骤42A启动的接收子周期对应的发送子周期,将上述标签标识的写I/O数据复制到目的端。步骤45B:非标签控制器进入步骤42B启动的接收子周期对应的发送子周期,将上述标签标识的写I/O数据复制到目的端。图5A为本实施例提供的一种存储控制器结构示意图。如图5A所示,该存储控制器包括:判断模块51、标识模块52和复制模块53。判断模块51,用于接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期。标识模块52,用于若当前不存在已启动的接收子周期,启动当前生成的标签对应的接收子周期,并根据所述接收子周期对应的标签标识所述写I/O数据。所述标识模块52,还用于若当前存在已启动的接收子周期,根据所述接收子周期对应的标签标识所述写I/O数据。复制模块53,用于在所述接收子周期结束时,将所述接收子周期对应的标签标识的所述写I/O数据复制到目的端。可选地,如图5B所示,上述存储控制器还可包括标签控制模块54。标签控制模块,用于在标签生成时间点到达时生成标签,不同的标签生成时间点生成的标签不相同。标识模块启动接收子周期时,启动与标签控制模块生成的标签对应的接收子周期。可选地,所述判断模块,还用于在生成标签时,如果没有所述主机下发的写I/O数据,丢弃所述生成的标签。可选地,为使上述存储控制器可适用于集群存储系统中的标签控制器,上述存储控制器还可包括:标签控制模块。所述标签控制模块,还用于向集群存储系统中各非标签控制器广播包括所述标签的标签启动消息。标识模块52根据标签控制模块生成的标签启动接收子周期。可选地,为了使集群存储系统中不同的存储控制器在相近的时间点启动同一个标签对应的发送子周期,进而使一个标签对应的发送子周期结束后,源端的集群存储系统的数据与目的端的数据可保持一致。上述标签控制模块,还用于在所述接收子周期结束时,向所述各非标签控制器广播针对结束的接收子周期对应标签的标识停止消息,所述标识停止消息,用于通知所述各非标签控制器停止根据所述结束的接收子周期对应的标签标识所述主机下发的写I/O数据。标签控制模块在任一个接收子周期结束时,向所述各非标签控制器广播针对结束的接收子周期对应标签的标识停止消息。上述实施例可参见图1A、图2A和图4对应实施例的描述,在此不再赘述。图6A为本实施例提供的又一种存储控制器结构示意图。如图6A所示,该存储控制器包括:判断模块61、标识模块62和复制模块63。判断模块61,用于接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期;标识模块62,用于若当前不存在已启动的接收子周期,启动当前接收的标签对应的接收子周期,并根据所述接收子周期对应的标签标识所述写I/O数据;所述标识模块62,还用于若当前存在已启动的接收子周期,根据所述接收子周期对应的标签标识所述写I/O数据;复制模块63,用于在所述接收子周期结束时,将所述接收子周期对应的标签标识的所述写I/O数据复制到目的端。可选地,如图6B所示,还包括:接收模块64,用于接收集群存储系统中标签控制器广播的标签启动消息,所述标签启动消息包括所述标签,并且不同的标签生成时间点所述标签控制器广播的标签不相同。标识模块62启动接收子周期时,启动与接收模块接收到的标签对应的接收子周期。可选地,所述标识模块62,还用于在所述接收子周期结束时,或,接收到所述标签控制器广播的针对结束的接收子周期对应标签的标识停止消息时,停止根据所述结束的接收子周期对应的标签标识所述主机下发的写I/O数据。可选地,所述判断模块61,还用于在所述接收模块接收到所述标签启动消息时,如果没有所述主机下发的写I/O数据,丢弃所述标签启动消息中的标签。上述实施例可参见图3和图4对应实施例的描述,在此不再赘述。本发明实施例还提供一种数据复制系统,包括如图5A和图6A所示的存储控制器,或,包括如图5B和图6B所示的存储控制器。图7为本实施例提供的再一种存储控制器结构示意图。本实施例提供的存储控制器适用于单存储器场景,也适用于集群在座系统中标签存储器。本实施例提供的存储控制器适用于集群在座系统中非标签存储器。如图7所示的存储控制器700包括:存储器(memory)730、处理器(processor)710、总线740以及通信接口(CommunicationsInterface)720;其中所述处理器、所述通信接口、所述存储器通过所述总线完成相互间的通信。处理器710可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。存储器730,用于存放程序732。存储器730可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。具体地,程序732可以包括程序代码,所述程序代码包括计算机操作指令。所述处理器,用于执行所述程序732。所述程序,用于:接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期;若当前不存在已启动的接收子周期,启动当前生成的标签对应的接收子周期,并根据所述接收子周期对应的标签标识所述写I/O数据若当前存在已启动的接收子周期,根据所述接收子周期对应的标签标识所述写I/O数据;在所述接收子周期结束时,通过所述通信接口将所述接收子周期对应的标签标识的所述写I/O数据复制到目的端。所述程序,还用于:在标签生成时间点到达时生成标签,不同的标签生成时间点生成的标签不相同。可选地,所述程序,还用于:通过所述通信接口向集群存储系统中各非标签控制器广播包括所述标签的标签启动消息。可选地,所述程序,还用于:在所述接收子周期结束时,通过所述通信接口向所述各非标签控制器广播针对结束的接收子周期对应标签的标识停止消息,所述标识停止消息,用于通知所述各非标签控制器停止根据所述结束的接收子周期对应的标签标识所述主机下发的写I/O数据。可选地,所述程序,还用于:在生成标签时,如果没有所述主机下发的写I/O数据,丢弃所述生成的标签。上述实施例可参见图1A、图2A和图4对应实施例的描述,在此不再赘述。图8为本实施例提供的再一种存储控制器结构示意图。本实施例提供的存储控制器适用于集群在座系统中非标签存储器。如图8所示的存储控制器800包括:存储器(memory)830、处理器(processor)810、总线840以及通信接口(CommunicationsInterface)820;其中所述处理器、所述通信接口、所述存储器通过所述总线完成相互间的通信。处理器810可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。存储器830,用于存放程序832。存储器830可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。具体地,程序832可以包括程序代码,所述程序代码包括计算机操作指令。所述处理器,用于执行所述程序832。所述程序,用于:接收主机下发的写I/O数据时,判断当前是否存在已启动的接收子周期;若当前不存在已启动的接收子周期,启动当前接收的标签对应的接收子周期,并根据所述接收子周期对应的标签标识所述写I/O数据;若当前存在已启动的接收子周期,根据所述接收子周期对应的标签标识所述写I/O数据;在所述接收子周期结束时,通过所述通信接口将所述接收子周期对应的标签标识的所述写I/O数据复制到目的端。可选地,所述程序,还用于:通过所述通信接口接收集群存储系统中标签控制器广播的标签启动消息,所述标签启动消息包括所述标签,并且不同的标签生成时间点所述标签控制器广播的标签不相同。可选地,所述程序,还用于:在所述接收子周期结束时,或,通过所述通信接口接收到所述标签控制器广播的针对结束的接收子周期对应标签的标识停止消息时,停止根据所述结束的接收子周期对应的标签标识所述主机下发的写I/O数据。可选地,所述程序,还用于:在通过所述通信接口接收到所述标签启动消息时,如果没有所述主机下发的写I/O数据,丢弃所述标签启动消息中的标签。上述实施例可参见图3和图4对应实施例的描述,在此不再赘述。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1