一种远程数据复制方法、存储设备及存储系统与流程

文档序号:23260649发布日期:2020-12-11 18:49阅读:76来源:国知局
一种远程数据复制方法、存储设备及存储系统与流程
本发明实施例涉及存储
技术领域
,特别是一种远程数据复制方法、存储设备及存储系统。
背景技术
:数据容灾,又称为远程数据复制技术,是指建立一个异地的数据系统,该系统是本地数据的一个可用复制。在本地数据及整个应用系统出现灾难时,系统至少在异地保存有一份可用的关键业务的数据。典型的数据容灾系统包括生产中心和灾备中心。在生产中心,部署有主机、存储阵列,用于正常的业务运行;在灾备中心,部署有主机、存储阵列,用于在生产中心发生灾难后,接管其业务。在海量存储系统中,生产中心的存储阵列和灾备中心的存储阵列通常都是包含多个控制器的存储阵列。不同的控制器可以分别对同一个文件进行写入和修改,为了保证复制到灾备中心的文件和生产中心的文件保持一致,各个控制器对该文件进行的写入操作需要串行复制到灾备中心,影响了复制效率。技术实现要素:本实施例提供了一种远程数据复制方法和存储系统,能够在多控系统中并发地执行复制任务。第一方面,提供了一种远程数据复制方法。所述方法应用于存储系统中,所述存储系统包括生产阵列和灾备阵列,所述生产阵列至少包括第一控制器和第二控制器。第一控制器检测本地是否有复制任务,当没有复制任务时,向第二控制器发送请求消息。所述请求消息用于向所述第二控制器申请复制任务,第二控制器至少包括两个复制任务。第二控制器根据所述请求消息,读取第一个复制任务对应的数据并发送给所述第一控制器。第一控制器接收所述第一个复制任务对应的数据,将所述第一个复制任务对应的数据发送给灾备阵列,第二控制器也将第二个复制任务对应的数据发送给所述灾备阵列。在本实施例中,第一控制器没有复制任务,处于空闲状态,而第二控制器至少包括两个复制任务,处于繁忙状态。因此,第一控制器可以向第二控制器发送请求消息,以申请复制任务。第二控制器根据所述请求消息,将自己的至少两个两个复制任务分配一个给第一控制器,从而第一控制器和第二控制器可以各自执行一个复制任务,达到了并行处理了的目的,提高了复制效率。在第一方面的第一种实施方式中,所述第二控制器维护有复制队列,所述复制队列包括所述至少两个复制任务。因此,第二控制器具体是从所述复制队列中获取第一个复制任务,并将第一个复制任务对应的数据发送给第一控制器。另外,第二控制器也是从所述复制队列中获取第二复制任务,将所述第二复制任务对应的数据发送给所述灾备阵列。结合第一方面,以及第一方面的第一种实施方式,在第二种实施方式中,第一个复制任务和所述第二个复制任务是针对同一个文件的复制任务。由此实现了同一个文件的并行复制。结合第一方面的第二种实施方式,在第三种实施方式中,所述文件具有唯一的文件名,所述第一个复制任务对应的数据包括所述文件名,所述文件的初始数据,以及所述初始数据的写入时间,所述第二个复制任务对应的数据包括所述文件名,所述文件的修改数据,以及所述修改数据的写入时间,所述修改数据的写入时间晚于所述初始数据的写入时间。结合第一方面的第三种实施方式,在第四种实施方式中,所述灾备阵列接收所述第一个复制任务对应的数据,创建所述文件的备份文件,将所述初始数据写入所述备份文件,所述备份文件的文件名与所述文件的文件名相同。在所述接收所述第一个复制任务对应的数据之后,所述灾备阵列接收所述第二个复制任务对应的数据。所述灾备阵列确定所述第二个复制任务对应的文件名与所述备份文件的文件名相同时,判断所述修改数据的写入时间是否晚于所述初始数据的写入时间。当所述灾备阵列确定所述修改数据的写入时间晚于所述初始数据的写入时间时,将所述修改数据写入所述备份文件中。在这种实施方式中,如果灾备阵列先接收初始数据,再接收修改数据,可以将修改数据写入备份文件中。即使修改数据会覆盖初始数据,也不会造成灾备阵列和生产阵列的数据不一致。结合第一方面的第三种实施方式,在第五种实施方式中,所述灾备阵列接收所述第二个复制任务对应的数据,创建所述文件的备份文件,将所述修改数据写入所述备份文件,所述备份文件的文件名与所述文件的文件名相同。在所述接收所述第二个复制任务对应的数据之后,所述灾备阵列接收所述第一个复制任务对应的数据。所述灾备阵列确定所述第一个复制任务对应的文件名与所述备份文件的文件名相同时,判断所述初始数据的写入时间是否晚于所述修改数据的写入时间。当所述灾备阵列确定所述初始数据的写入时间早于所述修改数据的写入时间时,不执行将所述初始数据写入所述备份文件中的操作。在这种实施方式中,如果灾备阵列先接收修改数据,再接收初始数据,则不执行将初始数据写入备份文件的操作,以防止灾备阵列和生产阵列的数据不一致。本发明第二方面提供了一种存储设备,以执行第一方面提供的方法。本发明第三方面提供了一种存储设备,以执行第一方面提供的方法。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。图1是本发明实施例提供的系统架构示意图;图2是本发明实施例提供的控制器的结构图;图3是本发明实施例提供的远程数据复制方法的流程示意图。具体实施方式本实施例提供了一种远程数据复制方法、存储设备和存储系统,能够在多控系统中并发地执行复制任务。图1为本发明实施例提供的远程数据复制方法的系统架构示意图,如图1所示,生产中心包括生产主机、连接设备和生产阵列20;灾备中心的系统架构与生产中心类似,包括灾备主机、连接设备和灾备阵列30。在本发明实施例中,灾备中心可以不止一个。其中,生产中心与灾备中心可以通过ip(internetprotocol)或者fc(fiberchanel)或者其他协议进行数据传输。生产主机和灾备主机均可以是任何计算设备,如服务器、台式计算机等等。在主机内部,安装有操作系统以及其他应用程序。连接设备可以是存储设备和主机之间的任何接口,如光纤交换机,或者其他当前技术已知有的交换机。生产阵列20和灾备阵列30均可以是存储设备,如独立硬盘冗余阵列(redundantarraysofinexpensivedisks,raid)、硬盘簇(justabunchofdisks,jbod)、直接存取存储器(directaccessstoragedevice,dasd)的一个或多个互连的硬盘驱动器,诸如磁带库、一个或多个存储单元的磁带存储设备。本实施例中的生产阵列20和灾备阵列30均是具有文件系统的存储设备,也就是说,存储介质中保存的数据是以文件为单位进行管理和访问的。文件系统是一种存储和组织数据的方法,它使得对数据的访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘等物理设备使用的数据块的概念。生产阵列20在使用文件系统来保存数据后,用户不必关心数据实际保存在硬盘的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。同样的,在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。生产阵列20和灾备阵列30的硬件结构是相同的。图2是本发明实施例生产阵列20的结构示意图,图3是本发明实施例灾备阵列30的结构示意图。如图2所示,生产阵列20至少包括控制器21、控制器22和若干个硬盘31。控制器21可以包括任何计算设备,如服务器、台式计算机等等。在控制器内部,安装有文件系统以及其他应用程序。控制器21用于执行和文件相关的各种操作,例如创建文件、创建目录、读文件操作、写文件操作、发送数据复制请求等等。控制器22和控制器21的结构类似,功能相同。生产阵列20包含的若干个硬盘31用于提供存储空间保存文件。需要说明的是,控制器21和控制器22仅是本发明实施例的示例,在本发明实施例中还可以包含其他控制器,本实施例并没有对控制器的数量进行限定。控制器21主要包括处理器(processor)118、缓存(cache)120、存储器(memory)122、通信总线(简称总线)126以及通信接口(communicationinterface)128。处理器118、缓存120、存储器122以及通信接口128通过通信总线126完成相互间的通信。通信接口128,用于与生产主机、灾备阵列以及硬盘31通信。另外,通信接口128还用于与控制器22通信。存储器122,用于存放程序124,存储器122可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个硬盘存储器。可以理解的是,存储器122可以为随机存储器(random-accessmemory,ram)、磁碟、硬盘、光盘、固态硬盘(solidstatedisk,ssd)或者非易失性存储器等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。程序124可以包括程序代码,所述程序代码包括上面描述的文件系统以及其他程序代码。缓存120(cache)用于缓存从生产主机接收的数据或从硬盘中读取的数据。缓存120可以是ram、rom、闪存(flashmemory)或固态硬盘(solidstatedisk,ssd)等各种可以存储数据的非短暂性的(non-transitory)机器可读介质,在此不做限定。另外,存储器122和缓存120可以合设或者分开设置,本发明实施例对此不做限定。处理器118可能是一个中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。灾备阵列30的结构和生产阵列20相同,其作用是当生产阵列20发生故障时,可以接替生产阵列20继续处理业务。下面结合图1和图2,描述本发明实施例一种远程数据复制方法。该方法应用在图1所示的异步远程复制的场景中,由生产阵列20和灾备阵列30执行。如图3所述,所述方法可以包括以下步骤:步骤1:第一控制器21检测本地是否有复制任务。复制任务是指将数据从生产阵列20复制到灾备阵列30的任务。示例性的,第一控制器的缓存中保存有一个复制队列,所述复制队列中可以包括多个复制任务,每个复制任务可以用文件名、文件数据的写入时间等信息来描述。第一控制器可以通过检查所述复制队列所包含的信息来确定当前是否具有复制任务。另外,队列只是本发明实施例的一个示例,本实施例还可以采用其他数据结构,例如堆、栈等,来保存复制任务。步骤2:当第一控制器21没有复制任务时,向第二控制器22发送请求消息。所述请求消息用于向第二控制器22申请复制任务。可以理解的是,生产阵列20中可能包含其他控制器,某些控制器处于空闲状态(没有复制任务),而某些控制器可能处于繁忙状态(包括多个待处理的复制任务),那么处于空闲状态的控制器可以向处于繁忙状态的控制器申请复制任务。为了方便描述,本实施例以第二控制器22为处于繁忙状态的控制器为例,所述第二控制器22至少包括两个复制任务。在实际应用中,第一控制器21可以分别向生产阵列20中的每个控制器发送查询消息,以获取每个控制器待处理的复制任务。再从中选择出一个处于繁忙状态的控制器,向其发送请求消息。或者,在生产阵列20中确定一个控制器,用于采集各个控制器待处理的复制任务的数量,并通知第一控制器21当前处于繁忙状态的控制器。步骤3:第二控制器22根据所述请求消息,分配一个或多个复制任务给第一控制器21。与第一控制器21类似,第二控制器的缓存中也保存有一个复制队列,所述复制队列中可以包括多个复制任务。第二控制器可以将其中的一个或多个复制任务分配给第一控制器21,以保证各个控制器之间的任务均衡。具体的,第二控制器22可以根据先进先出的原则,将最早进入所述队列的一个或多个复制任务分配给第一控制器21。所谓分配复制任务给第一控制器21,具体可以是将所述复制任务对应的数据发送给第一控制器21。所述复制任务对应的数据包括待复制给灾备阵列30的数据,本发明实施例将待复制给灾备阵列30的数据称为文件数据,也就是文件对应的数据块。由于所述复制任务可以用文件名来描述,因此通过所述文件名以及相应的元数据可以获取文件数据,并发送给第一控制器21。另外,除了所述文件数据之外,所述复制任务对应的数据还包括所述文件数据所属的文件的文件名以及所述文件数据的写入时间。所述文件数据的写入时间是指所述文件数据写入所述生产阵列的时间,它可能是一个具体的时间点,也可能是用于表示一段时间范围的时间区间,还有可能是表示所述文件的版本信息的版本号。本实施例并不对所述写入时间的含义和形式进行任何限定,只要能够通过各个写入时间的对比得出文件数据写入所述生产阵列的先后顺序即可。一个队列里面的多个复制任务,可能是针对同一个文件的复制任务(这些复制任务的文件名相同),也可能是针对不同文件的复制任务。以针对同一个文件的多个复制任务为例,所述多个复制任务对应针对所述文件的多次写入操作。本发明实施例可以利用一个序列号来记录对文件的多次写入操作。例如,当一个文件刚被创建时,也就是执行第一次写入操作时,其序列号为1;当所述文件被修改,也就是执行第二次写入操作时,其序列号为2。所谓执行针对一个文件的多个复制任务也就是将所述文件对应的多次写入操作同步至灾备阵列。因此,每次复制任务可以对应一个唯一的序列号。为了方便描述,本实施例将第二控制器22分配给第一控制器21的复制任务称为第一复制任务,将第二控制器22分配给第一控制器21的复制任务之外,队列中剩余的复制任务称为第二复制任务。例如,第一个复制任务以及第二个复制任务可分别包括如下信息:文件名序列号文件数据的写入时间0x1000012016.1.10x1000022016.1.2如上表所示,第一个复制任务对应的数据属于文件名为0x100的文件名,所述数据的写入时间是2016.1.1,所述第一个复制任务的序列号是001;第二个复制任务对应的数据属于文件名为0x100的文件名,所述数据的写入时间是2016.1.2,所述第二个复制任务的序列号是002。步骤4:第一控制器21接收第一个复制任务对应的数据,并且将所述数据发送给灾备阵列30。具体的,第二控制器22可以根据文件名以及对应的元数据,获取文件数据,将所述文件数据、文件名、序列号以及所述文件数据的写入时间发送给第一控制器21。由第一控制器21执行所述复制任务,也就是说将所述文件数据、文件名、序列号以及所述文件数据的写入时间发送给灾备阵列30。步骤5:第二控制器22将第二个复制任务对应的数据发送给灾备阵列30。具体的,第二控制器22根据所述第二个复制任务记录的文件名以及对应的元数据获取文件数据,并且将所述文件数据、文件名以及所述文件数据的写入时间发送给灾备阵列30。通过图3所示的实施方式,处于空闲状态的控制器可以向处于繁忙状态的控制器申请复制任务,处于繁忙状态的控制器将自己的复制任务分配一部分给处于空闲状态的控制器,由此,各个控制器可以并行地处理复制任务,提高了复制效率。下面介绍当各个控制器并行处理复制任务时,如何保证灾备阵列的文件与生产阵列的文件的一致性。由图3所示,第一控制器21执行第一个复制任务,将第一个复制任务对应的文件数据复制给了灾备阵列30;第二控制器22执行第二个复制任务,将第二个复制任务对应的文件数据复制给了灾备阵列30。为了方便描述,将第一个复制任务对应的文件数据简称为数据a,将第二个复制任务对应的文件数据简称为数据b。虽然第一控制器21和第二控制器22是并行地执行这两个复制任务,然而灾备阵列30往往并不是同时接收数据a和数据b的时间的。情况1:灾备阵列30先接收数据a,再接收数据b。灾备阵列30在接收数据a时,还会一并接收并保存数据a所属的文件的文件名,第一复制任务的序列号以及数据a的写入时间。灾备阵列可以遍历本地的文件的文件名,确定数据a不属于本地的任何一个文件。从而,创建一个新文件,所述新文件是数据a在生产阵列所属的文件的备份文件。所述备份文件的文件名可以与源文件(数据a在生产阵列所属的文件)一致。随后,灾备阵列30将数据a写入所述备份数据,并记录数据a的写入时间,所述写入时间与生产阵列20发送的数据a的写入时间相同。在灾备阵列30接收数据a之后,接收数据b。由于数据b所属的文件的文件名和上述备份文件的文件名相同,灾备阵列30不需再创建新的文件。接下来,灾备阵列30记录数据b对应的写入时间,所述写入时间与生产阵列20发送的数据b的写入时间相同。灾备阵列30比较数据b的写入时间和数据a的写入时间,确定数据b的写入时间晚于数据a的写入时间,因此数据a是所述备份文件的初始数据,而数据b是所述备份文件的修改数据。修改数据可以覆盖初始数据,灾备阵列执行将数据b写入所述备份文件的操作。情况2:灾备阵列30先接收数据b,再接收数据a。灾备阵列30在接收数据b时,遍历本地的文件的文件名,确定数据b不属于本地的任何一个文件。从而,创建一个新文件,所述新文件是数据b在生产阵列所属的文件的备份文件。所述备份文件的文件名可以与源文件(数据b在生产阵列所属的文件)一致。随后,灾备阵列30将数据b写入所述备份数据,并记录数据b的写入时间,所述写入时间与生产阵列20发送的数据b的写入时间相同。在灾备阵列30接收数据b之后,接收数据a。由于数据a所属的文件的文件名和上述备份文件的文件名相同,灾备阵列30不需再创建新的文件。接下来,灾备阵列30记录数据a对应的写入时间,所述写入时间与生产阵列20发送的数据a的写入时间相同。灾备阵列30比较数据b的写入时间和数据a的写入时间,确定数据a的写入时间早于数据b的写入时间,因此数据a是所述备份文件的初始数据,而数据b是所述备份文件的修改数据。初始数据不可以覆盖修改数据,灾备阵列不执行将数据a写入所述备份文件的操作。由此,灾备阵列30在接收针对同一个文件的多个数据时,可以根据各个数据的写入时间判断是否执行对备份文件的写入操作,其原则是,只能用写入时间较晚的数据覆盖写入时间较早的数据,由此保证了文件的一致性。另外,当生产阵列20中的文件被删除时,为了保持一致,灾备阵列30中的备份文件也需要被删除。具体的,生产阵列20可以向灾备阵列发送删除文件的指令,所述指令包括所述文件的文件名,以及最新的序列号(最后一次写入操作对应的序列号)。灾备阵列30接收所述删除文件的指令之后,根据所述文件名查找到相应的备份文件,判断所述备份文件的最新的序列号是否与生产阵列20发送的序列号相同。若相同,则灾备阵列30执行删除所述备份文件的操作;否则,不执行删除所述备份文件的操作。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1