CN117708072A - 文件复制方法、终端设备及芯片系统 - Google Patents

文件复制方法、终端设备及芯片系统 Download PDF

Info

Publication number
CN117708072A
CN117708072A CN202310871791.4A CN202310871791A CN117708072A CN 117708072 A CN117708072 A CN 117708072A CN 202310871791 A CN202310871791 A CN 202310871791A CN 117708072 A CN117708072 A CN 117708072A
Authority
CN
China
Prior art keywords
file
copy
source
index
index node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310871791.4A
Other languages
English (en)
Inventor
王启
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310871791.4A priority Critical patent/CN117708072A/zh
Publication of CN117708072A publication Critical patent/CN117708072A/zh
Pending legal-status Critical Current

Links

Abstract

本申请实施例公开了一种文件复制方法、终端设备及芯片系统,适用于计算机技术领域,该方法包括:在检测到对目标文件系统中的源文件的reflink复制操作时,生成源文件的副本文件,副本文件包括副本索引节点;在源索引节点的扩展属性区域写入副本索引节点的副本索引标识,以及在副本索引节点的扩展属性区域写入源索引节点的源索引标识,其中,源索引节点指向源文件的文件地址。本申请实施例可以实现原本不支持reflink的文件系统能够支持reflink功能,有助于提高终端设备上的存储空间的利用率和复制效率。

Description

文件复制方法、终端设备及芯片系统
技术领域
本申请涉及计算机技术领域,尤其涉及一种文件复制方法、终端设备及芯片系统。
背景技术
引用链接技术(reflink)是文件系统提供的基于写时复制(Copy on Write,CoW)原理的轻量级数据复制方法,通过reflink复制得到的副本文件可以与源文件共享文件数据,可以减少存储空间的消耗,有助于提高终端设备上的存储空间的利用率和复制效率。
但实际应用中发现,有些文件系统,比如,闪存友好型文件系统(Flash-friendlyFile System,F2FS),并不支持reflink功能,不支持reflink功能的文件系统在处理文件复制操作时,通常需要针对每种复制场景都对文件数据进行复制,需要消耗非常多的存储空间,且容易降低文件复制效率。
因此,需要在不支持reflink功能的文件系统中实现reflink功能,以提高终端设备上的存储空间的利用率和复制效率。
发明内容
有鉴于此,本申请实施例提供了文件复制方法、终端设备及芯片系统,可以在不支持reflink功能的文件系统中实现reflink功能,以提高终端设备上的存储空间的利用率和复制效率。
本申请实施例的第一方面提供了一种文件复制方法,应用于终端设备,包括:
在检测到对目标文件系统中的源文件的reflink复制操作时,生成源文件的副本文件,副本文件包括副本索引节点;在源索引节点的扩展属性区域写入副本索引节点的副本索引标识,以及在副本索引节点的扩展属性区域写入源索引节点的源索引标识,其中,源索引节点指向源文件的文件地址。
上述目标文件系统通常是原本不支持reflink功能的文件系统,比如,F2FS文件系统。不支持reflink功能的文件系统的索引节点中,通常不具有专门用于存放reflink功能相关数据的区域。
上述源索引节点为源文件的索引节点,上述副本索引节点为副本文件的索引节点。
上述源索引标识为用于标识源索引节点的信息。副本索引标识为用于标识副本索引节点的信息。
在本申请实施例中,由于每个索引节点中通常具有扩展属性区域,终端设备通过将副本索引标识写入源索引节点的扩展属性区域,以及将源索引标识写入副本索引节点的扩展属性区域,以此来建立源文件与副本文件之间的reflink关联关系,实现过程简单且较为巧妙,可以有效降低计算复杂度,有助于进一步提高复制效率。另外,终端设备在检测到对目标文件系统中的源文件的reflink复制操作时,生成源文件的副本文件,以及通过所建立的源文件与副本文件之间的reflink关联关系,实现副本文件与源文件共享文件数据,可以实现对目标文件系统中的源文件执行reflink复制操作时,无需对文件数据进行复制,有助于提高终端设备上存储空间的利用率文件和复制效率。另外,在对目标文件系统中的源文件执行reflink复制的过程中,终端设备通过将副本索引标识写入源索引节点的扩展属性区域,以及将源索引标识写入副本索引节点的扩展属性区域,来建立源文件与副本文件之间的reflink关联关系,从而实现执行reflink复制时无需对源文件的文件数据进行复制,可以实现原本不支持reflink的文件系统能够支持reflink功能,有助于提高终端设备上的存储空间的利用率和复制效率。
作为本申请的一个可选实施例,源文件可以是普通文件,也可以是副本文件。
在本申请实施例中,源文件既可以为普通文件也可以为副本文件,可以满足多种应用场景下的reflink复制需求,有助于提升终端设备的性能。
作为本申请的一个可选实施例,在源文件为副本文件时,被操作的副本文件与新生成的副本文件对应同一源文件。
在本申请实施例中,在被操作的源文件为副本文件时,新生成的副本文件与被操作的副本文件共享同一源文件,可以简化计算复杂度,有助于提高终端设备的数据处理效率。
作为本申请的一个可选实施例,终端设备在检测到对副本文件的读操作时,根据副本索引节点中记录的源索引标识,确定源索引节点,从源索引节点指向的文件地址读取文件数据。
作为本申请的一个可选实施例,终端设备在检测到对源文件的读操作时,从源索引节点指向的文件地址读取文件数据。
作为本申请的一个可选实施例,源文件具有读写锁,副本文件具有读写锁。
在本申请实施例中,源文件和副本文件都具有读写锁,可以保障源文件和副本文件被执行多种并发操作时的数据安全性。
作为本申请的一个可选实施例,终端设备在获取到副本文件的写锁以及获取到源文件的读锁时,在源索引节点的扩展属性区域写入副本索引节点的副本索引标识,以及在副本索引节点的扩展属性区域写入源索引节点的源索引标识。
在本申请实施例中,终端设备在建立源文件与副本文件之间的reflink关联关系的过程中,持副本文件的写锁,可以保障副本文件在建立reflink关联关系时不支持其它的诸如写入操作、删除操作等的操作,以保障副本文件的数据安全。另外,终端设备在建立源文件与副本文件之间的reflink关联关系的过程中,持源文件的读锁,可以保障同一源文件可以同时与多个副本文件建立reflink关联关系,从而提高终端设备建立reflink关联关系时的效率。
作为本申请的一个可选的实施例,目标文件系统为F2FS文件系统,扩展属性区域包括位于目标索引节点内的内部扩展区域和位于目标索引节点外的外部扩展区域,目标索引节点包括源索引节点和副本索引节点。
作为本申请的一个可选的实施例,在目标文件系统为F2FS文件系统时,终端设备在源索引节点的扩展属性区域写入副本索引节点的副本索引标识,以及在副本索引节点的扩展属性区域写入源索引节点的源索引标识,包括:终端设备在源索引节点的内部扩展区域写入副本索引标识,以及在副本索引节点的内部扩展区域写入源索引标识。
在本申请实施例中,由于F2FS文件系统中,索引节点内部的内部扩展区域与索引节点处于同一数据块,索引节点外部的外部扩展区域与索引节点分别处于相异的两个数据块,又由于文件系统在持久化过程中的数据保存粒度为一个数据块,且具体是先保存索引节点所在的数据块,再保存索引节点之外的外部扩展区域所在的数据块,将需要被写入的索引标识写入内部扩展区域,可以实现对被写入的索引标识进行及时保存,从而避免两次数据块保存期间发生的异常情况所导致的被写入索引标识保存失败,有助于保障数据安全。
在第一方面的第一种可能的实现方式中,目标文件系统为F2FS文件系统,扩展属性区域包括位于目标索引节点内的内部扩展区域和位于目标索引节点外的外部扩展区域,目标索引节点包括源索引节点和副本索引节点;
在源索引节点的扩展属性区域写入副本索引节点的副本索引标识,以及在副本索引节点的扩展属性区域写入源索引节点的源索引标识,包括:在源索引节点的内部扩展区域的头部写入副本索引标识,以及在副本索引节点的内部扩展区域的头部写入源索引标识。
在本申请实施例中,将需要被写入的索引标识写入内部扩展区域的头部,可以实现对被写入的索引标识进行及时保存,从而避免两次数据块保存期间发生的异常情况所导致的被写入索引标识保存失败,有助于保障数据安全。另外,直接将需要写入的索引标识写入内部扩展区域的头部,实现过程较为简单,计算复杂度较低,有助于提高终端设备的数据处理速度。
在第一方面的第二种可能的实现方式中,在源索引节点的内部扩展区域的头部插入副本索引标识,包括:
将副本索引标识,写入副本键值对中的副本数组,其中,副本键值对位于源索引节点的内部扩展区域的头部,副本键值对的值为副本数组,副本数组的大小固定,且副本数组的大小与内部扩展区域的大小相适配。
其中,本实施例对副本键值对的键的实现形式不做具体限定。
在本申请实施例中,由于同一源文件可以具有多个副本文件,终端设备将源文件的所有副本文件的副本索引标识写入同一键值对,且具体为写入副本键值对中的副本数组,与将各副本索引标识分别写入多个不同的键值对相比,可以提高数据写入速度。另外,终端设备将同一源文件对应的多个副本索引标识全部写入源索引节点的头部的副本数组中,由于副本数组的大小固定,因此,副本数组在源索引节点的内部扩展区域的位置固定,可以实现方便地对副本数组中的副本索引标识进行增加、删除或修改,也即是,可以实现快速地建立、删除或者修改源文件与副本文件之间的reflink关联关系,有助于进一步提高终端设备的文件复制效率。
作为本申请的一个可选的实施例,终端设备在确定向副本键值对中增加目标副本索引标识时,将目标副本索引标识写入副本键值对的副本数组。
其中,上述目标副本索引标识可以是任一副本文件对应的索引标识。
这里,终端设备需要向副本键值对中增加目标副本索引标识,通常说明终端设备需要建立源文件与目标副本索引标识对应的副本文件之间的reflink关联关系。此时,终端设备可以直接将目标副本索引标识写入副本键值对中的副本数组。终端设备直接修改键值对中的内容,无需添加新键值对,与单独采用目标副本索引标识建立一个键值对并将所建立的键值对写入源索引节点相比,操作简单,可以有效降低计算复杂度,从而进一步提高终端设备的文件复制效率。
作为本申请的另一个可选的实施例,终端设备在确定删除副本键值对中的目标副本索引标识时,从副本数组中删除目标副本索引标识。
这里,终端设备需要删除副本键值对中的目标副本索引标识,通常说明终端设备需要删除源文件与目标副本索引标识对应的副本文件之间的reflink关联关系。此时,终端设备可以直接从副本数组中删除目标副本索引标识。终端设备直接修改键值对中的内容,无需删除键值对,与从源索引节点中删除一个键值对相比,操作简单,可以有效降低计算复杂度,从而进一步提高终端设备的文件复制效率。
在第一方面的第三种可能的实现方式中,在副本索引节点的内部扩展区域的头部插入源索引标识,包括:在副本索引节点的内部扩展区域的头部写入源键值对,其中,源键值对的值为源索引标识。
其中,本实施例对源键值对的键的实现形式也不做具体限定。
在本申请实施例中,终端设备将包括源索引标识的源键值对,写入副本索引节点的内部扩展区域的头部,由于源索引标识的大小固定,因此,源键值对在副本索引节点的内部扩展区域的位置固定,可以实现方便地对源索引标识进行增加、删除或修改,也即是,可以实现快速地建立、删除或者修改源文件与副本文件之间的reflink关联关系,有助于进一步提高终端设备的复制效率。
作为本申请的又一个可选的实施例,终端设备在确定修改源键值对中的源索引标识时,将源键值对中的源索引标识切换为修改后的源索引标识。
这里,终端设备需要修改源键值对中的源索引标识,通常说明终端设备需要切换副本文件所关联的源文件。此时,终端设备直接将源键值对中的源索引标识切换为修改后的源索引标识,直接修改键值对中的内容,无需删除旧键值对以及添加新键值对,操作简单,可以有效降低计算复杂度,从而进一步提高终端设备的复制效率。
在第一方面的第四种可能的实现方式中,将副本索引标识,写入副本键值对中的副本数组,包括:
若源索引节点的内部扩展区域不存在副本键值对,生成副本键值对,以及将副本键值对写入源索引节点的内部扩展区域的头部,其中,副本键值对的值为包括副本索引标识的副本数组。
在本申请实施例中,在所生成的副本文件为源文件的首个副本文件时,源索引节点中不存在副本键值对。此时,终端设备可以结合副本数组的大小和副本索引标识,生成副本键值对,以及将所生成的副本键值对插入源索引节点的内部扩展区域的头部,如此,可以保障将副本索引标识有效写入源索引节点的内部扩展区域。
在第一方面的第五种可能的实现方式中,方法还包括:
在检测到对副本文件的写操作时,对副本文件执行副本复原操作,将副本复原操作后的副本文件确定为普通文件;
其中,副本复原操作包括:复制源文件的文件数据,以及将所复制的文件数据存入新文件地址,副本索引节点指向新文件地址;删除副本索引节点的扩展属性区域中的源索引标识,删除源索引节点的扩展属性区域中的副本索引标识。
本申请实施例中,终端设备可以响应对副本文件的写操作,以及将副本文件复原为普通文件,副本文件复原为普通文件之后,与源文件之间不再具有关联关系。可以实现对副本文件的写时复制。另外,终端设备通过删除源索引节点中的副本索引节标识,以及删除副本索引节点中的源索引标识,来实现将副本文件恢复为普通文件,操作简单,易于实现有助于提高终端设备的副本文件复原效率。
在第一方面的第六种可能的实现方式中,方法还包括:
在检测到对副本文件的删除操作时,对副本文件执行副本删除操作;
其中,副本删除操作包括:删除副本文件,以及删除源索引节点的扩展属性区域中的副本索引标识。
本申请实施例中,终端设备可以响应对副本文件的删除操作,以及对副本文件进行有效删除。另外,终端设备通过删除副本文件以及删除源索引节点中的副本索引节标识,来实现将副本文件删除,操作简单,易于实现有助于提高终端设备的副本文件删除效率。
在第一方面的第七种可能的实现方式中,源文件具有读写锁,且副本文件具有读写锁,方法还包括:
在检测到对副本文件的目标操作时,若获取到副本文件的写锁且获取到源文件的读锁,则对副本文件执行与目标操作对应的副本操作,其中,目标操作包括写操作和删除操作,写操作对应的副本操作为副本复原操作,删除操作对应的副本操作为副本删除操作。
本申请实施例中,终端设备只有在获取到副本文件的写锁及源文件的读锁的情况下,才对副本文件执行副本删除操作或者副本复原操作。终端设备对副本文件进行副本删除操作或者副本复原操作的过程中,持副本文件的写锁,可以保障副本文件被删除或者复原时不支持其它的诸如写操作、删除操作等的操作,以保障副本文件的数据安全。另外,终端设备对副本文件执行副本删除操作或者副本复原操作的过程中,持源文件的读锁,只有在获取到源文件的读锁的情况下才对副本文件进行删除或者复原,可以保障多种操作并发时源文件的数据安全。
在第一方面的第八种可能的实现方式中,方法还包括:
在检测到对源文件的写操作时,创建临时文件,临时文件包括临时索引节点;
将源文件的文件数据复制到临时文件,将源索引节点的扩展属性区域中的副本索引标识写入临时索引节点的扩展属性区域,删除源索引节点的扩展属性区域中的副本索引标识,将源文件确定为普通文件;
将副本索引节点的扩展属性区域中的源索引标识,切换为临时索引节点的临时索引标识,以及将临时文件确定为副本文件的源文件。
在本申请实施例中,终端设备可以响应对源文件的写操作,以及将源文件复原为普通文件。源文件复原为普通文件之后,与复原之前所关联的所有副本文件之间不再具有关联关系。可以实现对源文件的有效复原。另外,终端设备通过将源文件的文件数据复制到临时文件,将源文件的源索引节点中记录的reflink关联关系复制到临时文件的临时索引节点的相应位置,以及将源文件关联的每个副本文件的副本索引节点中记录的源索引标识修改为临时文件的临时索引标识,以实现由临时文件继承源文件的所有副本文件,以保障在源文件复原为普通文件后,副本文件依旧可以正常使用,也即是,可以保障在对源文件复原之后,不会对其副本文件造成影响,有助于提高数据安全性和稳定性。
在第一方面的第九种可能的实现方式中,源文件具有读写锁,且副本文件具有读写锁;
将源索引节点的扩展属性区域中的副本索引标识写入临时索引节点的扩展属性区域,删除源索引节点的扩展属性区域中的副本索引标识,包括:在获取到源文件的写锁时,将源索引节点的扩展属性区域中的副本索引标识写入临时索引节点的扩展属性区域,删除源索引节点的扩展属性区域中的副本索引标识;
将副本索引节点的扩展属性区域中的源索引标识,切换为临时索引节点的临时索引标识,包括:在获取到副本文件的写锁时,将副本索引节点的扩展属性区域中的源索引标识,切换为临时索引节点的临时索引标识。
在本申请实施例中,终端设备在获取到源文件的写锁的情况下,才执行将源文件的源索引节点中记录的reflink关联关系复制到临时文件的临时索引节点的相应位置,可以保障源文件在复原的过程中,源文件不支持其它的诸如写操作、删除操作等的操作,以保障源文件的数据安全。另外,终端设备在获取到副本文件的写锁的情况下,才对副本文件的副本索引节点中记录的源索引标识进行修改,可以保障副本文件在被修改的过程中,副本文件不支持其它的诸如写操作、删除操作等的操作,以保障副本文件的数据安全。
本申请实施例的第二方面提供了一种文件复制装置,装置包括:
副本生成单元,用于在检测到对目标文件系统中的源文件的reflink复制操作时,生成源文件的副本文件,副本文件包括副本索引节点;
数据写入单元,用于在源索引节点的扩展属性区域写入副本索引节点的副本索引标识,以及在副本索引节点的扩展属性区域写入源索引节点的源索引标识,其中,源索引节点指向源文件的文件地址。
作为本申请的一个实施例,文件复制装置可以实现如上述第一方面任一项的方法。
第三方面,本申请实施例提供一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述第一方面任一项的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面任一项的方法。
第五方面,本申请实施例提供一种芯片系统,该芯片系统包括处理器,处理器与存储器耦合,处理器执行存储器中存储的计算机程序,以实现如上述第一方面任一项的方法。该芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。
第六方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面任一项的方法。
可以理解的是,上述第二方面至第六方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1为本申请实施例提供的一种文件复制方法的流程示意图;
图2为本申请实施例提供的F2FS文件系统中的索引节点的数据分布结构示意图;
图3为本申请实施例提供的F2FS文件系统中索引节点的扩展属性区域的结构示意图;
图4A为相关技术提供的对F2FS文件系统中索引节点的扩展属性区域执行数据添加操作的过程示意图;
图4B为相关技术提供的对F2FS文件系统中索引节点的扩展属性区域执行数据删除操作的过程示意图;
图4C为相关技术提供的对F2FS文件系统中索引节点的扩展属性区域执行数据修改操作的过程示意图;
图5是本申请实施例提供的一种在目标索引节点中写入索引标识的流程示意图;
图6是本申请实施例提供的另一种在目标索引节点中写入索引标识的流程示意图;
图7A为本申请实施例提供的对F2FS文件系统中索引节点的扩展属性区域执行副本键值对添加操作的过程示意图;
图7B为本申请实施例提供的对F2FS文件系统中索引节点的扩展属性区域执行副本键值对删除操作的过程示意图;
图7C为本申请实施例提供的对F2FS文件系统中索引节点的扩展属性区域执行源键值对添加操作的过程示意图;
图7D为本申请实施例提供的对F2FS文件系统中索引节点的扩展属性区域执行源键值对删除操作的过程示意图;
图7E为本申请实施例提供的增加源文件所关联的副本文件时副本键值对的变化示意图;
图7F为本申请实施例提供的删除源文件所关联的副本文件时副本键值对的变化示意图;
图7G为本申请实施例提供的修改源文件所关联的副本文件时副本键值对的变化示意图;
图7H为本申请实施例提供的修改副本文件所关联的源文件时源键值对的变化示意图;
图8为本申请实施例提供的对具有副本文件的源文件进行写操作的流程示意图;
图9为本申请实施例提供的文件复制装置的结构示意图;
图10为本申请实施例提供的终端设备的结构示意图;
图11为本申请实施例提供的手机的结构示意图;
图12为本申请实施例提供的终端设备的软件结构框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
以下对本申请实施例可能涉及到的一些概念进行说明如下:
多个:若无特别说明,在本申请实施例中,多个均是指两个或两个以上。
文件系统:在本申请实施例中,文件系统是操作系统中负责管理和存储文件信息的软件机构,是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。文件系统中的文件可以包括如下三部分:目录项(directoryentry)、索引节点(index node)和数据块(data block)。
其中,文件的目录项以树状拓扑组织,形成用户使用的目录树,为业务提供通过路径访问文件的功能。
文件的索引节点可以通过目录项获取到,索引节点记录了文件的所有元数据,包括访问控制信息和数据组织信息。其中,访问控制信息可以包括属主信息、属组信息、最后一次修改文件的时间、最后一些修改属性的时间、最后一次访问的时间等。上述数据组织信息可以包括数据块的地址、文件数据加解密信息、文件尺寸、间接索引节点地址等。实践中,文件的索引节点通常占用一个块(block)的大小。实际应用中,一个块的大小通常为4KB,也即是,4096个字节。
文件的数据块被索引节点组织起来,是文件数据内容的分块保存形式。
源文件:在本申请实施例中,源文件可以是文件系统中的任一文件。
副本文件:在本申请实施例中,副本文件通常是具有独立的索引节点,且与源文件共享文件数据的文件。
普通文件:在本申请实施例中,普通文件通常是指具有独立的索引节点且未与其它文件共享文件数据的文件。
临时文件:在本申请实施例中,临时文件通常是在源文件复原时,临时建立的用以继承源文件的全部副本文件的文件。考虑到临时文件不存在被外界访问的需求,为了节省不必要的资源损耗,创建临时文件时,无需建立临时文件的目录项。在临时文件不具有目录项时,临时文件仅可以通过临时文件所关联的副本文件访问到。
源索引节点:在本申请实施例中,源索引节点通常是源文件的索引节点。
副本索引节点:在本申请实施例中,副本索引节点通常是副本文件的索引节点。实践中,由于源文件对应的文件数据解密方式,与副本文件对应的文件数据解密方式通常并不相同,为了保障在读副本文件时,终端设备总是可以访问到源文件的文件数据,副本文件的副本索引节点中用于记录文件地址的区域通常为空,也即是,终端设备在访问副本文件时,只通过源文件与副本文件之间的reflink关联关系,访问到源文件的文件数据。
临时索引节点:在本申请实施例中,临时索引节点通常是临时文件的索引节点。
源索引标识:在本申请实施例中,源索引标识通常是用于标识源索引节点的信息。
副本索引标识:在本申请实施例中,副本索引标识通常是用于标识副本索引节点的信息。
临时索引标识:在本申请实施例中,临时索引标识通常是用于标识临时索引节点的信息。
在服务器、个人计算机(Personal Computer,PC)和移动设备等各种终端设备上,文件的复制非常常见。复制文件的目的主要有以下几种:
1、备份已有的重要文件,增加数据可靠性。
2、在修改文件前进行当前版本的存档。
3、向其他关联业务提供该文件的副本。
在实际的业务场景中,上述第3种复制目的对应的复制场景也较为常见。这类复制场景中,通常只是需要业务独有的文件数据访问接口,实际上并不真正需要额外的一份文件数据。若是针对这类复制场景进行文件数据的复制,显然需要涉及大量数据的读取与写入,会拖慢业务流程、挤占输入/输入(Input/Output,I/O)带宽,且需要消耗较多存储空间,也即是,容易导致存储空间的利用率不够高且复制效率不够高。
为了解决上述问题,reflink技术应运而生。reflink是文件系统提供的基于CoW原理的轻量级数据复制方法,通过reflink复制得到的副本文件可以与源文件共享文件数据,也即是,复制得到副本文件时,无需对文件数据进行复制。如此,可以明显减少数据的读写,从而节省I/O带宽,提升业务性能,也即是,reflink技术在文件系统中的使用,可以极大地提高终端设备上的存储空间的利用率和复制效率。
reflink技术具有诸多优点,支持reflink技术的文件系统有比较多,比如,第二代Oracle集群文件系统(Oracle Cluster File System-2,OCFS2)、苹果文件系统(AppleFile System,APFS)、B树文件系统(B-Tree File System,BTRFS)、日志文件系统(ExtentsFile System,XFS),等等。这些文件系统都在不同类型的服务器或PC产品中得到了应用。
但实际应用中发现,有些文件系统中,比如,在移动设备中广泛使用的F2FS文件系统,没有用于实现reflink的方案,也即是,这些系统目前并不支持reflink功能。
通过前述分析可知,相关技术中,不支持reflink功能的文件系统在处理文件复制操作时,通常需要针对每种复制场景都对文件数据进行复制,需要消耗非常多的存储空间,且容易降低文件复制效率。
鉴于相关技术存在的上述技术问题,为了在不支持reflink功能的文件系统中实现reflink功能,以提高终端设备上的存储空间的利用率和复制效率,本申请实施例中,终端设备在检测到对目标文件系统中的源文件的reflink复制操作时,生成源文件的副本文件,副本文件包括副本索引节点;在源索引节点的扩展属性区域写入副本索引节点的副本索引标识,以及在副本索引节点的扩展属性区域写入源索引节点的源索引标识,其中,源索引节点指向源文件的文件地址。
本申请实施例至少具有以下有益效果:
1、由于每个索引节点中通常具有扩展属性区域,终端设备通过将副本索引标识写入源索引节点的扩展属性区域,以及将源索引标识写入副本索引节点的扩展属性区域,以此来建立源文件与副本文件之间的reflink关联关系,实现过程简单且较为巧妙,可以有效降低计算复杂度,有助于进一步提高复制效率。
2、终端设备在检测到对目标文件系统中的源文件的reflink复制操作时,生成源文件的副本文件,以及通过所建立的源文件与副本文件之间的reflink关联关系,实现副本文件与源文件共享文件数据,可以实现对目标文件系统中的源文件执行reflink复制操作时,无需对文件数据进行复制,有助于提高终端设备上存储空间的利用率文件和复制效率。
3、在对目标文件系统中的源文件执行reflink复制的过程中,终端设备通过将副本索引标识写入源索引节点的扩展属性区域,以及将源索引标识写入副本索引节点的扩展属性区域,来建立源文件与副本文件之间的reflink关联关系,从而实现执行reflink复制时无需对源文件的文件数据进行复制,可以实现原本不支持reflink的文件系统能够支持reflink功能,有助于提高终端设备上的存储空间的利用率和复制效率。
本申请实施例可适用于对文件系统中的任一文件进行reflink复制操作的场景。
本申请实施例提供的文件复制方法可以应用于手机、平板电脑和可穿戴设备等终端设备上,此时终端设备即为本申请实施例提供的文件复制方法的执行主体,本申请实施例对终端设备的具体类型不作任何限制。
图1为本申请实施例提供的一种文件复制方法的流程示意图,如图1所示地,该文件复制方法可以包括如下步骤101至步骤104。可以理解的,上述文件复制方法可以包括步骤101至步骤104中的全部步骤,也可以仅包括其中的部分步骤。可以理解的,文件复制方法中的各步骤在不冲突的情况下,可以任意组合。作为本申请的一个可选实施例,文件复制方法可以是仅包括步骤101和步骤102的方案。作为本申请的另一个可选实施例,文件复制方法也可以是仅包括步骤101至步骤103的方案。
步骤101,终端设备在检测到对目标文件系统中的源文件的reflink复制操作时,生成源文件的副本文件。
其中,副本文件包括副本索引节点。实践中,由于源文件对应的文件数据解密方式,与副本文件对应的文件数据解密方式通常并不相同,为了保障在读副本文件时,终端设备总是可以访问到源文件的文件数据,副本文件的副本索引节点中用于记录文件地址的区域通常为空,也即是,终端设备在访问副本文件时,只通过源文件与副本文件之间的reflink关联关系,访问到源文件的文件数据。
其中,上述源索引节点为源文件的索引节点,上述副本索引节点为副本文件的索引节点。
上述目标文件系统通常是原本不支持reflink功能的文件系统,比如,F2FS文件系统。不支持reflink功能的文件系统的索引节点中,通常不具有专门用于存放reflink功能相关数据的区域。
上述reflink复制操作通常是用于确定对源文件执行reflink复制的操作。其中,reflink复制用于生成源文件的副本文件。实践中,上述reflink复制操作可以实现为与reflink复制功能对应的软件接口被调用的操作,也可以实现为由用户执行的人机交互操作。此时,上述人机交互操作可以为点击某个选项的操作,比如点击“reflink”选项的操作,也可以为滑动某个选项的操作。可以理解的,本实施例对上述reflink复制操作的具体实现形式不做限定。
作为一个示例,终端设备可以通过如下方式检测到上述reflink复制操作:若上述reflink复制操作实现为与reflink复制功能对应的软件接口被调用的操作,则终端设备可以通过接口的被调用情况,检测到上述reflink复制操作。具体地,若对应软件接口被调用,则确定检测到reflink复制操作,反之,若对应接口没有被调用,则确定没有检测到reflink复制操作。
作为另一个示例,终端设备也可以通过如下方式检测到上述reflink复制操作:若上述reflink复制操作实现为人机交互操作,则终端设备可以通过传感器,比如,压力传感器,检测到上述reflink复制操作。
在检测到上述reflink复制操作之后,终端设备可以响应reflink复制操作,生成源文件的副本文件。此时,终端设备生成源文件的副本文件,通常是生成副本文件的副本索引节点。
实践中,由于每个文件系统中的索引节点的数据分布结构通常是已知且固定的,因此,终端设备可以按照目标文件系统中的索引节点的数据分布结构,将副本文件的已有逻辑数据,写入所创建的索引节点的对应位置,从而生成得到上述副本索引节点。其中,上述副本文件的已有逻辑数据可以包括副本文件的属主信息、属组信息等数据。
图2为本申请实施例提供的F2FS文件系统中的索引节点的数据分布结构示意图。如图2所示,索引节点中可以依次包括:属主信息、属组信息、父节点信息、链接数、文件大小、数据块个数、外部扩展地址、内部扩展区域、两个一级索引块、两个二级索引块、一个三级索引块。
其中,属主信息为文件的属主的信息。属组信息为属主所属的分组的信息。父节点信息为索引节点的父节点的索引标识。链接数用于指示索引节点所链接的目录项数量。数据块个数用于指示文件所占用的数据块数量。外部扩展地址用于指向外部扩展区域。
其中,一级索引块可以指向1018个地址。二级索引块可以指向1018个一级索引块,也即是指向1018×1018个地址。三级索引块可以指向1018个二级索引块,也即是指向1018×1018×1018个地址。其中,一个地址即为一个数据块。数据块中可以存放文件数据。一个数据块的大小通常为4KB,也即是,4096个字节。
作为本申请的一个可选实施例,源文件可以是普通文件,也可以是副本文件。
作为本申请的一个可选实施例,在被操作的源文件为普通文件时,终端设备在响应对该普通文件的reflink复制操作时,新生成的副本文件的源文件为该普通文件。举例来说,若文件A为普通文件,则终端设备在响应对文件A的reflink复制操作时,新生成的副本文件B的源文件为文件A。
作为本申请的另一个可选实施例,在被操作的源文件为副本文件时,终端设备在响应对该副本文件的reflink复制操作时,新生成的副本文件的源文件为该被操作的副本文件的源文件。举例来说,若文件A为普通文件,文件B为文件A的副本文件,则终端设备在响应对文件B的reflink复制操作时,新生成的副本文件C的源文件为文件A,此时,文件B和文件C同为文件A的副本文件。
在本申请实施例中,源文件既可以为普通文件也可以为副本文件,可以满足多种应用场景下的reflink复制需求,有助于提升终端设备的性能。另外,在被操作的源文件为副本文件时,新生成的副本文件与被操作的副本文件共享同一源文件,可以简化计算复杂度,有助于提高终端设备的数据处理效率。
步骤102,终端设备在源索引节点的扩展属性区域写入副本索引节点的副本索引标识,以及在副本索引节点的扩展属性区域写入源索引节点的源索引标识。
其中,源索引节点指向源文件的文件地址。
其中,源索引标识为用于标识源索引节点的信息,副本索引标识为用于标识副本索引节点的信息。
实践中,任一个索引节点的索引标识,可以实现为多个数字的组合,比如,“001”,也可以实现为字母与数字的组合,比如,“inode1”,还可以实现为由小写字母与大写字母的组合,比如,“inodeA”。可以理解的,本实施例对索引标识的具体实现形式不做限定。也即是,本实施例对源索引标识和副本索引标识的具体实现形式不做限定。另外,文件系统中的每两个索引节点之间,索引标识互异。
上述扩展属性区域通常是索引节点中用于存放文件的扩展属性的区域。结合图2,F2FS文件系统中,索引节点的扩展属性区域可以包括位于索引节点内的内部扩展区域和位于索引节点外的外部扩展区域。
在本申请实施例中,由于每个索引节点中通常具有扩展属性区域,终端设备通过将副本索引标识写入源索引节点的扩展属性区域,以及将源索引标识写入副本索引节点的扩展属性区域,以此来建立源文件与副本文件之间的reflink关联关系,实现过程简单且较为巧妙,可以有效降低计算复杂度,有助于进一步提高复制效率。另外,终端设备在检测到对目标文件系统中的源文件的reflink复制操作时,生成源文件的副本文件,以及通过所建立的源文件与副本文件之间的reflink关联关系,实现副本文件与源文件共享文件数据,可以实现对目标文件系统中的源文件执行reflink复制操作时,无需对文件数据进行复制,有助于提高终端设备上存储空间的利用率文件和复制效率。另外,在对目标文件系统中的源文件执行reflink复制的过程中,终端设备通过将副本索引标识写入源索引节点的扩展属性区域,以及将源索引标识写入副本索引节点的扩展属性区域,来建立源文件与副本文件之间的reflink关联关系,从而实现执行reflink复制时无需对源文件的文件数据进行复制,可以实现原本不支持reflink的文件系统能够支持reflink功能,有助于提高终端设备上的存储空间的利用率和复制效率。
作为本申请的一个可选实施例,终端设备在检测到对副本文件的读操作时,根据副本索引节点中记录的源索引标识,确定源索引节点,从源索引节点指向的文件地址读取文件数据。
其中,上述读操作通常是用于确定读取文件数据的操作。实践中,上述读操作可以实现为文件的读操作接口被调用的操作,也可以实现为人机交互操作,比如双击副本文件的操作。可以理解的,本实施例对读操作的具体实现形式不做限定。
在本申请实施例中,终端设备可以响应对副本文件的读操作,以及通过源文件与副本文件之间的reflink关联关系,找到源索引节点,以及从源索引节点指向的文件地址中读取文件数据,也即是,终端设备在响应对副本文件的读操作时,可以读取到源文件的文件数据。
作为本申请的一个可选实施例,终端设备在检测到对源文件的读操作时,从源索引节点指向的文件地址读取文件数据。
作为本申请的一个可选实施例,源文件具有读写锁,副本文件具有读写锁。
其中,读写锁通常包括读锁和写锁。
读锁,也称为共享锁。针对同一份数据,多个事务的读操作可以同时进行而不会互相影响,相互不阻塞。
写锁,也称为排他锁。针对同一份数据,当前事务的写操作没有完成前,其它事务的写锁和读锁将会被阻断。这样就能确保在给定的时间里,只有一个事务能执行写入,并防止其它事务读取正在被执行写操作的数据。
在本申请实施例中,终端设备在持有目标文件的读写锁中的读锁时,具有对目标文件进行读操作的权限,此时,其它设备或进程也可以持目标文件的读锁并对目标文件进行读操作。终端设备在持有目标文件的读写锁中的写锁时,具有对目标文件进行写操作的权限,此时,其它设备或进程无法对目标文件进行读操作或者写操作,如此,可以保障数据安全。其中,目标文件为源文件或者副本文件。源文件和副本文件都具有读写锁,可以保障源文件和副本文件被执行多种并发操作时的安全性。
作为本申请的一个可选实施例,终端设备在获取到副本文件的写锁以及获取到源文件的读锁时,在源索引节点的扩展属性区域写入副本索引节点的副本索引标识,以及在副本索引节点的扩展属性区域写入源索引节点的源索引标识。
在本申请实施例中,终端设备在建立源文件与副本文件之间的reflink关联关系的过程中,持副本文件的写锁,可以保障副本文件在建立reflink关联关系时不支持其它的诸如写操作、删除操作等的操作,以保障副本文件的数据安全。另外,终端设备在建立源文件与副本文件之间的reflink关联关系的过程中,持源文件的读锁,可以保障同一源文件可以同时与多个副本文件建立reflink关联关系,从而提高终端设备建立reflink关联关系时的效率。
考虑到获取锁的过程通常需要消耗计算量以及延慢数据处理速度,因此,终端设备在响应对源文件或者副本文件的读操作时,通常无需获取源文件或者副本文件的读锁,如此,可以提高终端设备的数据处理速度。
作为本申请的一个可选实施例,目标文件系统为F2FS,扩展属性区域包括位于目标索引节点内的内部扩展区域和位于目标索引节点外的外部扩展区域。
图3为本申请实施例提供的F2FS文件系统中索引节点的扩展属性区域的结构示意图。如图3所示,F2FS文件系统中,索引节点的内部扩展区域大小为200字节,外部扩展区域大小为4072字节。也即是,F2FS文件系统中,索引节点的扩展属性区域大小4272字节,其中,4272字节=200字节+4072字节。图3中,扩展属性区域从左往右的方向,为从头部至尾部的方向。
考虑到F2FS文件系统中,索引节点的扩展属性区域支持多种数据操作,比如,数据添加操作、数据删除操作和数据修改操作。相关技术中,对扩展属性区域执行数据添加操作时,终端设备通常是在扩展属性区域中已有扩展属性内容的尾部添加待添加的数据。对扩展属性区域执行数据删除操作时,终端设备通常是先确定待删除的数据在扩展属性区域的位置及待删除的数据的长度,然后将从待删除的数据的结束位置到整个扩展属性内容的结束位置的所有内容都向前移动,且移动长度与待删除的数据的长度一致。对扩展属性区域执行数据修改操作时,终端设备通常需要执行数据删除操作和数据添加操作,也即是,终端设备通常是先从扩展属性区域删除修改前的数据,然后在扩展属性区域的已有扩展属性内容的尾部添加修改后的数据。其中,上述数据添加操作用于在扩展属性区域添加数据。上述数据删除操作用于在扩展属性区域删除数据,上述数据修改操作用于对扩展属性区域的数据进行修改。
图4A为相关技术提供的对F2FS文件系统中索引节点的扩展属性区域执行数据添加操作的过程示意图。如图4A所示,扩展属性区域中,已有四个数据,依次为数据1、数据2、数据3和数据4,待添加的数据为数据m,对扩展属性区域执行数据添加操作时,终端设备将数据m添加在扩展属性区域已有扩展属性内容的尾部。
图4B为相关技术提供的对F2FS文件系统中索引节点的扩展属性区域执行数据删除操作的过程示意图。如图4B所示,扩展属性区域中,已有四个数据,依次为数据1、数据2、数据3和数据4,待删除的数据为数据2,对扩展属性区域执行数据删除操作时,终端设备删除数据2,以及将从数据2结束位置到数据4结束位置的所有内容都向前移动,且移动长度与数据2长度一致。
图4C为相关技术提供的对F2FS文件系统中索引节点的扩展属性区域执行数据修改操作的过程示意图。如图4C所示,扩展属性区域中,已有四个数据,依次为数据1、数据2、数据3和数据4,对数据2修改后得到的数据为数据21,对扩展属性区域执行数据修改操作时,终端设备先从扩展属性区域中删除数据2,然后在扩展属性区域中已有扩展属性内容的尾部添加数据21。
实际应用中发现,由于F2FS文件系统中索引节点的扩展属性区域,既包括位于索引节点内的内部扩展区域,也包括位于索引节点外的外部扩展区域,若按照如图4A-图4C的方式对F2FS文件系统中索引节点的扩展属性区域进行数据操作,则被操作的数据很可能处于外部扩展区域,又由于文件系统在持久化过程中的数据保存粒度为一个数据块,且具体是先保存索引节点所在的数据块,再保存索引节点之外的外部扩展区域所在的数据块,若两次数据块保存期间发生异常情况,很可能导致被写入的索引标识保存失败,也即是很可能数据丢失,导致数据安全性不够高。
鉴于相关技术中存在的上述技术问题,为了避免两次数据块保存期间发生异常情况,导致数据丢失,本申请实施例中,上述步骤102可以被替换为如下步骤:终端设备在源索引节点的内部扩展区域写入副本索引标识,以及在副本索引节点的内部扩展区域写入源索引标识。
本申请实施例中,将需要被写入的索引标识写入内部扩展区域,可以实现对被写入的索引标识进行及时保存,从而避免两次数据块保存期间发生的异常情况所导致的被写入索引标识保存失败,有助于保障数据安全。
作为本申请的一个可选实施例,参阅图5,图5是本申请实施例提供的一种在目标索引节点中写入索引标识的流程示意图。其中,目标索引节点包括源索引节点和副本索引节点。此时,可以将步骤102替换为步骤501至步骤502。详述如下:
步骤501,终端设备在源索引节点的内部扩展区域的头部写入副本索引标识。
步骤502,终端设备在副本索引节点的内部扩展区域的头部写入源索引标识。
本实施例中,由于F2FS文件系统中,索引节点内部的内部扩展区域与索引节点处于同一数据块,索引节点外部的外部扩展区域与索引节点分别处于相异的两个数据块,又由于文件系统在持久化过程中的数据保存粒度为一个数据块,且具体是先保存索引节点所在的数据块,再保存索引节点之外的外部扩展区域所在的数据块,将需要被写入的索引标识写入内部扩展区域的头部,可以实现对被写入的索引标识进行及时保存,从而避免两次数据块保存期间发生的异常情况所导致的被写入索引标识保存失败,有助于保障数据安全。另外,直接将需要写入的索引标识写入内部扩展区域的头部,实现过程较为简单,计算复杂度较低,有助于提高终端设备的数据处理速度。
考虑到F2FS文件系统中,索引节点的扩展属性区域中的数据通常为键值对形式。参阅图6,图6是本申请实施例提供的一种在目标索引节点中写入索引标识的流程示意图。其中,目标索引节点包括源索引节点和副本索引节点。此时,可以将步骤102替换为步骤601至步骤602。详述如下:
步骤601,终端设备将副本索引标识,写入副本键值对中的副本数组。
其中,副本键值对位于源索引节点的内部扩展区域的头部,副本键值对的值为副本数组,副本数组的大小固定,且副本数组的大小与内部扩展区域的大小相适配。
上述副本数组用于写入源文件的所有副本文件的副本索引标识。
上述副本键值对为源索引节点的扩展属性区域中的一个键值对。上述副本键值对的键可以实现为多个数字,比如101,也可以实现为字母与数字的组合,比如,key1,还可以实现为其它形式,可以理解的,本实施例对副本键值对的键的实现形式不做具体限定。
实践中,内部扩展区域的大小为200字节,考虑到内部扩展区域可能需要存储其它一些重要数据,因此,副本数组的大小通常略小于内部扩展区域的大小,也即是,副本数组的大小通常略小于200字节,比如,可以为172字节。其中,172字节可以用于写入43个32位的无符号整型数据。需要说明的是,副本数组的大小通常略小于内部扩展区域的大小,也即是,副本数组的大小与内部扩展区域的大小相适配,可以在保障其它性能的同时,保障对源文件与副本文件之间的reflink关联关系的最大保存能力。
可以理解的,本申请实施例中,若某一索引节点的内部扩展属性中写入了副本键值对,则表明该索引节点对应的文件为关联有副本文件的源文件。
在本申请实施例中,由于同一源文件可以具有多个副本文件,终端设备将源文件的所有副本文件的副本索引标识写入同一键值对,且具体为写入副本键值对中的副本数组,与将各副本索引标识分别写入多个不同的键值对相比,可以提高数据写入速度。另外,终端设备将同一源文件对应的多个副本索引标识全部写入源索引节点的头部的副本数组中,由于副本数组的大小固定,因此,副本数组在源索引节点的内部扩展区域的位置固定,可以实现方便地对副本数组中的副本索引标识进行增加、删除或修改,也即是,可以实现快速地建立、删除或者修改源文件与副本文件之间的reflink关联关系,有助于进一步提高终端设备的复制效率。
步骤602,终端设备在副本索引节点的内部扩展区域的头部写入源键值对。
其中,源键值对的值为源索引标识。
上述源键值对为副本索引节点的扩展属性区域中的一个键值对。
上述源键值对的键可以实现为多个数字,比如102,也可以实现为字母与数字的组合,比如,key2,还可以实现为其它形式。可以理解的,本实施例对源键值对的键的实现形式不做具体限定。
在本申请实施例中,终端设备将包括源索引标识的源键值对,写入副本索引节点的内部扩展区域的头部,由于源索引标识的大小固定,因此,源键值对在副本索引节点的内部扩展区域的位置固定,可以实现方便地对源索引标识进行增加、删除或修改,也即是,可以实现快速地建立、删除或者修改源文件与副本文件之间的reflink关联关系,有助于进一步提高终端设备的复制效率。
可以理解的,本申请实施例中,若某一索引节点的内部扩展属性中写入了源键值对,则表明该索引节点对应的文件为副本文件。
作为本申请的一个可选实施例,上述步骤601可以替换为如下步骤:若源索引节点的内部扩展区域不存在副本键值对,生成副本键值对,以及将副本键值对写入源索引节点的内部扩展区域的头部,其中,副本键值对的值为包括副本索引标识的副本数组。
实践中,终端设备生成副本键值对时,可以先创建副本数组,然后将副本索引标识写入所创建的副本数组中。其中,副本数组的大小固定,且副本数组的大小与内部扩展区域的大小相适配。实践中,副本数组的大小通常略小于内部扩展区域的大小,可以在保障其它性能的同时,保障对源文件与副本文件之间的reflink关联关系的最大保存能力。
在本申请实施例中,在所生成的副本文件为源文件的首个副本文件时,源索引节点中不存在副本键值对。此时,终端设备可以结合副本数组的大小和副本索引标识,生成副本键值对,以及将所生成的副本键值对插入源索引节点的内部扩展区域的头部,如此,可以保障将副本索引标识有效写入源索引节点的内部扩展区域。
需要说明的是,终端设备将生成的副本键值对写入源索引节点的内部扩展区域的头部时,通常是先将内部扩展区域中已有的扩展属性内容后移,且具体后移长度与副本键值对的大小一致。之后,终端设备将所生成的副本键值对插入源索引节点的内部扩展区域的头部。
作为本申请的一个可选的实施例,终端设备在确定向副本键值对中增加目标副本索引标识时,将目标副本索引标识写入副本键值对的副本数组。
其中,上述目标副本索引标识,可以是源文件的任一副本文件对应的副本索引标识。其中,每个副本文件具有一个索引节点,为了便于描述,将副本文件的索引节点记作副本索引节点。每个副本索引节点,具有一个节点标识,为了便于描述,将副本索引节点的节点标识记作副本索引标识。
这里,终端设备需要向副本键值对中增加目标副本索引标识,通常说明终端设备需要建立源文件与目标副本索引标识对应的副本文件之间的reflink关联关系。此时,终端设备可以直接将目标副本索引标识写入副本键值对中的副本数组,直接修改键值对中的内容,无需添加新键值对,与单独采用目标副本索引标识建立一个键值对并将所建立的键值对写入源索引节点相比,操作简单,可以有效降低计算复杂度,从而进一步提高终端设备的复制效率。
作为本申请的另一个可选的实施例,终端设备在确定删除副本键值对中的目标副本索引标识时,从副本数组中删除目标副本索引标识。
这里,终端设备需要删除副本键值对中的目标副本索引标识,通常说明终端设备需要删除源文件与目标副本索引标识对应的副本文件之间的reflink关联关系。此时,终端设备可以直接从副本数组中删除目标副本索引标识,直接修改键值对中的内容,无需删除键值对,与从源索引节点中删除一个键值对相比,操作简单,可以有效降低计算复杂度,从而进一步提高终端设备的复制效率。
作为本申请的又一个可选的实施例,终端设备在确定修改源键值对中的源索引标识时,将源键值对中的源索引标识切换为修改后的源索引标识。
这里,终端设备需要修改源键值对中的源索引标识,通常说明终端设备需要切换副本文件所关联的源文件。此时,终端设备可以直接将源键值对中的源索引标识切换为修改后的源索引标识,直接修改键值对中的内容,无需删除旧键值对以及添加新键值对,操作简单,可以有效降低计算复杂度,从而进一步提高终端设备的复制效率。
需要说明的是,由于源索引节点的内部扩展区域中,用于存放副本索引标识的键值对仅有一个,也即是副本键值对,整个副本键值对仅为内部扩展区域的一个数据,且该数据在源索引节点的内部扩展区域中的位置和大小均固定。将副本键值对写入内部扩展区域时,终端设备可以直接将原有的扩展属性内容后移,以将该副本键值对插入源索引节点的内部扩展区域的头部。将副本键值对从内部扩展区域删除时,终端设备可以直接删除源索引节点的内部扩展区域的头部的第一个数据,也即是直接删除副本键值对,以及将其余扩展属性内容前移。另外,终端设备可以通过对副本键值对中的副本数组进行操作,实现改变源文件与各副本文件之间的关联关系。比如,可以直接向副本数组中添加副本索引标识,以增加源文件关联的副本文件;也可以直接向副本数组中直接删除某个副本索引标识,以减少源文件关联的副本文件;还可以在副本数组中修改某个副本索引标识。如此,可以极大地降低计算复杂度,从而提高终端设备的复制效率。
另外,由于副本索引节点的内部扩展区域中,用于存放源索引标识的键值对仅有一个,也即是源键值对,整个源键值对仅为内部扩展区域的一个数据,且该数据在副本索引节点的内部扩展区域中的位置和大小均固定。将源键值对写入内部扩展区域时,终端设备可以直接将原有的扩展属性内容后移,以将该源键值对插入副本索引节点的内部扩展区域的头部。将源键值对从内部扩展区域删除时,终端设备可以直接删除副本索引节点的内部扩展区域的头部的第一个数据,也即是直接删除源键值对,以及将其余扩展属性内容前移。另外,终端设备可以通过对源键值对的取值进行操作,实现改变副本文件所关联的源文件。比如,可以直接将源键值对的取值从文件A对应的索引标识,修改为文件B对应的索引标识,以实现将副本文件关联的源文件从文件A切换为文件B。如此,可以极大地降低计算复杂度,从而提高终端设备的复制效率。
图7A为本申请实施例提供的对F2FS文件系统中索引节点的扩展属性区域执行副本键值对添加操作的过程示意图。如图7A所示,源索引节点的扩展属性区域中,已有四个数据,依次为数据1、数据2、数据3和数据4,待添加的数据为副本键值对,对扩展属性区域执行数据添加操作时,终端设备将副本键值对添加在扩展属性区域的内部扩展区域的头部。其中,扩展属性区域中的每个数据为键值对,也即是数据1至数据4为键值对。
图7B为本申请实施例提供的对F2FS文件系统中索引节点的扩展属性区域执行副本键值对删除操作的过程示意图。如图7B所示,源索引节点的扩展属性区域中,已有五个数据,依次为副本键值对、数据1、数据2、数据3和数据4,待删除的数据为副本键值对,对扩展属性区域执行数据删除操作时,终端设备删除副本键值对,以及将从副本键值对结束位置到数据4结束位置的所有内容都向前移动,且移动长度与副本键值对长度一致。
图7C为本申请实施例提供的对F2FS文件系统中索引节点的扩展属性区域执行源键值对添加操作的过程示意图。如图7C所示,副本索引节点的扩展属性区域中,已有四个数据,依次为数据5、数据6、数据7和数据8,待添加的数据为源键值对,对扩展属性区域执行数据添加操作时,终端设备将源键值对添加在扩展属性区域的内部扩展区域的头部。其中,扩展属性区域中的每个数据为键值对,也即是数据5至数据8为键值对。
图7D为本申请实施例提供的对F2FS文件系统中索引节点的扩展属性区域执行源键值对删除操作的过程示意图。如图7D所示,副本索引节点的扩展属性区域中,已有五个数据,依次为源键值对、数据5、数据6、数据7和数据8,待删除的数据为源键值对,对扩展属性区域执行数据删除操作时,终端设备删除源键值对,以及将从源键值对的结束位置到数据8结束位置的所有内容都向前移动,且移动长度与源键值对长度一致。
图7E为本申请实施例提供的增加源文件所关联的副本文件时副本键值对的变化示意图。如图7E所示,源索引节点的扩展属性区域中的副本键值对中具有3个副本索引标识,分别为标识1、标识2和标识3,此时,源文件有3个副本文件,分别为标识1对应的文件、标识2对应的文件,标识3对应的文件。当源索引节点的扩展属性区域中的副本键值对中增加了标识4时,终端设备增加了源文件的副本文件,且所增加的副本文件为标识4对应的文件。
图7F为本申请实施例提供的删除源文件所关联的副本文件时副本键值对的变化示意图。如图7F所示,源索引节点的扩展属性区域中的副本键值对中具有3个副本索引标识,分别为标识1、标识2和标识3,此时,源文件有3个副本文件,分别为标识1对应的文件、标识2对应的文件,标识3对应的文件。当从源索引节点的副本键值对中删除标识1时,终端设备删除了源文件一个副本文件,且具体为删除了标识1对应的文件。
另外,图7F中,副本键值对的副本数组中删除标识1之后,位于标识1后面的标识2和标识3全部前移了标识1的长度。可以理解的,图7F仅是一种应用场景下的示例,本实施例对副本数组中被删除的副本索引标识之后的数据是否前移,不做具体限定。
图7G为本申请实施例提供的修改源文件所关联的副本文件时副本键值对的变化示意图。如图7G所示,源索引节点的扩展属性区域中的副本键值对中具有3个副本索引标识,分别为标识1、标识2和标识3,此时,源文件有3个副本文件,分别为标识1对应的文件、标识2对应的文件,标识3对应的文件。当将源索引节点的扩展属性区域中的副本键值对中的标识1修改为标识5时,终端设备修改了源文件所关联的副本文件,且具体是将副本文件从标识1对应的文件修改为标识5对应的文件。这里,终端设备通过改变副本键值对中的副本索引标识,改变源文件关联的副本文件。
图7H为本申请实施例提供的修改副本文件所关联的源文件时源键值对的变化示意图。如图7H所示,副本索引节点的源键值对中,源索引标识为标识6。当将副本索引节点中的源键值对中的标识6修改为标识7时,终端设备将副本文件的源文件从标识6对应的文件修改为标识7对应的文件。这里,终端设备通过改变源键值对中的源索引标识,改变副本文件关联的源文件。
步骤103,终端设备在检测到对副本文件的写操作时,对副本文件执行副本复原操作,将副本复原操作后的副本文件确定为普通文件。
其中,上述写操作用于确定写被操作的文件。
这里,上述写操作可以实现为副本文件的写操作接口被调用的操作,也可以实现为人机交互操作,比如,可以实现为用户对副本文件的指示写文件的操作,如,双击副本文件的操作、持续点击副本文件的操作。上述持续点击通常是指点击时长大于或者等于预设时长。上述预设时长为预先设定的时长值,比如,可以为1秒。可以理解的,本实施例对写操作的具体实现形式不做限定。
作为一个示例,终端设备可以在副本文件的写操作接口被调用时,确定检测到对副本文件的写操作。作为一个示例,终端设备也可以是在传感器检测到用户对副本文件执行的指示写文件的操作时,确定检测到对源文件的写操作。
本实施例中,终端设备可以响应对副本文件的写操作,以及对副本文件执行副本复原操作,从而将副本文件复原为普通文件。
其中,上述副本复原操作包括:复制源文件的文件数据,以及将所复制的文件数据存入新文件地址,副本索引节点指向新文件地址;删除副本索引节点的扩展属性区域中的源索引标识,删除源索引节点的扩展属性区域中的副本索引标识。其中,上述新文件地址通常是新分配的文件地址。副本文件被分配上述新文件地址之后,终端设备可以将新文件地址写入副本索引节点,实现副本索引节点指向新文件地址。
本申请实施例中,终端设备可以响应对副本文件的写操作,以及将副本文件复原为普通文件,副本文件复原为普通文件之后,与源文件之间不再具有关联关系。可以实现对副本文件的写时复制。另外,终端设备通过删除源索引节点中的副本索引节标识,以及删除副本索引节点中的源索引标识,来实现将副本文件恢复为普通文件,操作简单,易于实现有助于提高终端设备的副本文件复原效率。
步骤104,终端设备在检测到对副本文件的删除操作时,对副本文件执行副本删除操作。
其中,副本删除操作包括:删除副本文件,以及删除源索引节点的扩展属性区域中的副本索引标识。
其中,上述删除操作用于确定删除被操作的文件。
这里,上述删除操作可以实现为副本文件的删除操作的接口被调用的操作,也可以实现为人机交互操作,比如可以实现为用户在副本文件上执行“X”手势的操作。可以理解的,本实施例对删除操作的具体实现形式不做限定。
本实施例中,终端设备可以响应对副本文件的删除操作,删除副本文件,同时删除源索引节点中的副本索引标识。举例来说,若源索引节点中记录了副本索引标识1和副本索引标识2,所需删除的副本文件为副本文件1,且副本文件1与副本索引标识1对应,则终端设备可以将源索引节点中的副本索引标识1删除。
本申请实施例中,终端设备可以响应对副本文件的删除操作,以及对副本文件进行有效删除。另外,终端设备通过删除副本文件以及删除源索引节点中的副本索引节标识,来实现将副本文件删除,操作简单,易于实现有助于提高终端设备的副本文件删除效率。
可以理解的,可以一次对一个副本文件执行删除操作,也可以同时对多个副本文件执行删除操作。在对一个副本文件执行删除操作时,终端设备可以删除该副本文件,在对多个副本文件执行删除操作时,终端设备可以删除多个副本文件。终端设备对每个副本文件的删除过程基本相同,本实施例不做赘述。
作为本申请的一个可选实施例,源文件具有读写锁,且副本文件具有读写锁,在检测到对副本文件的目标操作时,若获取到副本文件的写锁且获取到源文件的读锁,则对副本文件执行与目标操作对应的副本操作。
其中,目标操作包括写操作和删除操作,写操作对应的副本操作为副本复原操作,删除操作对应的副本操作为副本删除操作。
本实施例中的副本删除操作与前述副本删除操作基本相同,这里不做赘述。另外,本实施例中的副本复原操作与前述副本复原操作基本相同,这里不做赘述。
本申请实施例中,终端设备只有在获取到副本文件的写锁及源文件的读锁的情况下,才对副本文件进行副本删除操作或者副本复原操作。终端设备对副本文件进行副本删除操作或者副本复原操作的过程中,持副本文件的写锁,可以保障副本文件被删除或者复原时不支持其它的诸如写操作、删除操作等的操作,以保障副本文件的数据安全。另外,终端设备对副本文件进行副本删除操作或者副本复原操作的过程中,持源文件的读锁,只有在获取到源文件的读锁的情况下才对副本文件进行删除或者复原,可以保障多种操作并发时源文件的数据安全。
作为本申请的一个可选实施例,可以参考图8,图8为本申请实施例提供的对具有副本文件的源文件进行写操作的流程示意图。详述如下:
步骤801,终端设备在检测到对源文件的写操作时,创建临时文件,临时文件包括临时索引节点。
其中,上述写操作可以实现为源文件的写操作接口被调用的操作,也可以实现为人机交互操作,比如,可以实现为用户对源文件的指示写文件的操作,如,双击源文件的操作。
作为一个示例,终端设备可以在源文件的写操作接口被调用时,确定检测到对源文件的写操作。作为另一个示例,终端设备也可以是在传感器检测到用户对源文件执行的指示写文件的操作时,确定检测到对源文件的写操作。
上述临时文件为临时创建的一个文件。
考虑到临时文件不存在被外界访问的需求,为了节省不必要的资源损耗,创建临时文件时,无需建立临时文件的目录项。在临时文件不具有目录项时,临时文件仅可以通过临时文件所关联的副本文件访问到。
步骤802,终端设备将源文件的文件数据复制到临时文件,将源索引节点的扩展属性区域中的副本索引标识写入临时索引节点的扩展属性区域,删除源索引节点的扩展属性区域中的副本索引标识,将源文件确定为普通文件。
这里,终端设备通过将源文件的文件数据复制到临时文件,以及将源文件的源索引节点中记录的reflink关联关系复制到临时文件的临时索引节点的相应位置,以实现由临时文件继承源文件的所有副本文件,以保障在源文件复原为普通文件后,不影响副本文件的功能。
步骤803,终端设备将副本索引节点的扩展属性区域中的源索引标识,切换为临时索引节点的临时索引标识,以及将临时文件确定为副本文件的源文件。
这里,终端设备通过将源文件关联的每个副本文件的副本索引节点中记录的源索引标识修改为临时文件的临时索引标识,实现每个副本文件将临时文件作为自己的源文件,从而实现源文件切换,可以保障源文件复原为普通文件后,副本文件依旧可以正常使用。
在本申请实施例中,终端设备可以响应对源文件的写操作,以及将源文件复原为普通文件。源文件复原为普通文件之后,与复原之前所关联的所有副本文件之间不再具有关联关系。可以实现对源文件的有效复原。另外,终端设备通过将源文件的文件数据复制到临时文件,将源文件的源索引节点中记录的reflink关联关系复制到临时文件的临时索引节点的相应位置,以及将源文件关联的每个副本文件的副本索引节点中记录的源索引标识修改为临时文件的临时索引标识,以实现由临时文件继承源文件的所有副本文件,以保障在源文件复原为普通文件后,副本文件依旧可以正常使用,也即是,可以保障在对源文件复原之后,不对其副本文件造成影响,有助于提高数据安全性和稳定性。
作为本申请的一个可选实施例,将源索引节点的扩展属性区域中的副本索引标识写入临时索引节点的扩展属性区域,删除源索引节点的扩展属性区域中的副本索引标识,包括:在获取到源文件的写锁时,将源索引节点的扩展属性区域中的副本索引标识写入临时索引节点的扩展属性区域,删除源索引节点的扩展属性区域中的副本索引标识。
在本申请实施例中,终端设备在获取到源文件的写锁的情况下,才执行将源文件的源索引节点中记录的reflink关联关系复制到临时文件的临时索引节点的相应位置,可以保障源文件在复原的过程中,源文件不支持其它的诸如写操作、删除操作等的操作,以保障源文件的数据安全。
作为本申请的一个可选实施例,将副本索引节点的扩展属性区域中的源索引标识,切换为临时索引节点的临时索引标识,包括:在获取到副本文件的写锁时,将副本索引节点的扩展属性区域中的源索引标识,切换为临时索引节点的临时索引标识。
在本申请实施例中,终端设备在获取到副本文件的写锁的情况下,才对副本文件的副本索引节点中记录的源索引标识进行修改,可以保障副本文件在被修改的过程中,副本文件不支持其它的诸如写操作、删除操作等的操作,以保障副本文件的数据安全。
对应于上文实施例的文件复制方法,图9示出了本申请实施例提供的文件复制装置的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图9,该文件复制装置包括:
副本生成单元91,用于在检测到对目标文件系统中的源文件的reflink复制操作时,生成源文件的副本文件,副本文件包括副本索引节点;
数据写入单元92,用于在源索引节点的扩展属性区域写入副本索引节点的副本索引标识,以及在副本索引节点的扩展属性区域写入源索引节点的源索引标识,其中,源索引节点指向源文件的文件地址。
作为本申请的一个实施例,文件复制装置可以实现如图1-图3、图5-图8所示实施例以及其他相关方法实施例。
本申请实施例提供的文件复制装置中各模块实现各自功能的过程,具体可参考前述图1-图3、图5-图8所示实施例以及其他相关方法实施例的描述,此处不再赘述。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。还应理解的是,虽然术语“第一”、“第二”等在文本中在一些本申请实施例中用来描述各种元素,但是这些元素不应该受到这些术语的限制。这些术语只是用来将一个元素与另一元素区分开。例如,第一表格可以被命名为第二表格,并且类似地,第二表格可以被命名为第一表格,而不背离各种所描述的实施例的范围。第一表格和第二表格都是表格,但是它们不是同一表格。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供的文件复制方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
例如,终端设备可以是WLAN中的站点(STATION,ST),可以是蜂窝电话、无绳电话、会话启动协议(Session InitiationProtocol,SIP)电话、无线本地环路(Wireless LocalLoop,WLL)站、个人数字处理(Personal Digital Assistant,PDA)设备、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、车联网终端、电脑、膝上型计算机、手持式通信设备、手持式计算设备、卫星无线设备、无线调制解调器卡、电视机顶盒(set top box,STB)、用户驻地设备(customer premise equipment,CPE)和/或用于在无线系统上进行通信的其它设备以及下一代通信系统,例如,5G网络中的终端设备或者未来演进的公共陆地移动网络(Public Land Mobile Network,PLMN)网络中的终端设备等。
作为示例而非限定,当终端设备为可穿戴设备时,该可穿戴设备还可以是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,如智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。
图10是本申请一实施例提供的终端设备的结构示意图。如图10所示,该实施例的终端设备包括:至少一个处理器13(图10中仅示出一个)、存储器11,存储器11中存储有可在处理器13上运行的计算机程序12。处理器13执行计算机程序12时实现上述各个文件复制方法实施例中的步骤,例如图3所示的步骤301至步骤307。或者,处理器13执行计算机程序12时实现上述各装置实施例中各模块/单元的功能,例如图9所示单元91至单元92的功能。
终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。终端设备可包括,但不仅限于,处理器13、存储器11。本领域技术人员可以理解,图10仅仅是终端设备的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如终端设备还可以包括输入发送设备、网络接入设备、总线等。
所称处理器13可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器11在一些实施例中可以是终端设备的内部存储单元,例如终端设备的硬盘或内存。存储器11也可以是终端设备的外部存储设备,例如终端设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。进一步地,存储器11还可以既包括终端设备的内部存储单元也包括外部存储设备。存储器11用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如计算机程序的程序代码等。存储器11还可以用于暂时地存储已经发送或者将要发送的数据。
下文以终端设备是手机为例,图11示出了手机100的结构示意图。
手机100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及SIM卡接口195等。其中传感器模块180可以包括陀螺仪传感器180A,加速度传感器180B,气压传感器180C,磁传感器180D,环境光传感器180E,距离传感器180F,接近光传感器180G、指纹传感器180H,温度传感器180J,触摸传感器180K(当然,手机100还可以包括其它传感器,比如温度传感器,压力传感器、气压传感器、骨传导传感器等,图中未示出)。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(Neural-network Processing Unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是手机100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
处理器110可以运行本申请实施例提供的文件复制方法,以便于准确识别实际场景,提升用户的体验。处理器110可以包括不同的器件,比如集成CPU和GPU时,CPU和GPU可以配合执行本申请实施例提供的文件复制方法,比如文件复制方法中部分算法由CPU执行,另一部分算法由GPU执行,以得到较快的处理效率。
应理解,在实际应用中,手机100可以包括比图10所示的更多或更少的部件,本申请实施例不作限定。图示手机100仅是一个范例,并且手机100可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
终端设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明终端设备的软件结构。图12是本申请实施例的终端设备的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图12所示,应用程序包可以包括电话、相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图12所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供终端设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android Runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.164,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
另外,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例还提供了一种终端设备,终端设备包括至少一个存储器、至少一个处理器以及存储在至少一个存储器中并可在至少一个处理器上运行的计算机程序,处理器执行计算机程序时,使终端设备实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时可实现上述各个方法实施例中的步骤。
本申请实施例还提供了一种芯片系统,芯片系统包括处理器,处理器与存储器耦合,处理器执行存储器中存储的计算机程序,以实现上述各个方法实施例中的步骤。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读存储介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使对应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (12)

1.一种文件复制方法,其特征在于,应用于终端设备,所述方法包括:
在检测到对目标文件系统中的源文件的reflink复制操作时,生成所述源文件的副本文件,所述副本文件包括副本索引节点;
在源索引节点的扩展属性区域写入所述副本索引节点的副本索引标识,以及在所述副本索引节点的扩展属性区域写入所述源索引节点的源索引标识,其中,所述源索引节点指向所述源文件的文件地址。
2.根据权利要求1所述的文件复制方法,其特征在于,所述目标文件系统为闪存友好型文件系统,所述扩展属性区域包括位于目标索引节点内的内部扩展区域和位于所述目标索引节点外的外部扩展区域,所述目标索引节点包括所述源索引节点和所述副本索引节点;
所述在源索引节点的扩展属性区域写入所述副本索引节点的副本索引标识,以及在所述副本索引节点的扩展属性区域写入所述源索引节点的源索引标识,包括:
在所述源索引节点的内部扩展区域的头部写入所述副本索引标识,以及在所述副本索引节点的内部扩展区域的头部写入所述源索引标识。
3.根据权利要求2所述的文件复制方法,其特征在于,所述在所述源索引节点的内部扩展区域的头部写入所述副本索引标识,包括:
将所述副本索引标识,写入副本键值对中的副本数组,其中,所述副本键值对位于所述源索引节点的内部扩展区域的头部,所述副本键值对的值为所述副本数组,所述副本数组的大小固定,且所述副本数组的大小与内部扩展区域的大小相适配。
4.根据权利要求2所述的文件复制方法,其特征在于,所述在所述副本索引节点的内部扩展区域的头部写入所述源索引标识,包括:
在所述副本索引节点的内部扩展区域的头部写入源键值对,其中,所述源键值对的值为所述源索引标识。
5.根据权利要求3所述的文件复制方法,其特征在于,所述将所述副本索引标识,写入副本键值对中的副本数组,包括:
若所述源索引节点的内部扩展区域不存在所述副本键值对,生成所述副本键值对,以及将所述副本键值对写入所述源索引节点的内部扩展区域的头部,其中,所述副本键值对的值为包括所述副本索引标识的所述副本数组。
6.根据权利要求1所述的文件复制方法,其特征在于,所述方法还包括:
在检测到对所述副本文件的写操作时,对所述副本文件执行副本复原操作,将副本复原操作后的所述副本文件确定为普通文件;
其中,所述副本复原操作包括:复制所述源文件的文件数据,以及将所复制的文件数据存入新文件地址,所述副本索引节点指向所述新文件地址;删除所述副本索引节点的扩展属性区域中的所述源索引标识,删除所述源索引节点的扩展属性区域中的所述副本索引标识。
7.根据权利要求1所述的文件复制方法,其特征在于,所述方法还包括:
在检测到对所述副本文件的删除操作时,对所述副本文件执行副本删除操作;
其中,所述副本删除操作包括:删除所述副本文件,以及删除所述源索引节点的扩展属性区域中的所述副本索引标识。
8.根据权利要求1所述的文件复制方法,其特征在于,所述源文件具有读写锁,且所述副本文件具有读写锁,所述方法还包括:
在检测到对所述副本文件的目标操作时,若获取到所述副本文件的写锁且获取到所述源文件的读锁,则对所述副本文件执行与所述目标操作对应的副本操作,其中,所述目标操作包括写操作和删除操作,所述写操作对应的副本操作为副本复原操作,所述删除操作对应的副本操作为副本删除操作。
9.根据权利要求1所述的文件复制方法,其特征在于,所述方法还包括:
在检测到对所述源文件的写操作时,创建临时文件,所述临时文件包括临时索引节点;
将所述源文件的文件数据复制到所述临时文件,将所述源索引节点的扩展属性区域中的副本索引标识写入所述临时索引节点的扩展属性区域,删除所述源索引节点的扩展属性区域中的副本索引标识,将所述源文件确定为普通文件;
将所述副本索引节点的扩展属性区域中的所述源索引标识,切换为所述临时索引节点的临时索引标识,以及将所述临时文件确定为所述副本文件的源文件。
10.根据权利要求9所述的文件复制方法,其特征在于,所述源文件具有读写锁,且所述副本文件具有读写锁;
所述将所述源索引节点的扩展属性区域中的副本索引标识写入所述临时索引节点的扩展属性区域,删除所述源索引节点的扩展属性区域中的副本索引标识,包括:在获取到所述源文件的写锁时,将所述源索引节点的扩展属性区域中的副本索引标识写入所述临时索引节点的扩展属性区域,删除所述源索引节点的扩展属性区域中的副本索引标识;
所述将所述副本索引节点的扩展属性区域中的所述源索引标识,切换为所述临时索引节点的临时索引标识,包括:在获取到所述副本文件的写锁时,将所述副本索引节点的扩展属性区域中的所述源索引标识,切换为所述临时索引节点的临时索引标识。
11.一种终端设备,其特征在于,所述终端设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至10任一项所述的文件复制方法。
12.一种芯片系统,其特征在于,所述芯片系统包括处理器,所述处理器与存储器耦合,所述处理器执行存储器中存储的计算机程序,以实现如权利要求1至10任一项所述的文件复制方法。
CN202310871791.4A 2023-07-14 2023-07-14 文件复制方法、终端设备及芯片系统 Pending CN117708072A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310871791.4A CN117708072A (zh) 2023-07-14 2023-07-14 文件复制方法、终端设备及芯片系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310871791.4A CN117708072A (zh) 2023-07-14 2023-07-14 文件复制方法、终端设备及芯片系统

Publications (1)

Publication Number Publication Date
CN117708072A true CN117708072A (zh) 2024-03-15

Family

ID=90148612

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310871791.4A Pending CN117708072A (zh) 2023-07-14 2023-07-14 文件复制方法、终端设备及芯片系统

Country Status (1)

Country Link
CN (1) CN117708072A (zh)

Similar Documents

Publication Publication Date Title
CN109254733B (zh) 用于存储数据的方法、装置和系统
KR102128139B1 (ko) 플레이스홀더에 의한 파일 관리 기법
CN102349062B (zh) 浏览器缓存与远程仓库同步的方法和系统
CN112035410B (zh) 日志存储方法、装置、节点设备及存储介质
US11836112B2 (en) Path resolver for client access to distributed file systems
US20160063018A1 (en) File System with Data Block Sharing
US20140067772A1 (en) Methods, apparatuses and computer program products for achieving eventual consistency between a key value store and a text index
US20160179789A1 (en) Content localization using fallback translations
CN111444274B (zh) 数据同步方法、数据同步系统及其装置、介质和系统
CN103514298A (zh) 一种实现文件锁的方法及元数据服务器
US10855637B2 (en) Architecture for large data management in communication applications through multiple mailboxes
EP3497586A1 (en) Discovery of calling application for control of file hydration behavior
CN109597707A (zh) 克隆卷数据拷贝方法、装置及计算机可读存储介质
US11157456B2 (en) Replication of data in a distributed file system using an arbiter
CN107798063A (zh) 快照处理方法和快照处理装置
CN115481444B (zh) 文件保护方法及电子设备
JP2016515258A (ja) 最適化ファイル動作のためのファイル集合化
WO2022022546A1 (zh) 一种移动分布式系统数据同步的方法和设备
RU2635255C2 (ru) Системный когерентный кэш с возможностью фрагментации/дефрагментации
CN117708072A (zh) 文件复制方法、终端设备及芯片系统
CN109857719B (zh) 分布式文件处理方法、装置、计算机设备以及存储介质
US20170091253A1 (en) Interrupted synchronization detection and recovery
WO2023070462A1 (zh) 一种文件去重方法、装置和设备
WO2024078262A1 (zh) 快照方法、电子设备、计算机程序产品及可读存储介质
CN117407373A (zh) 用于管理文件的方法、计算设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination