(12)发明专利申请
(10)申请公布号 CN 1107916 A(43)申请公布日 2020.02.14
(21)申请号 201910996162.8(22)申请日 2019.10.18
(71)申请人 北京浪潮数据技术有限公司
地址 100085 北京市海淀区上地信息路2号
C栋5层(72)发明人 李宏伟
(74)专利代理机构 北京集佳知识产权代理有限
公司 11227
代理人 田媛媛(51)Int.Cl.
G06F 16/182(2019.01)G06F 16/176(2019.01)
权利要求书2页 说明书7页 附图3页
()发明名称
一种文件复制方法、装置、设备及可读存储介质(57)摘要
本发明公开了一种文件复制方法、装置、设
该方法包括:从reflink元数备及可读存储介质,
据区中,获取目标文件的共享元数据和非共享数据;组合共享元数据和非共享数据,获得中间文件;将中间文件复制到指定文件挂载点下;利用中间文件重建reflink元数据和目标文件。该方法进行复制时,仅仅复制了目标文件的差异值,保留了共享元数据而免去了重复复制的过程,既减少了数据复制量,同时还保持了文件的reflink关系,即可支持跨挂载点、跨主机文件复制并同时保持reflink关系。CN 1107916 ACN 1107916 A
权 利 要 求 书
1/2页
1.一种文件复制方法,其特征在于,包括:从reflink元数据区中,获取目标文件的共享元数据和非共享数据;组合所述共享元数据和所述非共享数据,获得中间文件;将所述中间文件复制到指定文件挂载点下;
利用所述中间文件重建reflink元数据和所述目标文件。2.根据权利要求1所述的文件复制方法,其特征在于,还包括:利用ioctl接口确定所述目标文件。
3.根据权利要求1所述的文件复制方法,其特征在于,将所述中间文件复制到指定文件挂载点下,包括:
利用文件传输技术将所述中间文件复制到所述指定文件挂载点下。4.根据权利要求1所述的文件复制方法,其特征在于,将所述中间文件复制到指定文件挂载点下,包括:
将所述中间文件复制到本机或其他主机的指定文件挂载点下。5.根据权利要求1所述的文件复制方法,其特征在于,所述共享元数据包括所述共享元数据段和所述文件inode信息,组合所述共享元数据和所述非共享数据,获得中间文件,包括:
将所述共享元数据段和所述文件inode信息打包为第一中间文件;将所述非共享数据打包为第二中间文件。6.跟据权利要求5所述的文件复制方法,其特征在于,利用所述中间文件重建reflink元数据和所述目标文件,包括:
利用所述第一中间文件恢复出所述共享元数据段和所述文件inode信息,并将所述文件inode信息中的用户数据段描述重新指向重建的所述共享reflink元数据段;
利用所述第二中间文件恢复出差异数据,并将所述文件inode信息中差异部分指向与指定文件挂载点对应的新数据区域。
7.根据权利要求1所述的文件复制方法,其特征在于,利用所述中间文件重建reflink元数据及所述目标文件,包括:
利用ioctl接口的导入功能将所述中间文件重建出所述reflink元数据及所述目标文件。
8.一种文件复制装置,其特征在于,包括:数据获取模块,用于从reflink元数据区中,获取目标文件的共享元数据和非共享数据;
数据打包模块,用于组合所述共享元数据和所述非共享数据,获得中间文件;数据传输模块,用于将所述中间文件复制到指定文件挂载点下;数据重建模块,用于利用所述中间文件重建reflink元数据和所述目标文件。9.一种文件复制设备,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述文件复制方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计
2
CN 1107916 A
权 利 要 求 书
2/2页
算机程序被处理器执行时实现如权利要求1至7任一项所述文件复制方法的步骤。
3
CN 1107916 A
说 明 书
一种文件复制方法、装置、设备及可读存储介质
1/7页
技术领域
[0001]本发明涉及计算机应用技术领域,特别是涉及一种文件复制方法、装置、设备及可读存储介质。
背景技术
[0002]Reflink是文件系统提供的一个轻量级数据复制方法,支持CoW(copy-on-write,写时复制),有效提高了磁盘空间利用率和复制效率。相对于Hardlink,reflink(意为引用拷贝)提供了数据段粒度的文件间数据共享,具有更高的灵活性和磁盘空间利用率。Btrfs(COW文件系统),xfs(一种高性能的日志文件系统),ext4(Fourth extended filesystem,扩展文件系统),ocfs2(Cluster File System,集群文件系统)等文件系统都已支持该特性。
[0003]不过,现有的文件系统对reflink的实现并不支持跨挂载点、跨主机文件复制并同时保持reflink关系,对于reflink文件只能全量复制,了reflink的应用场景。而其它的数据迁移方法如基于文件差异内容、文件压缩等方式来减少数据复制量,但这两种方法均需要对数据内容进行比较、分析,会耗费更多的时间和计算量,且不支持reflink关系的保持,本质上只是对全量数据复制的优化。[0004]综上所述,如何有效地解决如何实现支持跨挂载点、跨主机文件复制并同时保持reflink关系等问题,是目前本领域技术人员急需解决的技术问题。发明内容
[0005]本发明的目的是提供一种文件复制方法、装置、设备及可读存储介质,以实现支持跨挂载点、跨主机文件复制并同时保持reflink关系。[0006]为解决上述技术问题,本发明提供如下技术方案:[0007]一种文件复制方法,包括:[0008]从reflink元数据区中,获取目标文件的共享元数据和非共享数据;[0009]组合所述共享元数据和所述非共享数据,获得中间文件;[0010]将所述中间文件复制到指定文件挂载点下;[0011]利用所述中间文件重建reflink元数据和所述目标文件。[0012]优选地,还包括:[0013]利用ioctl接口确定所述目标文件。[0014]优选地,将所述中间文件复制到指定文件挂载点下,包括:[0015]利用文件传输技术将所述中间文件复制到所述指定文件挂载点下。[0016]优选地,将所述中间文件复制到指定文件挂载点下,包括:[0017]将所述中间文件复制到本机或其他主机的指定文件挂载点下。[0018]优选地,所述共享元数据包括所述共享元数据段和所述文件inode信息,组合所述共享元数据和所述非共享数据,获得中间文件,包括:
4
CN 1107916 A[0019]
说 明 书
2/7页
将所述共享元数据段和所述文件inode信息打包为第一中间文件;
[0020]将所述非共享数据打包为第二中间文件。[0021]优选地,利用所述中间文件重建reflink元数据和所述目标文件,包括:[0022]利用所述第一中间文件恢复出所述共享元数据段和所述文件inode信息,并将所述文件inode信息中的用户数据段描述重新指向重建的所述共享reflink元数据段;[0023]利用所述第二中间文件恢复出差异数据,并将所述文件inode信息中差异部分指向与指定文件挂载点对应的新数据区域。[0024]优选地,利用所述中间文件重建reflink元数据及所述目标文件,包括:[0025]利用ioctl接口的导入功能将所述中间文件重建出所述reflink元数据及所述目标文件。
[0026]一种文件复制装置,包括:[0027]数据获取模块,用于从reflink元数据区中,获取目标文件的共享元数据和非共享数据;
[0028]数据打包模块,用于组合所述共享元数据和所述非共享数据,获得中间文件;[0029]数据传输模块,用于将所述中间文件复制到指定文件挂载点下;[0030]数据重建模块,用于利用所述中间文件重建reflink元数据和所述目标文件。[0031]一种文件复制设备,包括:[0032]存储器,用于存储计算机程序;[0033]处理器,用于执行所述计算机程序时实现上述文件复制方法的步骤。[0034]一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述文件复制方法的步骤。[0035]应用本发明实施例所提供的方法,从reflink元数据区中,获取目标文件的共享元数据和非共享数据;组合共享元数据和非共享数据,获得中间文件;将中间文件复制到指定文件挂载点下;利用中间文件重建reflink元数据和目标文件。[0036]在本方法中,在复制目标文件时,仅需从reflink元数据区中获取目标文件的共享元数据和非共享数据,然后将共享元数据和非共享数据进行组合获得中间文件。将中间文件直接复制到指定文件挂载点下,基于该中间文件便可重建reflink元数据和目标文件。可见,在本方法中,进行复制时,仅仅复制了目标文件的差异值,保留了共享元数据而免去了重复复制的过程,既减少了数据复制量,同时还保持了文件的reflink关系,即可支持跨挂载点、跨主机文件复制并同时保持reflink关系。[0037]相应地,本发明实施例还提供了与上述文件复制方法相对应的文件复制装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。附图说明
[0038]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0039]图1为本发明实施例中一种文件复制方法的实施流程图;
5
CN 1107916 A[0040][0041][0042]
说 明 书
3/7页
图2为本发明实施例中一种文件复制装置的结构示意图;图3为本发明实施例中一种文件复制设备的结构示意图;图4为本发明实施例中一种文件复制设备的具体结构示意图。
具体实施方式
[0043]为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0044]实施例一:[0045]请参考图1,图1为本发明实施例中一种文件复制方法的流程图,该方法可应用于文件系统中,该方法包括以下步骤:[0046]S101、从reflink元数据区中,获取目标文件的共享元数据和非共享数据。[0047]其中,目标文件即待复制具有reflink关系的文件,或称之为reflink文件。需要说明的是,目标文件可以为一个也可以为多个。在本实施例中可预先确定出目标文件,具体的,利用ioctl接口确定目标文件。其中,ioctl为设备驱动程序中对设备的I/O通道进行管理的函数,即ioctl接口即对设备的I/O通道进行管理的接口。例如,用户可通过ioctl接口告诉文件系统哪些文件为待复制的目标文件。[0048]其中,共享元数据包括共享元数据段和文件inode(索引节点)信息。共享元数据段即reflink的元信息,以ocfs2为例,共享元数据段即refcount tree,refcount tree记录了reflink的众多文件之间共享的数据段信息;文件inode信息,即reflink文件的inode元数据,inode描述用户数据段。[0049]S102、组合共享元数据和非共享数据,获得中间文件。[0050]得到共享元数据和非共享数据之后,可对数据进行组合整理,得到中间文件。具体的,共享元数据包括共享元数据段和文件inode信息,组合共享元数据和非共享数据,获得中间文件,包括:[0051]步骤一、将共享元数据段和文件inode信息打包为第一中间文件;[0052]步骤二、将非共享数据打包为第二中间文件。[0053]需要说明的是,在本实施例中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。[00]在实际应用中,第一中间文件可命名为META,第二中间文件可命名为DATA;且META与DATA文件均表现为源主机上的普通文件。[0055]S103、将中间文件复制到指定文件挂载点下。[0056]其中,挂载点(Mount point)为Linux下访问磁盘分区的入口,即如果要往/boot分区(ldev/sdal)写入数据,就必须通过/boot的入口来写入,想向根分区里写内容就用/为入口。即,文件挂载点即为访问文件所在磁盘分区的入口。也就是说,指定文件挂载点可视为需要复制目标文件的目的路径或目的区域。[0057]具体的,可利用文件传输技术将中间文件复制到指定文件挂载点下。即,由于第一
6
CN 1107916 A
说 明 书
4/7页
主机文件和第二中间文件在源主机上表现为普通文件,因而在将其复制至指定文件挂载点下时,也可直接按照普通文件传输方法,如cp、scp目录将第一中间文件和第二中间文件复制到目标位置(即指定文件挂载点)。[0058]其中,cp即copy简写,cp命令可将一个或多个目标文件复制至指定文件挂载点;cp命令用法如下:
[0059]cp[选项]…[-T]//目标文件指定文件挂载点对应文件[0060]或:cp[选项]…//目标文件…指定文件挂载点对应目录[0061]或:cp[选项]…-t//指定文件挂载点对应目录目标文件。[0062]其中,scp(secure copy)命令为linux命令之一,用于linux之间文件或者目录的复制。
[0063]由于中间文件对于源主机而言,与普通文件等同,可采用普通文件的传输方式挂载至指定文件挂载点下,且文件系统可基于该中间文件将目标文件复制重建至指定文件挂载点时,且恢复出reflink关系。因此,本实施例可支持将目标文件复制至本机的其他文件挂载点,也支持至其他主机的文件挂载点。即,将中间文件复制到本机或其他主机的指定文件挂载点下。[00]S104、利用中间文件重建reflink元数据和目标文件。[0065]将目标文件复制至指定文件挂载点后,文件系统可基于中间文件在该指定文件挂载点下重建reflink元数据和目标文件。如此,便可通过重建reflink关系的方式复制目标文件至指定文件挂载点下。[0066]具体的,重建过程,包括:[0067]步骤一、利用第一中间文件恢复出共享元数据段和文件inode信息,并将文件inode信息中的用户数据段描述重新指向重建的共享reflink元数据段;[0068]步骤二、利用第二中间文件恢复出差异数据,并将文件inode信息中差异部分指向与指定文件挂载点对应的新数据区域。[0069]也就是说,可直接基于第一中间文件和第二中间文件,将目标文件的reflink关系重新建立,并实现目标文件复制。[0070]在实际应用中,还可借助现有的ioctl接口数据重建过程。具体的,利用ioctl接口的导入功能将中间文件重建出reflink元数据及目标文件。在目标主机(即指定文件挂载点所属主机)上将中间文件作为输入,利用ioctl接口执行reflink文件导入功能,恢复reflink文件,reflink文件仍保持reflink关系。具体而言,ioctl的reflink导入功能实现逻辑如下:[0071](1)、从中间文件META中恢复出reflink的元信息,以ocfs2为例就是恢复refcount tree,它记录了reflink的众多文件之间共享的数据段信息;[0072](2)、从META文件中恢复出reflink文件的inode元数据,inode的用户数据段描述会重新指向新的reflink元数据描述;[0073](3)、从DATA中间文件恢复差异数据,同时令inode的差异部分指向新的数据区域。[0074]通过上述(1)、(2)和(3)步骤,利用ioctl接口的reflink导入功能,便可实现将“普通”的中间文件恢复为具有reflink关系的目标文件,实现reflink文件的无损迁移。[0075]应用本发明实施例所提供的方法,从reflink元数据区中,获取目标文件的共享元
7
CN 1107916 A
说 明 书
5/7页
数据和非共享数据;组合共享元数据和非共享数据,获得中间文件;将中间文件复制到指定文件挂载点下;利用中间文件重建reflink元数据和目标文件。[0076]在本方法中,在复制目标文件时,仅需从reflink元数据区中获取目标文件的共享元数据和非共享数据,然后将共享元数据和非共享数据进行组合获得中间文件。将中间文件直接复制到指定文件挂载点下,基于该中间文件便可重建reflink元数据和目标文件。可见,在本方法中,进行复制时,仅仅复制了目标文件的差异值,保留了共享元数据而免去了重复复制的过程,既减少了数据复制量,同时还保持了文件的reflink关系,即可支持跨挂载点、跨主机文件复制并同时保持reflink关系。
[0077]为便于本领域技术人员更好地理解本发明实施例所提供的文件复制方法,下面结合该文件复制方法的核心技术内容以及具体实现步骤对该文件复制方法,进行详细说明。[0078]从上文可知,本发明实施例提供了一种支持reflink文件复制并保持文件reflink关系的方法,可支持reflink文件跨挂载点、跨主机复制。该方法的思路:将reflink文件及reflink关系打包为中间文件,可借助普通的文件复制方式迁移到其它主机,然后重新通过命令进行导入即可实现保持reflink关系的文件复制。具体实现过程如下:[0079]在进行reflink数据复制时,用户可通过ioctl接口告诉文件系统要进行哪些文件复制;
[0080]文件系统根据要复制的文件,从reflink元数据区拿到待复制文件共享的元数据段,然后也取出文件的非共享区域;[0081]将共享的元数据段、文件inode信息,文件的非共享数据组成一个中间文件,用户可将该中间文件用普通方式复制到本机或者其它主机的文件挂载点下面。[0082]在其它挂载点下,用户可通过ioctl接口将该中间文件传给文件系统;[0083]文件系统会解析该中间文件,重建reflink元数据以及迁移的文件,从而完成保持reflink关系的文件复制。同时由于该方法仅仅复制了文件的差异值,保留了共享数据段的信息而免去了重复复制过程,既减少了数据复制量,同时还保持了文件的reflink关系。[0084]关于文件打包和重建,具体实现过程,包括:[0085]步骤一、解析reflink文件的元数据信息,获取共享以及非数据段的信息以及reflink文件的inode等元数据,将其打包成中间文件META;将reflink文件间的非共享数据部分也打包成中间文件DATA。META和DATA文件均表现为源主机上的普通文件。[0086]步骤二、通过普通文件传输方法,如cp、scp命令将上述中间文件复制到目标位置。[0087]步骤三、在目标主机上将中间文件作为输入,利用ioctl接口执行reflink文件导入功能,恢复reflink文件,reflink文件仍保持reflink关系。[0088]具体而言,ioctl接口的reflink导入功能实现逻辑如下:[00]1)、从中间文件META中恢复出reflink的元信息,以ocfs2为例就是恢复refcount tree,它记录了reflink的众多文件之间共享的数据段信息;[0090]2)、从META文件中恢复出reflink文件的inode元数据,inode的用户数据段描述会重新指向新的reflink元数据描述;[0091]3)、从DATA中间文件恢复差异数据,同时令inode的差异部分指向新的数据区域。[0092]通过上述步骤,ioctl的reflink导入功能实现了将“普通”的中间文件恢复为具有reflink关系的文件,实现了reflink文件的无损迁移。
8
CN 1107916 A[0093]
说 明 书
6/7页
实施例二:
[0094]相应于上面的方法实施例,本发明实施例还提供了一种文件复制装置,下文描述的文件复制装置与上文描述的文件复制方法可相互对应参照。[0095]参见图2所示,该装置包括以下模块:[0096]数据获取模块101,用于从reflink元数据区中,获取目标文件的共享元数据和非共享数据;
[0097]数据打包模块102,用于组合共享元数据和非共享数据,获得中间文件;[0098]数据传输模块103,用于将中间文件复制到指定文件挂载点下;[0099]数据重建模块104,用于利用中间文件重建reflink元数据和目标文件。[0100]应用本发明实施例所提供的装置,从reflink元数据区中,获取目标文件的共享元数据和非共享数据;组合共享元数据和非共享数据,获得中间文件;将中间文件复制到指定文件挂载点下;利用中间文件重建reflink元数据和目标文件。[0101]在本装置中,在复制目标文件时,仅需从reflink元数据区中获取目标文件的共享元数据和非共享数据,然后将共享元数据和非共享数据进行组合获得中间文件。将中间文件直接复制到指定文件挂载点下,基于该中间文件便可重建reflink元数据和目标文件。可见,在本装置中,进行复制时,仅仅复制了目标文件的差异值,保留了共享元数据而免去了重复复制的过程,既减少了数据复制量,同时还保持了文件的reflink关系,即可支持跨挂载点、跨主机文件复制并同时保持reflink关系。[0102]在本发明的一种具体实施方式中,还包括:文件确定模块,用于利用ioctl接口确定目标文件。
[0103]在本发明的一种具体实施方式中,数据传输模块103,具体用于利用文件传输技术将中间文件复制到指定文件挂载点下。
[0104]在本发明的一种具体实施方式中,数据传输模块103,具体用于将中间文件复制到本机或其他主机的指定文件挂载点下。
[0105]在本发明的一种具体实施方式中,共享元数据包括共享元数据段和文件inode信息,数据打包模块102,具体用于将共享元数据段和文件inode信息打包为第一中间文件;将非共享数据打包为第二中间文件。
[0106]在本发明的一种具体实施方式中,数据重建模块104,具体用于利用第一中间文件恢复出共享元数据段和文件inode信息,并将文件inode信息中的用户数据段描述重新指向重建的共享reflink元数据段;利用第二中间文件恢复出差异数据,并将文件inode信息中差异部分指向与指定文件挂载点对应的新数据区域。[0107]在本发明的一种具体实施方式中,数据重建模块104,具体用于利用ioctl接口的导入功能将中间文件重建出reflink元数据及目标文件。[0108]实施例三:[0109]相应于上面的方法实施例,本发明实施例还提供了一种文件复制设备,下文描述的一种文件复制设备与上文描述的一种文件复制方法可相互对应参照。[0110]参见图3所示,该文件复制设备包括:[0111]存储器D1,用于存储计算机程序;[0112]处理器D2,用于执行计算机程序时实现上述方法实施例的文件复制方法的步骤。
9
CN 1107916 A[0113]
说 明 书
7/7页
具体的,请参考图4,图4为本实施例提供的一种文件复制设备的具体结构示意图,
该文件复制设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,处理器322可以设置为与存储介质330通信,在文件复制设备301上执行存储介质330中的一系列指令操作。
[0114]文件复制设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。例如,Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
[0115]上文所描述的文件复制方法中的步骤可以由文件复制设备的结构实现。[0116]实施例四:[0117]相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种文件复制方法可相互对应参照。[0118]一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的文件复制方法的步骤。[0119]该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
[0120]专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
10
CN 1107916 A
说 明 书 附 图
1/3页
图1
11
CN 1107916 A
说 明 书 附 图
2/3页
图2
图3
12
CN 1107916 A
说 明 书 附 图
3/3页
图4
13
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务