数据复制方法和装置制造方法

文档序号:6518089阅读:120来源:国知局
数据复制方法和装置制造方法
【专利摘要】本发明实施例提供一种数据复制方法和装置。该方法包括:接收应用程序发送的数据复制指令,其中,源端文件为第一磁盘的第一数据,目标端为第二磁盘,在第二磁盘分配第一数据所占容量的第一空间,并在第一空间中写入指向第一磁盘的第一数据的指针,向应用程序发送复制完成应答消息,复制完成应答消息用于指示:复制第一磁盘的第一数据到第二磁盘的数据复制过程完成,第二磁盘处于可用状态,通过同步线程将第一磁盘的第一数据复制到第一空间。本发明实施例提供的数据复制方法和装置,对于用户界面而言,可实现秒级完成复制,从而极大提高了数据复制和迁移的速度。
【专利说明】数据复制方法和装置
【技术领域】
[0001 ] 本发明实施例涉及通信【技术领域】,尤其涉及一种数据复制方法和装置。
【背景技术】
[0002]虚拟化数据中心已经成为数据中心发展的趋势,据统计数据显示,企业应用运行于虚拟机平台上的数量已经超过了直接运行在物理机上的数量。在虚拟化数据中心内部,频繁进行的虚拟机操作有虚拟机的迁移,虚拟机的迁移通常包括主机侧的迁移和存储侧的迁移,主机侧的迁移是指虚拟机文件所在的磁盘(LUN)不变,运行该虚拟机的主机从A切换至B,存储侧的迁移是指运行虚拟机的主机不变,虚拟机文件从磁盘A迁移至磁盘B。另外,虚拟机克隆在部署虚拟机时也被广泛使用,虚拟机克隆涉及的是虚拟机文件在存储侧的拷贝。
[0003]当前主流的虚拟化技术是VMware和Hyper-V,这两种技术针对虚拟机文件的迁移和克隆分别是基于 VAAI (Vstorage APIs for Array Integration)和 ODX (OffloadedData Transfer)接口实现,这两种技术是将传统虚拟机文件转发过程卸载至共享存储阵列实现,不再经过服务器进行转发,只需要实时同步复制进度至服务器。
[0004]但是,上述两种技术的数据复制过程与虚拟机容量大小强相关,一般的整个迁移和克隆过程可能持续数十分钟,若在虚拟机容量非常大的情况下,整个迁移和克隆过程可达数小时,数据复制速度较低,且在迁移和克隆的过程中目标虚拟机是不可用的,必须等到整个过程结束才可以使用。

【发明内容】

[0005]本发明实施例提供一种数据复制方法和装置,可提高数据复制和迁移的速度。
[0006]第一方面,本发明实施例提供一种数据复制方法,包括:
[0007]接收应用程序发送的数据复制指令,其中,源端文件为第一磁盘的第一数据,目标端为第二磁盘;
[0008]在所述第二磁盘分配所述第一数据所占容量的第一空间,并在所述第一空间中写入指向所述第一磁盘的第一数据的指针;
[0009]向所述应用程序发送复制完成应答消息,所述复制完成应答消息用于指示:复制所述第一磁盘的第一数据到所述第二磁盘的数据复制过程完成,所述第二磁盘处于可用状态;
[0010]通过同步线程将所述第一磁盘的第一数据复制到所述第一空间。
[0011]在第一方面的第一种可能的实施方式中,所述在所述第二磁盘分配所述第一数据所占容量的第一空间,并写入指向所述第一磁盘的第一数据的指针之前,还包括:
[0012]从共享存储阵列的文件块资源池中构造第二空间,并在所述第二空间中写入指向所述第一磁盘的第一数据的指针,用于在数据复制过程完成之前,读取数据时通过所述指针定位至所述第一磁盘进行数据的读取,写入数据时直接写入所述第二空间;[0013]所述通过同步线程将所述第一磁盘的第一数据复制到所述第一空间之后,还包括:
[0014]将数据复制完成之前写入所述第二空间的数据同步至所述第一磁盘;
[0015]在所述第一空间读取数据和写入数据。
[0016]结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述在所述第一空间读取数据和写入数据之后,还包括:
[0017]释放所述第二空间。
[0018]结合第一方面,在第一方面的第三种可能的实施方式中,所述数据复制指令为数据剪切指令,所述通过同步线程将所述第一磁盘的第一数据复制到所述第一空间之后,还包括:
[0019]删除所述第一磁盘的第一数据。
[0020]第二方面,本发明实施例提供一种数据复制装置,包括:
[0021]接收模块,用于接收应用程序发送的数据复制指令,其中,源端文件为第一磁盘的第一数据,目标端为第二磁盘;
[0022]处理模块,用于在所述第二磁盘分配所述第一数据所占容量的第一空间,并在所述第一空间中写入指向所述第一磁盘的第一数据的指针;
[0023]发送模块,用于向所述应用程序发送复制完成应答消息,所述复制完成应答消息用于指示:复制所述第一磁盘的第一数据到所述第二磁盘的数据复制过程完成,所述第二磁盘处于可用状态;
[0024]复制模块,用于通过同步线程将所述第一磁盘的第一数据复制到所述第一空间。
[0025]在第二方面的第一种可能的实施方式中,所述处理模块还用于:
[0026]在所述第二磁盘分配所述第一数据所占容量的第一空间,并写入指向所述第一磁盘的第一数据的指针之前,从共享存储阵列的文件块资源池中构造第二空间,并在所述第二空间中写入指向所述第一磁盘的第一数据的指针,用于在数据复制过程完成之前,读取数据时通过所述指针定位至所述第一磁盘进行数据的读取,写入数据时直接写入所述第二空间;
[0027]所述处理模块还用于:在所述复制模块通过同步线程将所述第一磁盘的第一数据复制到所述第一空间之后,将数据复制完成之前写入所述第二空间的数据同步至所述第一
磁盘;
[0028]在所述第一空间读取数据和写入数据。
[0029]结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述处理模块还用于:
[0030]在所述复制模块通过同步线程将所述第一磁盘的第一数据复制到所述第一空间之后,释放所述第二空间。
[0031]结合第二方面,在第二方面的第三种可能的实施方式中,所述数据复制指令为数据剪切指令,所述处理模块还用于:
[0032]在所述复制模块通过同步线程将所述第一磁盘的第一数据复制到所述第一空间之后,删除所述第一磁盘的第一数据。
[0033]本发明实施例提供的数据复制方法,通过共享存储阵列接收到应用程序发送的数据复制指令后,在源端磁盘分配所要复制的数据所占容量的空间,并在该空间中写入指向源端磁盘的所要复制的数据的指针,然后向应用程序发送复制完成应答消息,指示将数据复制到目标端的数据复制过程完成,目标端磁盘可用,对于用户界面而言,可实现秒级完成复制,从而极大提高了数据复制和迁移的速度。
【专利附图】

【附图说明】
[0034]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0035]图1为本发明数据复制方法实施例一的流程图;
[0036]图2为本发明数据复制方法实施例二的流程图;
[0037]图3为本发明数据复制方法实施例三的流程图;
[0038]图4为本发明数据复制装置实施例一的结构示意图。
【具体实施方式】
[0039]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040]本发明实施例提供的数据复制方法,主要用于虚拟机文件的克隆和虚拟机文件的迁移,还可以用于其他场景下数据量大的数据复制,例如虚拟机操作系统(OS)内部的文件复制等,下面通过几个实施例来说明本发明实施例提供的数据复制方法。
[0041]图1为本发明数据复制方法实施例一的流程图,如图1所示,本实施例的执行主体为共享存储阵列,本实施例的方法可以包括:
[0042]S101、接收应用程序发送的数据复制指令,其中,源端文件为第一磁盘的第一数据,目标端为第二磁盘。
[0043]具体地,共享存储阵列接收应用程序发送的数据复制指令,数据复制指令包括源端和目标端的标识,指示共享存储阵列将源端的文件复制或迁移到目标端。
[0044]S102、在第二磁盘分配第一数据所占容量的第一空间,并在第一空间中写入指向第一磁盘的第一数据的指针。
[0045]S103、向应用程序发送复制完成应答消息,复制完成应答消息用于指示:复制第一磁盘的第一数据到第二磁盘的数据复制过程完成,第二磁盘处于可用状态。
[0046]此时,对于用户界面来说,复制过程已经完成,速度上可实现秒级完成复制。而目标文件的读取1/0,可通过指针定位至源端文件(即第一磁盘的第一数据)进行读取,写入数据的操作写I/O则写入第二磁盘的第一空间。
[0047]S104、通过同步线程将第一磁盘的第一数据复制到第一空间。
[0048]在S103之后,目标端即是可用的,可进行数据的读取和写入,之后可进行通过同步线程将第一磁盘的第一数据复制到第一空间,因此不影响目标端的使用。[0049]进一步地,在第一种可实施的方式中,若要保存源端的文件,另外复制生成目标端的文件,例如虚拟机文件的克隆,目标端的文件与下发数据复制指令时刻的源端的文件保持一致,此时,在S102之前,还包括:
[0050]从共享存储阵列的文件块资源池中构造第二空间,并在第二空间中写入指向第一磁盘的第一数据的指针,用于在数据复制过程完成之前,读取数据时通过指针定位至第一磁盘进行数据的读取,写入数据时直接写入第二空间。
[0051]S104之后,还包括:
[0052]将数据复制完成之前写入第二空间的数据同步至第一磁盘。
[0053]在第一空间读取数据和写入数据。
[0054]此时克隆过程已经完成,进一步地,还包括:释放第二空间。
[0055]进一步地,在第二种可实施的方式中,当数据复制指令为数据剪切指令时,例如虚拟机文件的迁移,在S104之后,还包括:
[0056]删除第一磁盘的第一数据。
[0057]本实施例提供的数据复制方法,通过共享存储阵列接收到应用程序发送的数据复制指令后,在源端磁盘分配所要复制的数据所占容量的空间,并在该空间中写入指向源端磁盘的所要复制的数据的指针,然后向应用程序发送复制完成应答消息,指示将数据复制到目标端的数据复制过程完成,目标端磁盘可用,最后通过同步线程将第一磁盘的第一数据复制到第一空间。对于用户界面而言,可实现秒级完成复制,从而极大提高了数据复制和迁移的速度。
[0058]下面采用两个具体的实施例,对图1所示方法实施例的技术方案进行详细说明。
[0059]图2为本发明数据复制方法实施例二的流程图,本实施例以虚拟机迁移为例,在数据迁移完成后,要删除源端的虚拟机文件,如图2所示,本实施例的方法可以包括:
[0060]S201、共享存储阵列接收应用程序发送的数据剪切指令,将源端虚拟机文件剪切至目标端虚拟机。
[0061]S202、在目标端虚拟机磁盘分配要复制的文件所占容量的空间Target File,并在Target File中写入指向源端虚拟机文件的指针。
[0062]S203、向应用程序发送复制完成应答消息,复制完成应答消息用于指示:数据复制过程完成,目标端虚拟机处于可用状态。
[0063]此时,对于用户界面来说,复制过程已经完成,速度上可实现秒级完成复制。而目标端虚拟机的读取1/0,可通过指针定位至源端虚拟机进行读取,写入数据的操作写I/O则写入 Target File。
[0064]S204、启动源端虚拟机文件至目标端虚拟机文件的同步线程,通过同步线程将目标端虚拟机文件复制到Target File。同步完成后,目标端虚拟机文件的读取和写入只在Target File 进行。
[0065]S205、删除源端虚拟机文件。
[0066]图3为本发明数据复制方法实施例三的流程图,本实施例以虚拟机克隆为例,要保存源端虚拟机文件,另外复制生成目标端虚拟机文件,目标端虚拟机文件与下发数据复制指令时刻的源端虚拟机文件应保持一致,如图3所示,本实施例的方法可以包括:
[0067]S301、共享存储阵列接收应用程序发送的将源端虚拟机文件复制至目标端虚拟机的数据复制指令。
[0068]S302、从共享存储阵列的文件块资源池中构造空间New FileBlock,并在NewFileBlock中写入指向源端虚拟机文件的指针,用于在数据复制过程完成之前,读取数据时通过指针定位至源端虚拟机文件进行数据的读取,写入数据时直接写入New FileBlock0
[0069]S303、在目标端虚拟机磁盘分配要复制的文件所占容量的空间Target File,并在Target File中写入指向源端虚拟机文件的指针。
[0070]S304、向应用程序发送复制完成应答消息,复制完成应答消息用于指示:数据复制过程完成,目标端虚拟机处于可用状态。
[0071]此时,对于用户界面来说,复制过程已经完成,速度上可实现秒级完成复制。而目标端虚拟机的读取1/0,可通过指针定位至源端虚拟机进行读取,写入数据的操作写I/O则写入 Target File。
[0072]S305、启动源端虚拟机文件至目标端虚拟机文件的同步线程,通过同步线程将目标端虚拟机文件复制到Target File。同步完成后,目标端虚拟机文件的读取和写入只在Target File 进行。
[0073]S306、将数据复制完成之前写入Target File的数据同步至源端虚拟机文件。
[0074]S307、释放为源端虚拟机分配的空间New FileBlock。
[0075]图4为本发明数据复制装置实施例一的结构示意图,如图4所示,本实施例的装置可以包括:接收模块11、处理模块12、发送模块13和复制模块14,其中,接收模块11用于接收应用程序发送的数据复制指令,其中,源端文件为第一磁盘的第一数据,目标端为第二磁盘。处理模块12用于在第二磁盘分配第一数据所占容量的第一空间,并在第一空间中写入指向第一磁盘的第一数据的指针。发送模块13用于向应用程序发送复制完成应答消息,复制完成应答消息用于指示:复制第一磁盘的第一数据到第二磁盘的数据复制过程完成,第二磁盘处于可用状态。复制模块14用于通过同步线程将第一磁盘的第一数据复制到第一空间。
[0076]进一步地,在第一种可实施的方式中,若要保存源端的文件,另外复制生成目标端的文件,例如虚拟机文件的克隆,目标端的文件与下发数据复制指令时刻的源端的文件保持一致,此时,处理模块12还用于:
[0077]在第二磁盘分配第一数据所占容量的第一空间,并写入指向第一磁盘的第一数据的指针之前,从共享存储阵列的文件块资源池中构造第二空间,并在第二空间中写入指向第一磁盘的第一数据的指针,用于在数据复制过程完成之前,读取数据时通过指针定位至第一磁盘进行数据的读取,写入数据时直接写入第二空间。
[0078]处理模块12还用于:在复制模块14通过同步线程将第一磁盘的第一数据复制到第一空间之后,将数据复制完成之前写入第二空间的数据同步至第一磁盘;在第一空间读取数据和写入数据。
[0079]此时克隆过程已经完成,进一步地,处理模块12还用于:在复制模块通过同步线程将第一磁盘的第一数据复制到第一空间之后,释放第二空间。
[0080]进一步地,在第二种可实施的方式中,当数据复制指令为数据剪切指令时,例如虚拟机文件的迁移,处理模块12还用于:
[0081]在复制模块通过同步线程将第一磁盘的第一数据复制到第一空间之后,删除第一磁盘的第一数据。
[0082]本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理类似,此处不再赘述。
[0083]本实施例提供的数据复制装置,通过接收模块接收到应用程序发送的数据复制指令后,处理模块在源端磁盘分配所要复制的数据所占容量的空间,并在该空间中写入指向源端磁盘的所要复制的数据的指针,然后发送模块向应用程序发送复制完成应答消息,指示将数据复制到目标端的数据复制过程完成,目标端磁盘可用。最后复制模块通过同步线程将第一磁盘的第一数据复制到第一空间。对于用户界面而言,可实现秒级完成复制,从而极大提高了数据复制和迁移的速度。
[0084]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0085]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种数据复制方法,其特征在于,包括: 接收应用程序发送的数据复制指令,其中,源端文件为第一磁盘的第一数据,目标端为第二磁盘; 在所述第二磁盘分配所述第一数据所占容量的第一空间,并在所述第一空间中写入指向所述第一磁盘的第一数据的指针; 向所述应用程序发送复制完成应答消息,所述复制完成应答消息用于指示:复制所述第一磁盘的第一数据到所述第二磁盘的数据复制过程完成,所述第二磁盘处于可用状态;通过同步线程将所述第一磁盘的第一数据复制到所述第一空间。
2.根据权利要求1所述的方法,其特征在于,所述在所述第二磁盘分配所述第一数据所占容量的第一空间,并写入指向所述第一磁盘的第一数据的指针之前,还包括: 从共享存储阵列的文件块资源池中构造第二空间,并在所述第二空间中写入指向所述第一磁盘的第一数据的指针,用于在数据复制过程完成之前,读取数据时通过所述指针定位至所述第一磁盘进行数据的读取,写入数据时直接写入所述第二空间; 所述通过同步线程将所述第一磁盘的第一数据复制到所述第一空间之后,还包括: 将数据复制完成之前写入所述第二空间的数据同步至所述第一磁盘; 在所述第一空间读取数据和写入数据。
3.根据权利要求2所述的方法,其特征在于,所述在所述第一空间读取数据和写入数据之后,还包括: 释放所述第二空间。
4.根据权利要求1所述的方法,其特征在于,所述数据复制指令为数据剪切指令,所述通过同步线程将所述第一磁盘的第一数据复制到所述第一空间之后,还包括: 删除所述第一磁盘的第一数据。
5.一种数据复制装置,其特征在于,包括: 接收模块,用于接收应用程序发送的数据复制指令,其中,源端文件为第一磁盘的第一数据,目标端为第二磁盘; 处理模块,用于在所述第二磁盘分配所述第一数据所占容量的第一空间,并在所述第一空间中写入指向所述第一磁盘的第一数据的指针; 发送模块,用于向所述应用程序发送复制完成应答消息,所述复制完成应答消息用于指示:复制所述第一磁盘的第一数据到所述第二磁盘的数据复制过程完成,所述第二磁盘处于可用状态; 复制模块,用于通过同步线程将所述第一磁盘的第一数据复制到所述第一空间。
6.根据权利要求5所述的装置,其特征在于,所述处理模块还用于: 在所述第二磁盘分配所述第一数据所占容量的第一空间,并写入指向所述第一磁盘的第一数据的指针之前,从共享存储阵列的文件块资源池中构造第二空间,并在所述第二空间中写入指向所述第一磁盘的第一数据的指针,用于在数据复制过程完成之前,读取数据时通过所述指针定位至所述第一磁盘进行数据的读取,写入数据时直接写入所述第二空间; 所述处理模块还用于:在所述复制模块通过同步线程将所述第一磁盘的第一数据复制到所述第一空间之后,将数据复制完成之前写入所述第二空间的数据同步至所述第一磁盘; 在所述第一空间读取数据和写入数据。
7.根据权利要求6所述的装置,其特征在于,所述处理模块还用于: 在所述复制模块通过同步线程将所述第一磁盘的第一数据复制到所述第一空间之后,释放所述第二空间。
8.根据权利要求6所述的装置,其特征在于,所述数据复制指令为数据剪切指令,所述处理模块还用于: 在所述复制模块通过同步线程将所述第一磁盘的第一数据复制到所述第一空间之后,删除所述第一磁盘的第一数据。
【文档编号】G06F9/455GK103559103SQ201310547637
【公开日】2014年2月5日 申请日期:2013年11月6日 优先权日:2013年11月6日
【发明者】谢丰, 邓勇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1