从现有数据文件构建新数据文件的方法及系统与流程

文档序号:11654117阅读:232来源:国知局
从现有数据文件构建新数据文件的方法及系统与流程
本公开涉及一种从现有数据文件构建新数据文件的方法、系统及计算机可读存储介质。
背景技术
:在计算机系统中,上层用户文件可以在底层以数据文件的形式存储。每个用户文件可以包括一个或多个数据块,同一用户文件和/或不同用户文件中的相同数据块可以对应于数据文件中的同一个数据块。存储数据块的底层数据文件在上层可能被多个用户文件交叉引用。因此,当对用户文件进行读、写、创建、或删除操作时,需要对该用户文件所引用的数据文件进行访问。例如,当删除用户文件时,可能涉及数据文件的重新构建。技术实现要素:本公开的一个方面提供了一种从现有数据文件构建新数据文件的方法,上述现有数据文件包括一个或多个数据块,上述方法包括:获取现有数据文件中要保留的数据块的描述信息和上述新数据文件的描述信息;根据上述要保留的数据块的描述信息确定要保留的数据块的块地址;以及根据上述要保留的数据块的块地址和上述新数据文件的描述信息构建新数据文件的元数据,上述新数据文件包括上述要保留的数据块。可选地,上述要保留的数据块的描述信息包括:上述要保留的数据块的长度和在上述现有文件中的地址偏移量;以及/或者上述要保留的数据块的块地址。可选地,上述新数据文件的描述信息包括上述新数据文件的inode和全路径名称;以及上述构建新数据文件的元数据包括将上述新数据文件的inode和全路径名称与上述要保留的数据块的块地址相关联。可选地,上述新数据文件的描述信息包括上述新数据文件的inode和全路径名称;以及将上述要保留的数据块的块地址与上述新数据文件的inode和文件名相关联包括:根据上述要保留的数据块的块地址确定上述要保留的数据块的长度和在新数据文件中的地址偏移量;以及将上述新数据文件的inode和全路径名称与上述要保留的数据块的长度和在新数据文件中的地址偏移量相关联。可选地,在构建上述新数据文件的元数据之后:删除上述现有数据文件的元数据;并且/或者删除上述现有数据文件中不需要保留的数据块内容;并且/或者将上述现有数据文件中不需要保留的数据块标记为可删除。可选地,上述方法由内核态文件系统执行。可选地,还包括接收扩展接口调用请求,上述扩展接口调用请求中包含上述要保留的数据块的描述信息和上述新数据文件的描述信息。本公开的另一方面提供了一种从现有数据文件构建新数据文件的系统,上述现有数据文件包括一个或多个数据块,上述系统包括:获取模块,获取现有数据文件中要保留的数据块的描述信息和上述新数据文件的描述信息;确定模块,根据上述要保留的数据块的描述信息确定要保留的数据块的块地址;以及构建模块,根据上述要保留的数据块的块地址和上述新数据文件的描述信息构建新数据文件的元数据,上述新数据文件包括上述要保留的数据块。本公开的另一方面还提供了另一种从现有数据文件构建新数据文件的系统,上述现有数据文件包括一个或多个数据块,上述系统包括:存储器,存储有可执行指令;以及处理器,运行上述可执行指令,以执行上述从现有数据文件构建新数据文件的方法。本公开的另一方面提供了一种计算机可读存储介质,包含用于执行上述从现有数据文件构建新数据文件的方法的可执行指令。附图说明为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:图1示意性示出了从数据文件中删除数据块的过程示意图;图2a示意性示出了根据本公开实施例从数据文件中删除数据块的过程示意图;图2b示意性示出了根据本公开实施例的从现有数据文件构建新数据文件的方法的流程图;图2c示意性示出了根据本公开另一实施例的从现有数据文件构建新数据文件的方法的流程图;图3示意性示出了根据本公开实施例的块地址信息表;图4示意性示出了根据本公开实施例的从现有数据文件构建新数据文件的系统的框图;以及图5示意性示出了根据本公开实施例的另一种从现有数据文件构建新数据文件的系统的框图。具体实施方式为解决上述在内的问题,提高用户的使用体验,根据结合附图对本公开示例性实施例的以下详细描述,本公开的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。本公开实施例提供了一种从现有数据文件构建新数据文件的方法,上述现有数据文件包括一个或多个数据块。上述方法包括获取现有数据文件中要保留的数据块的描述信息和上述新数据文件的描述信息,根据上述要保留的数据块的描述信息确定要保留的数据块的块地址,根据上述要保留的数据块的块地址和上述新数据文件的描述信息构建新数据文件的元数据,上述新数据文件包括上述要保留的数据块。图1示意性示出了在删除用户文件时构建新的数据文件的示意图。图1示意性示出了从数据文件中删除数据块的过程示意图。如图1所示,用户文件a、用户文件b和用户文件c是三个上层用户文件。其中,用户文件a包括数据块blk1、数据块blk2、和数据块blk3,用户文件b包括数据块blk4、数据块blk1、和数据块blk3,用户文件c包括数据块blk5、数据块blk2、和数据块blk6。在底层的数据文件1中,相同的用户文件数据块可以对应于同一个数据文件数据块。例如,如图1所示,数据文件1包括数据块dblk1~数据块dblk6,其中,数据块dblk1对应于用户文件a的数据块blk1和用户文件b的数据块blk1,数据块dblk2对应于用户文件a的数据块blk2和用户文件c的数据块blk2,数据块dblk3对应于用户文件a的数据块blk3和用户文件b的数据块blk3。另外,如图1所示,数据块dblk4对应于用户文件b的数据块blk4,数据块dblk5对应于用户文件c的数据块blk5,数据块dblk6对应于用户文件c的数据块blk6。对于数据文件1中的每个数据块,可以根据其被用户文件的引用情况而维护一个引用计数。例如,数据块dblk1被用户文件a和用户文件b各引用一次,则其引用计数为2。类似地,数据块dblk2的引用计数为2,数据块dblk3的引用计数为2,数据块dblk4的引用计数为1,数据块dblk5的引用计数为1,数据块dblk6的引用计数为1。当删除用户文件时,数据文件1中的相应数据块的引用计数减少。例如,当删除用户文件a和用户文件b时,数据文件1中的数据块dblk1的引用计数变为2-1-1=0,数据块dblk2的引用计数变为2-1=1,数据块dblk3的引用计数变为2-1-1=0,数据块dblk4的引用计数变为1-1=0,数据块dblk5和数据块dblk6的引用计数不变,仍为1。对于引用计数为0的数据块,系统可以将其存储空间回收,并基于其余数据块形成一个新的数据文件2。如图1所示,数据文件2中包括引用计数不为0的数据块dblk2、数据块dblk5、和数据块dblk6。可以通过将引用计数不为0的数据块读取出来并写入到一个新的数据文件中,来形成数据文件2。然而,这种做法会产生大量的数掘块读写操作,导致数据读写过程慢,数据处理效率低下。图2a示意性示出了根据本公开实施例从数据文件中删除数据块的过程示意图。如图2a所示,可以形成包括引用计数不为0的数据块dblk2、数据块dblk5、和数据块dblk6的新的数据文件3,但数据块dblk2、数据块dblk5、和数据块dblk6的实际存储位置并不改变,而是将数据块dblk2、数据块dblk5、和数据块dblk6的块地址与数据文件3相关联,例如基于数据块dblk2、数据块dblk5、和数据块dblk6的块地址和数据文件3的描述信息形成数据文件3的元数据。数据文件3的描述信息例如可以包括数据文件3的全路径名称和inode等等,但不限于此。如图2a所示,黑色背景的方框对应于被删除的数据块dblk1、dblk3和dblk4。图2b示意性示出了根据本公开实施例的从现有数据文件构建新数据文件的方法的流程图。如图2b所示,从现有数据文件构建新数据文件的方法包括操作s201~s203,其中,现有数据文件包括一个或多个数据块。在操作s201,获取现有数据文件中要保留的数据块的描述信息和新数据文件的描述信息。在操作s202,根据上述要保留的数据块的描述信息确定要保留的数据块的块地址。在操作s203,根据上述要保留的数据块的块地址和上述新数据文件的描述信息构建新数据文件的元数据,上述新数据文件包括上述要保留的数据块。根据本公开的实施例,当要从现有数据文件删除部分数据块(例如,引用计数为0的数据块)时,可以通过使用要保留的数据块的块地址和新数据文件的描述信息构建新数据文件的元数据,来把要保留的数据块关联到新数据文件,来创建新数据文件。根据本公开的实施例,元数据可以包括数据文件的各种描述性信息,可以用于识别数掘文件、评价数据文件、和/或追踪数据文件在使用过程中的变化,等等。根据本公开的实施例,数据文件的描述信息可以包括能够用于识别和/或对新数据文件寻址的任何信息,例如新数据文件的inode和全路径名称等等,但不限于此。以此方式构建的新数据文件的元数据中不包括那些要删除的数据块的块地址,即新数据文件中不包括那些要删除的数据块,从而实现了对数据块的删除。这个过程并不改变数据文件中数据块的存储位置,而是将其存储位置与新数据文件相关联,可以避免大量数据块读写操作,显著节约了系统资源,提高了数据处理效率。例如,参考图2a所示,可以通过基于引用计数不为0的数据块dblk2、数据块dblk5、和数据块dblk6的块地址和新的数据文件3的描述信息,来构建数据文件3的元数据。这样构建数据文件3,可以不必将数据块dblk2、数据块dblk5、和数据块dblk6读取出来,再写入数据文件3,而只需要在数据文件3的元数据中记录数据块dblk2、数据块dblk5、和数据块dblk6的存储位置与数据文件3的关联关系。根据本公开的实施例,要保留的数据块的描述信息可以包括要保留的数据块的长度和在所述现有文件中的地址偏移量,以及/或者所述要保留的数据块的块地址。根据本公开的实施例,要保留的数据块的描述信息可以包括要保留的数据块的长度和在现有数据文件中的地址偏移量。通过要保留的数据块的长度和在现有数据文件中的地址偏移量,可以确定要保留的数据块的块地址。表1示意性示出了根据本公开实施例的数据块描述信息,其中提供了图2a所示示例中各数据块的数据块长度和在现有数据文件中的地址偏移量。表1数据块数据块长度地址偏移量dblk1length1offset1dblk2length2offset2dblk3length3offset3dblk4length4offset4dblk5length5offset5dblk6length6offset6根据本公开的实施例,每个数据块的描述信息可以包括该数据块的长度。每个数据块可以具有相同或不同的长度。例如,每个数据块可以具有一个或多个固定长度的数据子块,该数据块的长度可以由其包含的数据子块的个数来描述。或者,每个数据块的长度也可以由其包含的字节数或比特数来描述。根据本公开的实施例,每个数据块的描述信息还可以包括该数据块在其数据文件中的地址偏移量。例如,每个数据文件可以具有一个对应的参考地址,每个数据块的地址偏移量描述了该数据块的存储地址相对于该参考地址的偏移量。例如,如果每个数据块的长度是已知的,则可以通过一个地址来寻址整个数据块,则该地址偏移量可以是这一个地址相对于参考地址的偏移量。根据数据块的长度和地址偏移量,可以确定该数据块的块地址。块地址是该数据块的实际物理存储地址,根据块地址就可以直接访问数据块的存储地址。或者,根据本公开的实施例,要保留的数据块的描述信息还可以包括所要保留的数据块的块地址。根据本公开的实施例,通过要保留的数据块的长度和在现有文件中的地址偏移量可以确定要保留的数据块的块地址,或者,也可以直接获取要保留的数据块的块地址作为保留的数据块的描述信息。当然,要保留的数据块的描述信息也可以包括要保留的数据块的长度和在所述现有文件中的地址偏移量,以及要保留的数据块的块地址。在本公开的实施例中,新数据文件的描述信息包括能够用于识别和/或对新数据文件寻址的任何信息,例如新数据文件的inode和全路径名称等等,但不限于此。其中,inode可以包括与文件相关的重要信息,例如存放目录的基本信息,包括时间、文件名、使用者、和/或群组等。数据文件的全路径名称描述了可以寻址到该数据文件的全部路径。根据本公开的实施例,构建新数据文件的元数据包括将所述新数据文件的inode和全路径名称与所述要保留的数据块的块地址相关联。例如,可以在新数据文件的元数据中记录要保留的数据块的块地址、以及新数据文件的inode和全路径名称。或者,可以在新数据文件的元数据中记录要保留的数据块的地址偏移量、数据块长度、以及新数据文件的inode和全路径名称。根据本公开的实施例,可以根据数据块的块地址及新数据文件的参考地址确定其地址偏移量。根据本公开的实施例,还可以根据数据块的块地址确定数据块的长度。通过将要保留的数据块的块地址与新数据文件的描述信息关联起来,不需改变数据文件中数据块的存储位置,而是将其存储位置与新数据文件相关联,可以避免大量数据块读写操作,显著节约了系统资源,提高了数据处理效率。根据本公开的实施例,在构建上述新数据文件的元数据之后,可以删除现有数据文件的元数据。根据本公开的实施例,还可以删除现有数据文件中不需要保留的数据块内容或者将现有数据文件中不需要保留的数据块标记为可删除。这样,原本存储不需要保留的数据块内容的存储空间可以用于存储其他数据。图2c示意性示出了根据本公开另一实施例的从现有数据文件构建新数据文件的方法的流程图。如图2c所示,根据本公开另一实施例从现有数据文件构建新数据文件的方法包括操作s301~s307。在操作s301,获取需要整理的数据文件,该数据文件中可以包括一个或多个数据块。在操作s302,获取数据块描述信息和新数掘文件的描述信息。数据块描述信息例如可以是数据块索引。从数据块索引中可以获得要保留的数据块的地址偏移量及长度,或者可以获得要保留的数据块的块地址。新数据文件的描述信息可以包括新数据文件的inode和全路径名称等信息。在操作s303,将保留的数据块描述信息及新数据文件的描述信息通过扩展接口调用请求发送给内核文件系统。例如,可以根据保留的数据块描述信息及新数据文件的描述信息构建块地址信息表,以便于通过扩展接口调用请求发送。在操作s304,内核文件系统根据收到的扩展属性命令解析保留的数据块地址偏移量和长度。在操作s305,根据地址偏移量和长度获取保留的数据块的块地址。在操作s306,根据保留的数据块的块地址和新数据文件的描述信息,重新排列构造新的元数据地址信息。在操作s307,删除不需要保留的数据块,以释放存储空间。根据本公开的实施例,可以对setxattr(key,value)接口(数据接口)进行扩展,设置一个通用的协议命令:set_datafile_gc,当内核态文件系统收到setxattr调用请求时,对key命令进行解析,如果发现是set_datafile_gc命令,则对地址信息表对value进行解析,地址信息表格式及内存如图3所示。图3示意性示出了根据本公开实施例的块地址信息表。如图3所示,根据本公开的实施例,该块地址信息表中包括头信息、块地址信息和全路径名称。头信息例如可以包括intsegmentcount、ino、和filenamelength等信息,块地址信息例如可以包括offset、length等信息,全路径名称例如可以包括filename等信息。具体地,扩展接口调用请求的实现程序如下:通过在内核态文件系统中执行本公开实施例中从现有数据文件构建新数据文件的方法,由于回收空间时要保留的数据块实际上已经在磁盘上了,可以理解为在内核态文件系统中,数据文件元数据的数据块地址的重新排列过程。图4示意性示出了根据本公开实施例的从现有数据文件构建新数据文件的系统400的框图,上述现有数据文件包括一个或多个数据块。如图4所示,系统400包括获取模块410、确定模块420、和构建模块430。获取模块410用于获取现有数据文件中要保留的数据块的描述信息和上述新数据文件的描述信息。根据本公开的实施例,获取模块410例如可以执行参考图2b的操作s201描述的操作。确定模块420根据上述要保留的数据块的描述信息确定要保留的数据块的块地址。根据本公开的实施例,确定模块420例如可以执行参考图2b的操作s202描述的操作。构建模块430根据上述要保留的数据块的块地址和上述新数据文件的描述信息构建新数据文件的元数据,上述新数据文件包括上述要保留的数据块。根据本公开的实施例,构建模块430例如可以执行参考图2b的操作s203描述的操作。根据本公开的实施例,由于新数据文件的元数据中不包括那些要删除的数据块的块地址,即新数据文件中不包括那些要删除的数据块,从而实现了对数据块的删除。这个过程并不改变数据文件中数据块的存储位置,而是将其存储位置与新数掘文件相关联,可以避免大量数据块读写操作,显著节约了系统资源,提高了数据处理效率。需要说明的是,本公开提供的一种从现有数据文件构建新数据文件的系统与一种从现有数据文件构建新数据文件的方法是相对应的,具体细节可参考上述对从现有数据文件构建新数据文件的方法的描述,在此不再赘述。并且,可以理解的是,获取模块410、确定模块420以及构建模块430可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块410、确定模块420以及构建模块430中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,获取模块410、确定模块420以及构建模块430中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。图5示意性示出了根据本公开实施例的另一种从现有数据文件构建新数据文件的系统的框图。如图5所示,系统500包括存储器520和处理器510。存储器520存储有可执行指令。处理器510运行上述可执行指令,以执行上述从现有数据文件构建新数据文件的方法。具体地,处理器510例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器510还可以包括用于缓存用途的板载存储器。处理器510可以是用于执行参考图2b或图2c描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。存储器520,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,存储器可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。存储器的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。存储器520可以包括计算机程序521,该计算机程序521可以包括代码/计算机可执行指令,其在由处理器510执行时使得处理器510执行例如上面结合图2b或图2c所描述的方法流程及其任何变形。计算机程序521可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序521中的代码可以包括一个或多个程序模块,例如包括521a、模块521b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器510执行时,使得处理器510可以执行例如上面结合图2b或图2c所描述的方法流程及其任何变形。本公开的另一方面提供了一种计算机可读存储介质,包含用于执行上述从现有数据文件构建新数据文件的方法的可执行指令。尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1