掌桥专利:专业的专利平台
掌桥专利
首页

增量生成索引的方法、装置及系统

文献发布时间:2023-06-19 11:08:20


增量生成索引的方法、装置及系统

技术领域

本公开涉及数据存储领域,具体而言,涉及一种增量生成索引的方法、装置及系统。

背景技术

大数据时代,计算机上存储的数据量呈几何级数的增长,文件系统中文件数量动辄以亿计数,甚至十亿百亿也寻常可见。在数据的各种使用场景中免不了要对这些文件进行搜索。在海量文件系统中进行搜索,是一件非常耗时和耗资源的事情。为了快速搜索,同时也为了减轻资源占用,需要对存储的文件做索引。

扫描整个文件系统,将其中的所有文件元数据记录到一个索引数据库中。搜索时,先在索引中搜索,找到后再根据记录中的文件路径定位到文件系统中具体的文件。为了将文件系统中产生的变化更新到索引中,需要定期扫描这个文件系统。

但是,上述方法会存在以下问题:

(1)每次对文件系统的完整扫描,时间和资源的消耗依然非常大。

(2)文件系统一段时间内产生的变化只占整个文件系统的一部分,而每次完整扫描太多重复性的工作。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本公开实施方式提供了一种增量生成索引的方法、装置及系统,以至少解决【由于完整扫描文件系统而造成的资源和时间的消耗非常大】的技术问题。

根据本公开实施方式的一个方面,提供了一种增量生成索引的方法,包括:读取文件系统的日志;从所述日志中解析出一段时间内所述文件系统所发生的变化的相关信息;基于所解析出的所述变化的相关信息,以增量的方式生成所述文件系统的索引。

根据本公开实施方式的另一方面,还提供了一种读取模块,被配置为读取文件系统的日志;解析模块,被配置为从所述日志中解析出一段时间内所述文件系统所发生的变化的相关信息;增量生成模块,被配置为基于所解析出的所述变化的相关信息,以增量的方式生成所述文件系统的索引。

根据本公开实施方式的另一方面,还提供了一种索引生成系统,包括文件系统和上述技术方案任一项所述的增量生成索引的装置。

根据本公开实施方式的另一方面,还提供了一种计算机设备,包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序用于实现如上任一项所述的增量生成索引方法。

根据本公开实施方式的另一方面,还提供了一种可读存储介质,所述可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现如上任一项所述的增量生成索引方法。

在本公开实施方式中,采用增量生成索引的方式,通过基于从文件系统的日志中解析出一段时间内所述文件系统所发生的变化的相关信息,以增量的方式生成所述文件系统的索引,解决了【由于完整扫描文件系统而造成的资源和时间的消耗非常大】的技术问题,具有节省资源和时间的技术效果。

附图说明

此处所说明的附图用来提供对本公开的进一步理解,构成本申请的一部分,本公开的示意性实施方式及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:

图1是根据本公开实施方式的一种可选的生成索引方法的流程示意图;

图2是根据本公开实施方式的另一种可选的生成索引方法的流程示意图;

图3是根据本公开实施方式的一种可选的生成索引装置的结构图;

图4是根据本公开实施方式的一种可选的生成索引系统的结构图。

具体实施方式

为了使本技术领域的人员更好地理解本公开方案,下面将结合本公开实施方式中的附图,对本公开实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本公开一部分的实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都应当属于本公开保护的范围。

需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施方式能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

关键术语定义

文件系统:对文件存储设备的空间进行组织和分配、负责文件存储并对存入的文件进行保护和检索的系统。文件系统中的数据分为数据和元数据。

数据块(data block或block):存储设备进行数据读写文件的最小单位,一个文件的数据可能写到多个数据块上。

数据:普通文件中的实际数据。

元数据(meta data):用来描述一个文件的特征的系统数据,诸如文件的创建者、文件大小、访问权限、文件数据块的分布信息等,存储在inode或MFT的记录中。

inode:在类unix操作系统的文件系统中储存文件元数据的区域。每个inode在一个文件系统有唯一的编号。

MFT:主文件表(Master File Table),NTFS文件系统的一个连续磁盘区域,由一系列文件和目录的元数据记录组成,包含了NTFS文件系统中所有文件和目录记录。可以通过MFT编号找到对应的记录。

索引:将文件系统中的文件记录,包括文件路径、inode编号(或MFT编号)、文件大小、文件类型(目录也可以认为是一种特殊的文件)等,以结构化的格式集合一起,比如存储在MySQL、sqlite等数据库中,可以实现整个文件系统中文件的快速查找。这些文件记录集合的载体称为索引。

概述

目前流行的文件系统,如NTFS、EXT4和XFS等,基本上都是日志式文件系统(journaling file system)。日志式文件系统会在文件系统内部划出一块连续的区域记录文件系统的日志,称为日志区域。文件系统在把数据写入到具体的数据块前,首先把要做变更的文件的元数据写到日志区域,然后才去更新相应文件的元数据及数据块。在系统崩溃的情况下重放日志区域的记录能更快速恢复文件系统,保护文件系统免受损坏,而不需要扫描整个文件系统。

日志区中的信息记录下了变更的文件的相关信息,如文件的标志(XFS文件系统以及EXT4文件系统中为文件的inode号,NTFS文件系统中为MFT编号)、操作类型(如创建文件,修改文件,删除文件等),变更对应的数据块等。在更新索引时,可以通过日志区中的记录来实现增量更新。

不同文件系统的日志区信息访问方式不同。XFS文件系统的日志可通过“xfs_logprint”命令将日志信息导出到一个普通文件中。EXT4文件系统的日志一般存放在一个inode号为8的文件中(此文件隐藏不可见)。NTFS文件系统的日志存放在每个盘根目录下的“$LogFile”文件中。

日志区中每一条信息对应一次文件变化操作,如新建、修改、删除。遍历日志区的所有信息,即可再现一段时间内文件系统所发生的变化。

实施方式1

根据本公开实施方式,提供了一种增量生成索引的方法,如图1所示,该方法包括:

步骤S101,判断日志是否是首次更新。

在日志是首次更新的情况下,执行步骤S109,否则,执行步骤S102。

步骤S102,判断是否是日志式文件系统。

在文件系统是日志式文件系统的情况下,执行步骤S103,否则,执行步骤S109。

步骤S103,判断日志是否存储在文件系统内部。

在日志存储在文件系统内部的情况下,执行步骤S104,否则,执行步骤S111。

步骤S104,读取文件系统日志。

步骤S105,判断日志是否充足。

分析所读取的日志是否满足做增量更新的条件。文件系统的日志区大小是固定的,写到末尾后再从头开始写,会覆盖掉已有的内容。当增量更新需要的日志被覆盖掉后,日志不充足,此时,执行步骤S109,进行全量更新,否则,执行步骤S106。

步骤S106,遍历日志。

遍历日志中的记录,从中解析出文件信息,包括:文件标志(XFS文件系统以及EXT4文件系统中为文件的inode号,NTFS文件系统中为MFT编号)、操作类型等。

步骤S107,确定操作类型。

日志中记录的对文件进行操作的操作类型包括:创建、修改和删除。在操作类型为删除的情况下,执行步骤S110,在索引中删除对应的记录即可。在操作类型为创建或修改的情况下,执行步骤S108。

步骤S108,根据日志记录,获取文件属性。

根据日志记录中的文件标志(XFS文件系统以及EXT4文件系统中为文件的inode号,NTFS文件系统中为MFT编号),获取更完整的文件属性,例如,文件路径,文件大小、文件类型等。

跳转到步骤S110。

步骤S109,扫描文件系统。

进行全量更新,扫描整个文件系统。之后,执行步骤S110。

步骤S110,更新索引。

在增量生成索引的情况下,基于从日志中获取的文件属性,更新索引,更新完成后的索引即为整个文件系统的全量索引。

在全量生成索引的情况下,基于扫描文件系统获取的文件属性,更新索引。

结束流程。

步骤S111,安装插件,备份日志。

对于采用了外部设备存储日志区的文件系统,可以在目标操作系统安装插件,在备份成功后,通过插件获取日志并传输到备份服务器上,然后执行步骤S104。

实施方式2

虚拟机备份后,需要对磁盘镜像中的文件系统做文件索引。将镜像以回环设备方式挂载起来,若非首次备份且是日志式文件系统,获取日志,分析日志,日志中最早的记录时间小于上一次备份时间,则可以确定期间的日志没有被覆盖,可以采用从上一次备份时间开始遍历日志来做增量索引更新。

具体地,如图2所示,包括以下步骤:

S201,判断是否满足预设条件。

判断文件系统是否满足预设条件。其中,预设条件为:1)在该文件系统中存在所述索引,即,索引非首次更新或备份;2)文件系统为日志式文件系统;3)日志存储在文件系统内部,或者虽然日志存储在外部设备,但已通过安装插件的方式拷贝了日志。

在满足预设条件下,执行步骤S202,否则,执行步骤S205。

步骤S202,读取文件系统的日志。

读取文件系统的日志。分析该日志是否满足增量更新的条件。所述增量更新的条件是所述日志中最早的记录时间早于所述索引的最后一次更新的时间。

在该日志满足增量更新的条件下,执行步骤S203;在该日志不满足增量更新的条件下,扫描整个文件系统,以全量的方式生成索引。

步骤S203,从所述日志中解析出一段时间内所述文件系统所发生的变化的相关信息。

从所述索引的最后一次更新的时间对应的所述日志中的记录开始,遍历所述日志中的记录,从所述记录中解析出从最后一次更新的时间到当前时间段内的所述文件系统所发生的变化的相关信息。其中,所述相关信息包括以下至少之一:文件标志和操作类型。

其中,所述文件标志在所述文件系统为XFS文件系统或EXT4文件系统的情况下为文件的inode号,在所述文件系统为NTFS文件系统的情况下为MFT编号。所述操作类型包括以下至少之一:删除、修改和创建。

步骤S204,基于所解析出的所述变化的相关信息,以增量的方式生成所述文件系统的索引。

在所述操作类型为删除的情况下,在所述索引中删除相应的记录。

在所述操作类型为创建或修改的情况下,基于所述文件标志获取文件属性,并将所述文件属性更新到所述索引中,其中,所述文件属性包括以下至少之一:文件路径,文件大小和文件类型。

步骤S205,扫描整个文件系统,以全量的方式生成索引。

需要说明的是,对于前述的各方法实施方式,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施方式均属于优选实施方式,所涉及的动作和模块并不一定是本公开所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施方式的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本公开各个实施方式所述的方法。

实施方式3

根据本公开实施方式,还提供了一种用于实施上述增量生成索引的方法,如图3所示,该装置包括:读取模块32、解析模块34和增量生成模块36。

读取模块32被配置为读取文件系统的日志;

解析模块34被配置为从所述日志中解析出一段时间内所述文件系统所发生的变化的相关信息;

增量生成模块36被配置为基于所解析出的所述变化的相关信息,以增量的方式生成所述文件系统的索引。

实施方式4

根据本公开实施方式,还提供了一种索引生成系统,包括文件系统42和增量生成索引的装置44,其中,增量生成索引的装置44被配置为实现上述任一增量生成索引的方法。

实施方式5

本公开的实施方式还提供了一种计算机设备。包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序用于实现上述任一增量生成索引的方法。

本公开的实施方式还提供了一种计算机存储介质。可选地,在本实施方式中,上述存储介质存储有计算机程序,所述计算机程序被处理器执行时用于实现上述任一增量生成索引的方法。

可选地,在本实施方式中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述实施方式中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施方式所述方法的全部或部分步骤。

在本公开的上述实施方式中,对各个实施方式的描述都各有侧重,某个实施方式中没有详述的部分,可以参见其他实施方式的相关描述。

在本申请所提供的几个实施方式中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施方式仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中`A的部分或者全部单元来实现本实施方式方案的目的。

另外,在本公开各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本公开的实施方式还可以配置为:

1.一种增量生成索引的方法,包括:

读取文件系统的日志;

从所述日志中解析出一段时间内所述文件系统所发生的变化的相关信息;

基于所解析出的所述变化的相关信息,以增量的方式生成所述文件系统的索引。

2.根据项1所述的方法,其中,

读取文件系统的日志是在所述文件系统满足预设条件的情况下进行的。

3.根据项2所述的方法,其中,所述预设条件包括:

在所述文件系统中存在所述索引;和

所述文件系统为日志式文件系统。

4.根据项3所述的方法,其中,所述预设条件还包括:所述日志存储在所述文件系统内部。

5.根据项3所述的方法,其中,所述预设条件还包括:在所述日志存储在外部设备的情况下,通过安装插件的方式拷贝了所述日志。

6.根据项2至5中任一项所述的方法,其中,所述方法还包括:在不满足所述预设条件的情况下,扫描整个所述文件系统,以全量的方式生成所述索引。

7.根据项1所述的方法,其中,在读取文件系统的日志之后,所述方法还包括:

分析所述日志是否满足增量更新的条件,其中,从所述日志中解析出一段时间内所述文件系统所发生的变化的相关信息是在所述日志满足所述增量更新的条件下执行的。

8.根据项7所述的方法,其中,所述方法还包括:在所述日志不满足所述增量更新的条件下,扫描整个所述文件系统,以全量的方式生成所述索引。

9.根据项7所述的方法,其中,所述增量更新的条件是所述日志中最早的记录时间早于所述索引的最后一次更新的时间。

10.根据项1所述的方法,其中,从所述日志中解析出一段时间内所述文件系统所发生的变化的相关信息包括:从所述索引的最后一次更新的时间对应的所述日志中的记录开始,遍历所述日志中的记录,从所述记录中解析出从最后一次更新的时间到当前时间段内的所述文件系统所发生的变化的相关信息,其中,所述相关信息包括以下至少之一:文件标志和操作类型。

11.根据项10所述的方法,其中,

所述文件标志在所述文件系统为XFS文件系统或EXT4文件系统的情况下为文件的inode号,在所述文件系统为NTFS文件系统的情况下为MFT编号;和/或

所述操作类型包括以下至少之一:删除、修改和创建。

12.根据项11所述的方法,其中,基于所解析出的所述变化的相关信息,以增量的方式生成所述文件系统的索引包括:

在所述操作类型为删除的情况下,在所述索引中删除相应的记录;

在所述操作类型为创建或修改的情况下,基于所述文件标志获取文件属性,并将所述文件属性更新到所述索引中,其中,所述文件属性包括以下至少之一:文件路径,文件大小和文件类型。

13.根据项1至12中任一项所述的方法,其中,所述方法应用于虚拟机备份后对磁盘镜像中的文件系统生成文件索引的场景。

14.根据项13所述的方法,其中,在读取文件系统的日志之前,所述方法还包括将镜像以回环设备方式挂载起来。

15.一种增量生成索引的装置,其中,包括:

读取模块,被配置为读取文件系统的日志;

解析模块,被配置为从所述日志中解析出一段时间内所述文件系统所发生的变化的相关信息;

增量生成模块,被配置为基于所解析出的所述变化的相关信息,以增量的方式生成所述文件系统的索引。

16.根据项15所述的装置,其中,

读取文件系统的日志是在所述文件系统满足预设条件的情况下进行的。

17.根据项16所述的装置,其中,所述预设条件包括:

在所述文件系统中存在所述索引;和

所述文件系统为日志式文件系统。

18.根据项17所述的装置,其中,所述预设条件还包括:所述日志存储在所述文件系统内部。

19.根据项17所述的装置,其中,所述预设条件还包括:在所述日志存储在外部设备的情况下,通过安装插件的方式拷贝了所述日志。

20.根据项16至19中任一项所述的装置,其中,还包括全量生成模块,被配置为:在不满足所述预设条件的情况下,扫描整个所述文件系统,以全量的方式生成所述索引。

21.根据项15所述的装置,其中,还包括判断模块,被配置为:

分析所述日志是否满足增量更新的条件,其中,从所述日志中解析出一段时间内所述文件系统所发生的变化的相关信息是在所述日志满足所述增量更新的条件下执行的。

22.根据项21所述的装置,其中,还包括全量生成模块,被配置为:在所述日志不满足所述增量更新的条件下,扫描整个所述文件系统,以全量的方式生成所述索引。

23.根据项21所述的装置,其中,所述增量更新的条件是所述日志中最早的记录时间早于所述索引的最后一次更新的时间。

24.根据项15所述的装置,其中,从所述日志中解析出一段时间内所述文件系统所发生的变化的相关信息包括:从所述索引的最后一次更新的时间对应的所述日志中的记录开始,遍历所述日志中的记录,从所述记录中解析出从最后一次更新的时间到当前时间段内的所述文件系统所发生的变化的相关信息,其中,所述相关信息包括以下至少之一:文件标志和操作类型。

25.根据项24所述的装置,其中,

所述文件标志在所述文件系统为XFS文件系统或EXT4文件系统的情况下为文件的inode号,在所述文件系统为NTFS文件系统的情况下为MFT编号;和/或

所述操作类型包括以下至少之一:删除、修改和创建。

26.根据项25所述的装置,其中,所述增量生成模块还被配置为:基于所解析出的所述变化的相关信息,以增量的方式生成所述文件系统的索引包括:

在所述操作类型为删除的情况下,在所述索引中删除相应的记录;

在所述操作类型为创建或修改的情况下,基于所述文件标志获取文件属性,并将所述文件属性更新到所述索引中,其中,所述文件属性包括以下至少之一:文件路径,文件大小和文件类型。

27.根据项15至16中任一项所述的装置,其中,所述装置应用于虚拟机备份后对磁盘镜像中的文件系统生成文件索引的场景。

28.根据项27所述的装置,其中,所述读取模块还被配置为:在读取文件系统的日志之前,将镜像以回环设备方式挂载起来。

29.一种索引生成系统,其中,包括文件系统和如项15-28中任一项所述的增量生成索引的装置。

30.一种计算机设备,其中,包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序用于实现如项1-14任一项所述的方法。

31.一种可读存储介质,所述可读存储介质存储有计算机程序,其中,所述计算机程序被处理器执行时用于实现如项1-14任一项所述的方法。

以上所述仅是本公开的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本公开原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本公开的保护范围。

相关技术
  • 增量生成索引的方法、装置及系统
  • 索引生成系统、信息检索系统以及索引生成方法
技术分类

06120112810989