云存储系统间的数据迁移的制作方法

文档序号:11732133阅读:193来源:国知局
云存储系统间的数据迁移的制作方法与工艺

本发明涉及数据迁移的技术领域,尤其涉及一种用于云存储系统间的数据迁移的技术。



背景技术:

云存储服务提供了稳定、安全、高效以及高扩展的存储服务,不仅直接面向用户提供服务,同时也为上层业务提供了强大支持,是公有云服务中一项非常重要的基础服务。

市场上云存储产品众多,随着市场或者云存储用户的需求的不断变动,云存储用户可能会选择使用不同的云存储服务。这就会产生数据在不同的云存储间进行迁移的需求,例如从阿里云oss将数据迁移到百度云bos等。对于云存储系统间的数据迁移,目前都是针对特定系统、特定场景下开发的不同工具,如七牛云的迁移工具qrsync、阿里云oss的importer等,这些迁移工具将数据从指定的源端读取,然后写到目的端,进而校验数据是否正确写入目的端,这样就完成了一个数据迁移的动作。此外,基于上述各种迁移工具的方法,均需要将数据写入一次磁盘,从而产生了不必要的磁盘i/o,且在迁移速度和规模上进行控制的难度高。

然而,在云存储系统中,数据量是非常大的,并且由于云存储系统间的数据迁移,其本质上是网络交互,有很多的不确定性,因此,数据迁移过程中需要考虑几个非常重要的方面:

1)在数据量非常大的情况下,如何能在不对当前系统造成影响下以最快的速度完成数据迁移---即性能高,速度可控,扩展性强的需求;

2)在网络等情况不确定因素繁多复杂的情况下,能够自动/准确的完成数据的迁移---即自动化,强校验的需求;

3)市面上有许多不同的云存储产品,如果为每两个云存储系统间数据迁移都开发一个要支持以上两点的迁移工具,显然开发量是重复而巨大的---即迁移框架的通用性的需求。

基于以上几个方面考虑,云存储系统间的数据迁移就有了对性能、灵活性、可扩展性、自动化、数据校验以及框架通用性等有了巨大的挑战。



技术实现要素:

本发明的目的是提供一种用于云存储系统间的数据迁移的方法、设备与系统以及计算机设备与计算机可读存储介质。

根据本发明的一个方面,提供了一种用于云存储系统间的数据迁移方法,其中,在用户设备,该方法包括以下步骤:

-根据待迁移的文件列表,生成其中每个文件的描述信息;

-将一个或多个数据迁移请求分别发送至可用的服务器,以由相应的服务器在不同云存储系统之间执行数据迁移,其中,每个数据迁移请求中包括对数据迁移的源端和目的端的指示信息以及一个或多个待迁移文件的描述信息。

根据本发明的一个方面,还提供了一种用于云存储系统间的数据迁移方法,其中,在网络设备,该方法包括以下步骤:

-根据自用户设备接收的数据迁移请求,确定所述数据迁移请求所指示的数据迁移的源端和目的端;

-从所述数据迁移请求中获取一个或多个待迁移文件的描述信息;

-按照所述一个或多个待迁移文件的描述信息,从所述源端获取所述一个或多个待迁移文件并将其写入所述目的端。

根据本发明的一个方面,还提供了一种用于云存储系统间数据迁移的装置,其中,该装置被装于用户设备,该装置包括:

用于根据待迁移的文件列表,生成其中每个文件的描述信息的装置;

用于将一个或多个数据迁移请求分别发送至可用的服务器的装置,以由相应的服务器在不同云存储系统之间执行数据迁移,其中,每个数据迁移请求中包括对数据迁移的源端和目的端的指示信息以及一个或多个待迁移文件的描述信息。

根据本发明的一个方面,还提供了一种用于云存储系统间数据迁移的装置,其中,该装置被装置于网络设备,该装置包括:

用于根据自用户设备接收的数据迁移请求,确定所述数据迁移请求所指示的数据迁移的源端和目的端的装置;

用于从所述数据迁移请求中获取一个或多个待迁移文件的描述信息的装置;

用于按照所述一个或多个待迁移文件的描述信息,从所述源端获取所述一个或多个待迁移文件并将其写入所述目的端的装置。

根据本发明的一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现根据本发明的一个方面的在用户设备用于云存储系统间的数据迁移的方法。

根据本发明的一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现根据本发明的一个方面的在网络设备用于云存储系统间的数据迁移的方法。

根据本发明的一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现根据本发明的一个方面的在用户设备用于云存储系统间的数据迁移的方法。

根据本发明的一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现根据本发明的一个方面的在网络设备用于云存储系统间的数据迁移的方法。

与现有技术相比,本发明提供了一种通用的云存储系统间进行数据迁移的方案。本发明使得在各种云存储系统之间数据迁移的核心流程得到了复用,并可对各种数据源端以及数据目的端进行扩展,从而提供了对性能、灵活性、可扩展性、自动化、数据校验以及框架通用性等各项性能要求均可以满足的在不同云存储系统之间进行数据迁移的方案。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1示出适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;

图2示出根据本发明一个实施例的一种用于云存储系统间的数据迁移方法的流程图;

图3示出根据本发明一个实施例的一种用于云存储系统间的数据迁移系统的示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的程序指令来执行预定处理过程,或是由asic、fpga、dsp等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人计算机(pc)、笔记本电脑、平板电脑、智能手机等。

所述计算机设备例如包括用户设备与网络设备。其中,所述用户设备包括但不限于个人计算机(pc)、笔记本电脑、移动终端等,所述移动终端包括但不限于智能手机、pda等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(cloudcomputing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、vpn网络等。

需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。

本文后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。

这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。

应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。

这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。

还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。

在云存储间进行数据迁移,从本质上来说就是将数据从源端读取之后,再写入目的端。

因此,数据源端知道有哪些数据需要进行迁移,并且有获取数据的方法以及获取数据“摘要”(描述该数据的一些基本信息)的方法;数据目的端需要有存放数据的方法,以及获取数据“摘要”的方法。

据此,本发明提出了一种通用的数据迁移框架。该数据迁移框架由3个主要部分组成:数据源端(datasource)、数据目的端(datadestination)以及数据迁移系统(包括客户端和迁移服务器)。进一步地,本发明还定义了描述数据的基本信息的数据“摘要”(fd)。

如前所述,无论是从哪个云存储服务将数据迁移到另一个云存储服务,整个过程就是读取数据以及写入数据,可以通过控制并发数来实现对迁移速度的控制。并且,整个框架核应是业务无关的,数据迁移系统根据数据源端给出的fd用迁移服务器的写入方法将数据写入。整个读取数据和写入数据的流程中不需要将源端的数据写入一次磁盘,而是将数据通过迁移服务器直接传给迁移服务器的方法,写入目的端。进一步地,在写入目的端完成后,数据迁移系统还可以按照其校验(verify)方法对写入数据进行校验,因此,verify方法是业务相关的,就是实现该框架的业务逻辑需要实现的。

本发明所提出的数据迁移框架,可以扩展至各种数据源端以及数据目的端。由于在各种云存储系统之间进行数据迁移的核心流程得到了复用,当有新的迁移需求时,按照本发明所提出的数据迁移框架的规定来实现源端、目的端以及相应的数据迁移系统即可,例如按照新的源端来生成fd,按照新的目的端的写入方法进行数据写入等。

在云存储系统中,需要迁移的数据量是非常大的,通常都是tb至pb级别的,所以需要多个同构的迁移核心来完成这些任务。本发明提出了一种基于c-s结构可横向扩展迁移能力的通用数据迁移方案。其中,迁移服务器和迁移客户端使用开源框架thriftrpc进行通信,迁移核心在迁移服务器上实现,实际的数据迁移任务在迁移服务器上完成,多个同构的迁移服务器来接收客户端发来的迁移请求,在迁移服务器上可以实现多种不同的数据源和目的端之间的数据迁移,接受各种不同类型的数据迁移请求。

下面结合附图对本发明作进一步详细描述。

本发明提供了一种用于云存储系统间的数据迁移系统。该数据迁移系统包括客户端和服务器。其中,客户端被典型地装置于用户设备(如个人计算机)中。

在此,用户设备和服务器均可以为通用计算设备,其中分别存储有各自运行来配合实现本发明的数据迁移方法的计算机程序。

图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未示出,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图1中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理。例如,当一计算机系统/服务器12为用户设备,其中存储有用于执行本发明的客户端的各项功能和处理的计算机程序,至少另一计算机系统/服务器12为服务器,其中存储有用于执行本发明的服务器的各项功能和处理的计算机程序,当用户设备的处理单元16和服务器的处理单元分别执行相应设备中的计算机程序时,本发明的用于云存储系统间的数据迁移方法被实现。

以下将详细描述本发明在客户端和服务器分别实现的具体功能/步骤。

图2示出根据本发明的一个实施例,其中具体示出一种用于云存储系统间的数据迁移方法。

该数据迁移方法由本发明提供的数据迁移系统来执行。该数据迁移系统包括客户端和网络端。客户端为迁移任务的发起方,网络端为迁移任务的执行方。其中,客户端典型地装置于各用户设备中,网络端典型地如迁移服务器。为便于说明,本说明书中客户端与用户设备等同使用,网络端与迁移服务器等同使用。

如图2所示,在步骤s1中,根据待迁移的文件列表,客户端生成其中每个文件的描述信息;在步骤s2中,客户端将一个或多个数据迁移请求分别发送至可用的服务器,以由相应的服务器在不同云存储系统之间执行数据迁移,其中,每个数据迁移请求中包括对数据迁移的源端和目的端的指示信息以及一个或多个待迁移文件的描述信息;在步骤s3中,网络端根据自用户设备接收的数据迁移请求,确定所述数据迁移请求所指示的数据迁移的源端和目的端;在步骤s4中,网络端从所述数据迁移请求中获取一个或多个待迁移文件的描述信息;在步骤s5中,网络端按照所述一个或多个待迁移文件的描述信息,从所述源端获取所述一个或多个待迁移文件并将其写入所述目的端。

具体地,在步骤s1中,根据待迁移的文件列表,客户端生成其中每个文件的描述信息。

在此,待迁移的文件列表例如可以依赖于数据源端来生成。例如,用户拟将其存储于阿里云oss(数据源端)的多个文件迁移至百度云bos(数据目的端),文件列表的格式可以由用户根据预配置的规则来定义,将列表格式schema填写在迁移任务配置当中,生成好的文件列表以文件的形式被提供给数据迁移系统的客户端来读取。

典型地,文件列表中的每一行对应于一个待迁移文件,其中包含有该待迁移文件的基本信息。

客户端对每一行的信息进行解析,以生成相应待迁移文件的描述信息。该描述信息例如可以标记为filedescriptor,简称fd,也可以被理解为待迁移文件的摘要信息。

在此,fd可以是一个结构化的数据类型,并可以通过map的方式扩展,从而可以描述几乎所有的待迁移数据的元信息。

典型地,fd例如可以包括文件名(name)、大小(size)、内容验证信息(例如md5)。优选地,fd例如还可以包括标识(id)、uri和鉴权信息等。其中,鉴权信息例如可以包括用户在源端的用户名和密码。

优选地,客户端可以缓存fd,例如将所生成的fd放入一个fd队列(fdqueue)中,如果该fdqueue已满,则等待,否则直接放入fdqueue中,直到文件列表读取完。

在步骤s2中,客户端将一个或多个数据迁移请求分别发送至可用的服务器,以由相应的服务器在不同云存储系统之间执行数据迁移,其中,每个数据迁移请求中包括对数据迁移的源端和目的端的指示信息以及一个或多个待迁移文件的描述信息。

在此,可用的服务器从预配置的服务器列表中确定。例如,服务器列表以配置的方式加载到发起迁移任务的客户端中,从而客户端可以检查该服务器列表中的服务器是否可用。这可以让服务器列表中的服务器资源被最大化利用,同时管理不可用的服务器。典型地,该服务器列表可以由客户端中的一个服务器管理装置(servermanager)来维护。

其中,一个数据迁移请求中可以包括对一个或多个待迁移文件的指示。优选地,客户端从fdqueue读取待迁移文件的fd,并将其包含在数据迁移请求中发送至相应的服务器。

例如,客户端从fdqueue中获取fd(单个文件的迁移任务),如果fdqueue为空或者读取到的fd数量没有达到一定的阈值,则继续读或者等待;当从fdqueue读取到满足阈值数量的fd后,客户端就向服务器管理装置申请一个可用的服务器,并向该服务器发送一个数据迁移请求,该数据迁移请求对应于这一批次的迁移子任务,如果服务器管理装置管理的所有服务器都忙或者所有服务器都不可用,则阻塞等待直到有可用的服务器,再将数据迁移请求发送出去,直至文件列表已经读完并且所有数据迁移请求均已发出。

在步骤s3中,迁移服务器根据自用户设备接收的数据迁移请求,确定该数据迁移请求所指示的数据迁移的源端和目的端。

在此,数据迁移系统可以根据不同的源端和目的端来定义不同的请求类型。

典型地,客户端与迁移服务器(网络端)之间通过thriftrpc协议进行通信,从而迁移服务器可以通过rpc接口类型来区分数据迁移请求的类型,以确定此次数据迁移的源端和目的端。

在步骤s4中,迁移服务器从数据迁移请求中获取一个或多个待迁移文件的描述信息。

例如,迁移服务器从数据迁移请求中逐个读取各待迁移文件的fd。

优选地,客户端所发送的数据迁移请求中还包括对待迁移文件的迁移方式。据此,迁移服务器根据数据迁移请求中指定的迁移方式,确定数据迁移请求所指示的待迁移文件中需要实际执行数据迁移的待迁移文件,进而获取这些实际需要执行数据迁移的一个或多个待迁移文件的描述信息。

例如,用户在客户端发起数据迁移任务时,可以配置迁移方式,诸如不重复方式、更新方式和覆盖方式。其中,不重复方式例如对目的端已有的文件不再迁移,具体如待迁移的源端文件包括a、b和c,目的端已有c,则迁移服务器仅迁移a和b。更新方式例如对比待迁移文件在源端和目的端的版本信息,当源端有更新时,迁移服务器则对该文件进行迁移,具体如文件a在源端的最后更新日期为2017年2月13日,而在目的端的最后更新日期为2017年2月1日,迁移服务器则对该文件进行迁移。覆盖方式例如无论目的端是否存在该文件,均对该文件进行迁移,具体如迁移列表包括文件a、b和c,迁移服务器则直接将这些文件从源端迁移至目的端,如果目的端已有部分文件,迁移服务器则直接进行覆盖。

在此,本领域技术人员应能理解,尽管此处给出了3种迁移方式的示例,但这仅应被理解为对本发明的解释说明,而不应被理解为对本发明的任何限制,其他任何迁移方式如可适用于本发明,均应被包含在本发明的专利保护范围之内。

据此,迁移服务器根据数据迁移请求中指定的迁移方式,确定实际执行数据迁移的待迁移文件,并从数据迁移请求中提取该(等)待迁移文件的fd。

在步骤s5中,迁移服务器按照所提取的一个或多个待迁移文件的描述信息,从源端获取该(等)待迁移文件并将其写入目的端。

例如,迁移服务器根据各待迁移文件的fd,从源端获取各待迁移文件并按照目的端的写入(putfile)方法将数据写入目的端。从而,整个读取数据和写入数据的流程中不需要将源端的数据写入一次磁盘,而是将数据通过迁移服务器直接传给目的端。

在此,迁移服务器可以并发地执行对多个文件的迁移。优选地,如果文件的大小超过一定的阈值,迁移服务器可以对文件进行切块,进而对各文件分块执行数据迁移。

优选地,在写入完成后,在步骤s6中(未示出),迁移服务器可以根据描述信息中待迁移文件的内容验证信息以及目的端返回的该待迁移文件的内容验证信息,对待迁移文件进行校验。

例如,fd中可以包括待迁移文件的md5值,目的端在成功写入待迁移文件后也会对该文件计算其md5值并返回给迁移服务器,据此,迁移服务器可以比较两个md5值,以对该待迁移文件校验其完整性和一致性。

更优选地,在步骤s6的校验之前,迁移服务器对从源端获取的待迁移文件计算内容验证信息,并将所获得的内容验证信息加入该待迁移文件的描述信息。

在此,本领域技术人员应能理解,尽管此处以md5值作为待迁移文件的内容验证信息的示例,但这仅应被理解为对本发明的解释说明,而不应被理解为对本发明的任何限制,其他任何基于待迁移文件内容所生成的内容验证信息或其生成算法如可适用于本发明,均应被包含在本发明的专利保护范围之内。

根据图2所示方法的一个优选实施例,在迁移服务器完成对目的端的数据写入之后,在步骤s7中(未示出),迁移服务器合并各待迁移文件的迁移结果,将合并后的迁移结果信息发送至用户设备。相应地,客户端从迁移服务器接收到数据迁移请求所对应的迁移结果信息。

例如,迁移服务器记录每个待迁移文件的迁移结果,并将一个数据迁移请求所对应的各待迁移文件的迁移结果进行合并,进而将合并后的迁移结果信息发送至该数据迁移请求所对应的客户端。

更优选地,在步骤s8中(未示出),客户端汇总从各迁移服务器接收的迁移结果信息,以生成此次迁移任务的迁移进度信息。

在此,一个待迁移的文件列表对应于一个迁移任务,其中每个待迁移文件被作为一个子任务,一个数据迁移请求中包括一个或多个迁移子任务,从而一个迁移任务可能被拆分多个迁移子任务并被包含在多个数据迁移请求中被发送至多个迁移服务器。因此,客户端从这些迁移服务器接收其各自所执行的迁移结果信息,以汇总后获得此次迁移任务的迁移进度信息,例如,已完成迁移的文件数量x、正在执行迁移的文件数量x以及尚未执行迁移的文件数据z。该迁移进度信息可以日志的形式输出。

更优选地,在步骤s9中(未示出),客户端根据各迁移服务器对数据迁移请求的响应时间,实时调整此次迁移任务的压力分布。

在此,迁移服务器对数据迁移请求的响应时间例如可以根据数据迁移请求的发送时间与迁移结果信息的接收时间之间的间隔来确定。

客户端根据各迁移服务器的响应时间,可以实时来调整此次迁移任务的压力分布,诸如迁移(子)任务的启动、暂停、迁移速度等。其中,迁移速度可以通过配置各迁移服务器中子任务的并发数量来调整。

此外,客户端的各项迁移任务配置信息都在迁移过程中进行热加载,以达到实时控制对迁移任务进行速度调整的目的。其中,迁移任务配置信息包括但不限于待迁移的文件列表、迁移、方式、服务器列表以及迁移的速度控制。

图3示出根据本发明的一个实施例,其中具体示出一种用于云存储系统间的数据迁移系统。

如图3所示,该数据迁移系统包括客户端和网络端。客户端为迁移任务的发起方,网络端为迁移任务的执行方。其中,客户端典型地装置于各用户设备中,网络端典型地如迁移服务器。为便于说明,本说明书中客户端与用户设备等同使用,网络端与迁移服务器等同使用。

参阅图3,客户端31包括fd生成装置311和请求发送装置312;迁移服务器32包括请求接收装置321、请求解析装置322和迁移执行装置323。

具体地,在客户端31,根据待迁移的文件列表,fd生成装置311生成其中每个文件的描述信息;随后,请求发送装置312将一个或多个数据迁移请求分别发送至可用的服务器,以由相应的服务器在不同云存储系统之间执行数据迁移,其中,每个数据迁移请求中包括对数据迁移的源端和目的端的指示信息以及一个或多个待迁移文件的描述信息。之后,在迁移服务器32,请求接收装置321自用户设备接收数据迁移请求;随后,请求解析装置322确定所述数据迁移请求所指示的数据迁移的源端和目的端,以及从所述数据迁移请求中获取一个或多个待迁移文件的描述信息;接着,迁移执行装置323根据所述一个或多个待迁移文件的描述信息,从所述源端获取所述一个或多个待迁移文件并将其写入所述目的端。

客户端31

fd生成装置311根据待迁移的文件列表,生成其中每个文件的描述信息。

在此,待迁移的文件列表例如可以依赖于数据源端来生成。例如,用户拟将其存储于阿里云oss(数据源端)的多个文件迁移至百度云bos(数据目的端),文件列表的格式可以由用户根据预配置的规则来定义,将列表格式schema填写在迁移任务配置当中,生成好的文件列表以文件的形式被提供给客户端中的fd生成装置311来读取。

典型地,文件列表中的每一行对应于一个待迁移文件,其中包含有该待迁移文件的基本信息。

fd生成装置311对每一行的信息进行解析,以生成相应待迁移文件的描述信息。该描述信息例如可以标记为filedescriptor,简称fd,也可以被理解为待迁移文件的摘要信息。

在此,fd可以是一个结构化的数据类型,并可以通过map的方式扩展,从而可以描述几乎所有的待迁移数据的元信息。

典型地,fd例如可以包括文件名(name)、大小(size)、内容验证信息(例如md5)。优选地,fd例如还可以包括标识(id)、uri和鉴权信息等。其中,鉴权信息例如可以包括用户在源端的用户名和密码。

优选地,客户端还可以包括一fd缓存装置(未示出),用于缓存fd,例如fd生成装置311将所生成的fd放入该fd缓存装置中的fd队列(fdqueue)中,如果该fdqueue已满,则等待,否则直接放入fdqueue中,直到文件列表读取完。

随后,请求发送装置312将一个或多个数据迁移请求分别发送至可用的服务器,以由相应的服务器在不同云存储系统之间执行数据迁移,其中,每个数据迁移请求中包括对数据迁移的源端和目的端的指示信息以及一个或多个待迁移文件的描述信息。

在此,可用的服务器从预配置的服务器列表中确定。例如,服务器列表以配置的方式加载到发起迁移任务的客户端中,从而客户端可以检查该服务器列表中的服务器是否可用。这可以让服务器列表中的服务器资源被最大化利用,同时管理不可用的服务器。典型地,该服务器列表可以由客户端中的一个服务器管理装置(servermanager)来维护。

其中,一个数据迁移请求中可以包括对一个或多个待迁移文件的指示。优选地,请求发送装置312从fdqueue读取待迁移文件的fd,并将其包含在数据迁移请求中发送至相应的服务器。

例如,请求发送装置312从fdqueue中获取fd(单个文件的迁移任务),如果fdqueue为空或者读取到的fd数量没有达到一定的阈值,则继续读或者等待;当从fdqueue读取到满足阈值数量的fd后,请求发送装置312就向服务器管理装置申请一个可用的服务器,并向该服务器发送一个数据迁移请求,该数据迁移请求对应于这一批次的迁移子任务,如果服务器管理装置管理的所有服务器都忙或者所有服务器都不可用,则阻塞等待直到有可用的服务器,再将数据迁移请求发送出去,直至文件列表已经读完并且所有数据迁移请求均已发出。

迁移服务器32

请求接收装置321自用户设备接收数据迁移请求。

随后,请求解析装置322根据数据迁移请求,确定该数据迁移请求所指示的数据迁移的源端和目的端。

在此,数据迁移系统可以根据不同的源端和目的端来定义不同的请求类型。

典型地,客户端31与迁移服务器(网络端)32之间通过thriftrpc协议进行通信,从而请求解析装置322可以通过rpc接口类型来区分数据迁移请求的类型,以确定此次数据迁移的源端和目的端。

请求解析装置322从数据迁移请求中获取一个或多个待迁移文件的描述信息。

例如,请求解析装置322从数据迁移请求中逐个读取各待迁移文件的fd。

优选地,请求解析装置322还可以进一步包括两个单元来分别执行对数据迁移的源端和目的端的确定以及对fd的读取。

优选地,客户端31所发送的数据迁移请求中还包括对待迁移文件的迁移方式。据此,请求解析装置322根据数据迁移请求中指定的迁移方式,确定数据迁移请求所指示的待迁移文件中需要实际执行数据迁移的待迁移文件,进而获取这些实际需要执行数据迁移的一个或多个待迁移文件的描述信息。

例如,用户在客户端31发起数据迁移任务时,可以配置迁移方式,诸如不重复方式、更新方式和覆盖方式。其中,不重复方式例如对目的端已有的文件不再迁移,具体如待迁移的源端文件包括a、b和c,目的端已有c,则迁移服务器32仅迁移a和b。更新方式例如对比待迁移文件在源端和目的端的版本信息,当源端有更新时,迁移服务器32则对该文件进行迁移,具体如文件a在源端的最后更新日期为2017年2月13日,而在目的端的最后更新日期为2017年2月1日,迁移服务器32则对该文件进行迁移。覆盖方式例如无论目的端是否存在该文件,均对该文件进行迁移,具体如迁移列表包括文件a、b和c,迁移服务器32则直接将这些文件从源端迁移至目的端,如果目的端已有部分文件,迁移服务器32则直接进行覆盖。

在此,本领域技术人员应能理解,尽管此处给出了3种迁移方式的示例,但这仅应被理解为对本发明的解释说明,而不应被理解为对本发明的任何限制,其他任何迁移方式如可适用于本发明,均应被包含在本发明的专利保护范围之内。

据此,请求解析装置322根据数据迁移请求中指定的迁移方式,确定实际执行数据迁移的待迁移文件,并从数据迁移请求中提取该(等)待迁移文件的fd。优选地,请求解析装置322也可包括一特定的过滤单元来执行该对实际迁移文件的筛选功能。

接着,迁移执行装置323按照请求解析装置322所提取的一个或多个待迁移文件的描述信息,从源端获取该(等)待迁移文件并将其写入目的端。

例如,迁移执行装置323根据各待迁移文件的fd,从源端获取各待迁移文件并按照目的端的写入(putfile)方法将数据写入目的端。从而,整个读取数据和写入数据的流程中不需要将源端的数据写入一次磁盘,而是将数据通过迁移执行装置323直接传给目的端。

在此,迁移执行装置323可以并发地执行对多个文件的迁移。优选地,如果文件的大小超过一定的阈值,迁移执行装置323可以对文件进行切块,进而对各文件分块执行数据迁移。

优选地,迁移服务器32还可以包括一内容校验装置(未示出)。在写入完成后,内容校验装置可以根据描述信息中待迁移文件的内容验证信息以及目的端返回的该待迁移文件的内容验证信息,对待迁移文件进行校验。

例如,fd中可以包括待迁移文件的md5值,目的端在成功写入待迁移文件后也会对该文件计算其md5值并返回给迁移服务器32,据此,内容校验装置可以比较两个md5值,以对该待迁移文件校验其完整性和一致性。

更优选地,在校验之前,内容校验装置对从源端获取的待迁移文件计算内容验证信息,并将所获得的内容验证信息加入该待迁移文件的描述信息。

在此,本领域技术人员应能理解,尽管此处以md5值作为待迁移文件的内容验证信息的示例,但这仅应被理解为对本发明的解释说明,而不应被理解为对本发明的任何限制,其他任何基于待迁移文件内容所生成的内容验证信息或其生成算法如可适用于本发明,均应被包含在本发明的专利保护范围之内。

根据图3所示系统的一个优选实施例,迁移服务器32还可以包括一结果合并装置(未示出)和一结果发送装置(未示出),客户端31还可以包括一结果接收装置(未示出)。在迁移服务器完成对目的端的数据写入之后,结果合并装置合并各待迁移文件的迁移结果,结果发送装置将合并后的迁移结果信息发送至客户端31。相应地,结果接收装置从迁移服务器32接收到数据迁移请求所对应的迁移结果信息。

优选地,结果合并装置可以与请求接收装置321集成在一起。

例如,结果合并装置记录每个待迁移文件的迁移结果,并将一个数据迁移请求所对应的各待迁移文件的迁移结果进行合并,进而结果发送装置将合并后的迁移结果信息发送至该数据迁移请求所对应的客户端31。

更优选地,客户端31还可以包括一结果汇总装置(未示出)。结果汇总装置汇总从各迁移服务器32接收的迁移结果信息,以生成此次迁移任务的迁移进度信息。

在此,一个待迁移的文件列表对应于一个迁移任务,其中每个待迁移文件被作为一个子任务,一个数据迁移请求中包括一个或多个迁移子任务,从而一个迁移任务可能被拆分多个迁移子任务并被包含在多个数据迁移请求中被发送至多个迁移服务器。因此,结果接收装置从这些迁移服务器接收其各自所执行的迁移结果信息,结果汇总装置汇总后获得此次迁移任务的迁移进度信息,例如,已完成迁移的文件数量x、正在执行迁移的文件数量x以及尚未执行迁移的文件数据z。该迁移进度信息可以日志的形式输出。

更优选地,客户端31还可以包括一压力调整装置(未示出)。压力调整装置根据各迁移服务器32对数据迁移请求的响应时间,实时调整此次迁移任务的压力分布。

在此,迁移服务器32对数据迁移请求的响应时间例如可以根据数据迁移请求的发送时间与迁移结果信息的接收时间之间的间隔来确定。

压力调整装置根据各迁移服务器的响应时间,可以实时来调整此次迁移任务的压力分布,诸如迁移(子)任务的启动、暂停、迁移速度等。其中,迁移速度可以通过配置各迁移服务器32中子任务的并发数量来调整。

此外,客户端31的各项迁移任务配置信息都在迁移过程中进行热加载,以达到实时控制对迁移任务进行速度调整的目的。其中,迁移任务配置信息包括但不限于待迁移的文件列表、迁移、方式、服务器列表以及迁移的速度控制。

本发明可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

用于执行本发明操作的计算机程序代码包括两部分,以分别用于在用户设备和服务器上被执行。当分别适用于用户设备和服务器的计算机程序代码被执行时,本发明的方法被实现。

需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,本发明的各个装置可采用专用集成电路(asic)或任何其他类似硬件设备来实现。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1