CN112306957A - 获取索引节点号的方法、装置、计算设备和存储介质 - Google Patents
获取索引节点号的方法、装置、计算设备和存储介质 Download PDFInfo
- Publication number
- CN112306957A CN112306957A CN201911261725.5A CN201911261725A CN112306957A CN 112306957 A CN112306957 A CN 112306957A CN 201911261725 A CN201911261725 A CN 201911261725A CN 112306957 A CN112306957 A CN 112306957A
- Authority
- CN
- China
- Prior art keywords
- index
- block
- path component
- metadata file
- identifier
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种获取索引节点号的方法、装置、计算设备和存储介质,所属技术领域为存储技术领域。该方法包括:在解析待解析的路径信息时,对于该路径信息中的目标路径分量,可以获取目标路径分量对应的元数据文件的标识,在被加载至内存的索引块中确定与该元数据文件的标识对应的第一索引块,第一索引块存储有元数据文件的标识与索引节点号的对应关系,根据该对应关系,确定该元数据文件的标识对应的索引节点号,该第一索引块对应的数据块存储有该元数据文件的数据。采用本申请,可以降低解析路径信息的时延。
Description
本申请要求于2019年07月30日提交的申请号为201910695741.9、发明名称为“加速文件***路径解析的方法,计算机设备和***”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及存储技术领域,特别涉及一种获取索引节点号的方法、装置、计算设备和存储介质。
背景技术
使用键值存储***来存储文件***的元数据是解决文件***的元数据性能瓶颈的有效解决方案之一。键值存储***使用“键”、“值”(Key Value,KV)的方式来管理存储在其中的数据,这种数据管理方式非常适合诸如文件***的元数据这样的小数据。文件***的元数据存放在键值存储***中时,一般以文件的文件名或其它逻辑标识作为键,该文件的文件***索引节点(inode)作为值。
文件***进行各种操作前,首先需要获取目标文件的元数据。文件***对传入的路径信息进行解析(路径解析),通过目录项(directory entry)(dentry,即文件名和文件名对应的索引节点号(inode number)组成的对)来获取目标文件的元数据。虽然现有文件***一般使用目录项缓存(dentry cache,dcache)来加速文件***元数据性能,但是,文件***目录项缓存的空间有限,且目录项是文件***中诸多操作的必要参数,因此目录项缓存并不能满足文件***对目录项的所有查找请求。当文件***未在目录项缓存中查找到需要的目录项时,文件***需要通过对路径信息的解析来访问存储***,以获取需要的目录项及文件元数据。
大多键值存储***基于日志结构合并树(Log-Structured Merge tree,LSM树),键值存储***可以分为内存结构和盘上结构,内存结构包括内存表(memory table,memtable)、不可写内存表(immutable memory table,immutable)、有序字符串表(SortedString Table,SST)以及有序字符串表信息缓存(SST Info Cache),盘上结构包括SST。SST由SST数据块和SST索引块两部分组成,SST数据块存储“键”和“值”(即键值对),SST索引块对SST数据块中的键值对进行索引,以快速的查找键值对在SST数据块中的地址。
相关技术中,主机在对待解析的路径信息中任一路径分量进行解析时,主机可以通过访问硬盘,获取该路径分量的前一个路径分量对应的元数据文件的数据,从该数据中查找到该路径分量对应的元数据文件的索引节点号。然后主机基于该路径分量对应的元数据文件的索引节点号,获取到该路径分量对应的元数据文件的索引节点块,基于该索引节点块,获取该路径分量对应的元数据文件的数据。
这样,在解析路径信息时,采用相关技术的方案,需要访问硬盘才能获取到路径分量对应的元数据文件的索引节点号,由于访问硬盘花费的时间比较多,所以导致解析路径信息的时延比较高。
发明内容
为了降低解析路径信息的整体时延,本申请实施例提供了一种获取索引节点号的方法、装置、计算设备和存储介质。
第一方面,提供了一种获取索引节点号的方法,该方法包括:获取目标路径分量对应的元数据文件的标识,其中,目标路径分量为待解析的路径信息中的多个路径分量中的任一路径分量,在被加载至内存的索引块中确定与元数据文件的标识对应的第一索引块,其中,第一索引块存储有元数据文件的标识与索引节点号的对应关系,内存为执行方法的设备的内存。根据对应关系,确定元数据文件的标识对应的索引节点号,其中,第一索引块对应的数据块存储有元数据文件的索引节点块。
其中,待解析的路径信息中包括的路径分量为多个。
本申请所示的方案,在对待解析路径信息的任一路径分量(可以称为是目标路径分量)进行解析时,主机可以获取目标路径分量对应的元数据文件的标识(该标识可以是目标路径分量的元数据文件的文件名)。然后主机可以在被加载至内存的索引块中,确定与该元数据文件的标识对应的第一索引块。然后主机在第一索引块中,使用目标路径分量对应的元数据文件的标识,查找该元数据文件的标识对应的索引节点号。这样,由于主机可以在主机的内存中获取到目标路径分量对应的元数据文件的索引节点号,而不需要访问硬盘获取,所以可以降低解析路径信息的时延。
在一种可能的实现方式中,在被加载至内存的索引块中,将第一索引节点块所在的数据块对应的索引块,确定为元数据文件的标识对应的第一索引块,其中,第一索引节点块为之前的路径分量对应的元数据文件的索引节点块,之前的路径分量为路径信息中排列在目标路径分量之前的路径分量。
本申请所示的方案,待解析的路径信息对应的文件的元数据文件的数据量比较小,同一路径信息下的路径分量对应的元数据文件的索引节点块,存储在一个索引块下的数据块的可能性比较大。这样,目标路径分量对应的元数据文件的索引节点块也会存储在该索引块下的数据块中,那么该索引块中存储有目标路径分量对应的元数据文件的标识与索引节点号的对应关系。主机可以将加载至主机的内存的该索引块确定为该元数据文件的标识对应的第一索引块,进而可以从第一索引块,获取到目标路径分量对应的元数据文件的索引节点号。这样,主机不需要访问硬盘,就可以获取到目标路径分量对应的元数据文件的索引节点号,可以降低解析路径信息的时延。
在一种可能的实现方式中,在被加载至内存的索引块中,将第二索引节点块所在的数据块对应的索引块,确定为元数据文件的标识对应的第一索引块,其中,第二索引节点块为第一路径分量对应的元数据文件的索引节点块,第一路径分量为路径信息中目标路径分量的前一个路径分量。
本申请所示的方案,目标路径分量的前一个路径分量下的子文件的数量比较少,使得存储该前一个路径分量下的子文件仅使用一个索引块下的数据块即可,那么该前一个路径分量的索引块下的数据块中存储有目标路径分量对应的元数据文件的索引节点块,所以在该前一个路径分量对应的元数据文件所在的索引块中,存储有目标路径分量对应的元数据文件的标识对应的索引节点号。这样,主机可以将该索引块,确定为该元数据文件的标识对应的第一索引块,进而可以从第一索引块,获取到目标路径分量对应的元数据文件的索引节点号。因此,主机不需要访问硬盘,就可以获取到目标路径分量对应的元数据文件的索引节点号,可以降低解析路径信息的时延。
在一种可能的实现方式中,在属于被加载至内存的索引块的其它索引块中,确定元数据文件的标识对应的第一索引块,其中,其它索引块为被加载至内存的索引块中除第二索引块之外的索引块,第二索引块为第二索引节点块所在的数据块对应的索引块,第二索引节点块为第一路径分量对应的元数据文件的索引节点块,第一路径分量为路径信息中目标路径分量的前一个路径分量。
本申请所示的方案,目标路径分量的前一个路径分量下的子文件的数量比较多,使得存储该前一个路径分量下的子文件使用多个索引块下的数据块,那么该前一个路径分量的索引块(该索引块可以称为是第二索引块)下的数据块中未存储有目标路径分量对应的元数据文件的索引节点块,所以在该前一个路径分量对应的元数据文件所在的索引块中,未存储有目标路径分量对应的元数据文件的标识对应的索引节点号。主机可以在被加载内存的其它索引块中(被加载至内存的索引块中除第二索引块之外的索引块),确定目标路径分量对应的元数据文件的标识对应的第一索引块。这样,主机也可以从被加载内存的索引块中,获取到元数据文件的标识对应的第一索引块,进而可以从第一索引块,获取到目标路径分量对应的元数据文件的索引节点号。因此,主机不需要访问硬盘,就可以获取到目标路径分量对应的元数据文件的索引节点号,可以降低解析路径信息的时延。
在一种可能的实现方式中,在属于被加载至内存的索引块的其它索引块中,依次查找其它索引块中的各索引块,确定元数据文件的标识对应的第一索引块,其中,其它索引块中的第三索引块在其它索引块中的第四索引块之前被查找,第三索引块为第一元数据文件所在的数据块对应的索引块,第四索引块为第二元数据文件所在的数据块对应的索引块,第一元数据文件的写入时间点早于第二元数据文件的写入时间点。
本申请所示的方案,主机在被加载至内存的其它索引块中,确定目标路径分量对应的元数据文件的标识对应的第一索引块时,是先查找最新写入元数据文件的索引块。由于新存储的数据被查找的概率大,所以相对查找较少的索引块,主机就能确定出目标路径分量对应的元数据文件的标识对应的第一索引块,花费的时间较少。
在一种可能的实现方式中,目标路径分量为路径信息中除根目录路径分量之外的任一路径分量。
第二方面,提供了一种获取索引节点号的装置,该装置包括:
获取模块,用于获取目标路径分量对应的元数据文件的标识,其中,所述目标路径分量为待解析的路径信息中的多个路径分量中的任一路径分量;
确定模块,用于:
在被加载至内存的索引块中确定与所述元数据文件的标识对应的第一索引块,其中,所述第一索引块存储有所述元数据文件的标识与索引节点号的对应关系,所述内存为执行所述方法的设备的内存;
根据所述对应关系,确定所述元数据文件的标识对应的索引节点号,其中,所述第一索引块对应的数据块存储有所述元数据文件的索引节点块。
在一种可能的实现方式中,所述确定模块,用于:
在被加载至内存的索引块中,将第一索引节点块所在的数据块对应的索引块,确定为所述元数据文件的标识对应的第一索引块,其中,所述第一索引节点块为之前的路径分量对应的元数据文件的索引节点块,所述之前的路径分量为所述路径信息中排列在所述目标路径分量之前的路径分量。
在一种可能的实现方式中,所述确定模块,用于:
在被加载至内存的索引块中,将第二索引节点块所在的数据块对应的索引块,确定为所述元数据文件的标识对应的第一索引块,其中,所述第二索引节点块为第一路径分量对应的元数据文件的索引节点块,所述第一路径分量为所述路径信息中所述目标路径分量的前一个路径分量。
在一种可能的实现方式中,所述确定模块,用于:
在属于被加载至内存的索引块的其它索引块中,确定所述元数据文件的标识对应的第一索引块,其中,其它索引块为被加载至内存的索引块中除第二索引块之外的索引块,所述第二索引块为第二索引节点块所在的数据块对应的索引块,所述第二索引节点块为第一路径分量对应的元数据文件的索引节点块,所述第一路径分量为所述路径信息中所述目标路径分量的前一个路径分量。
在一种可能的实现方式中,所述确定模块,用于:
在属于被加载至内存的索引块的其它索引块中,依次查找所述其它索引块中的各索引块,确定所述元数据文件的标识对应的第一索引块,其中,所述其它索引块中的第三索引块在所述其它索引块中的第四索引块之前被查找,所述第三索引块为第一元数据文件所在的数据块对应的索引块,所述第四索引块为第二元数据文件所在的数据块对应的索引块,所述第一元数据文件的写入时间点早于所述第二元数据文件的写入时间点。
在一种可能的实现方式中,所述目标路径分量为所述路径信息中除根目录路径分量之外的任一路径分量。
第三方面,提供了一种获取索引节点号的装置,该装置包括处理器和存储器,其中,所述处理器用于执行所述存储器包括的计算机指令,实现上述第一方面所述的获取索引节点号的方法。
第四方面,提供了一种获取索引节点号的计算设备,所述计算设备包括处理器和存储器,其中:
所述存储器中存储有计算机指令;所述处理器执行所述计算机指令,以实现上述第一方面所述的获取索引节点号的方法。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机可读存储介质中的计算机指令被计算设备执行时,使得所述计算设备执行上述第一方面所述的获取索引节点号的方法。
第六方面,提供了一种包含指令的计算机程序产品,当其在计算设备上运行时,使得计算设备执行上述第一方面所述的获取索引节点号的方法,或者使得计算设备实现上述第二方面及其可能的实现方式的装置的功能。
附图说明
图1是本申请一个示例性实施例提供的LSM树的***架构图;
图2是本申请一个示例性实施例提供的SST的结构示意图;
图3是本申请一个示例性实施例提供的元数据存储服务的***的结构示意图;
图4是本申请一个示例性实施例提供的主机的结构示意图;
图5是本申请一个示例性实施例提供的元数据键值化存储的示意图;
图6是本申请一个示例性实施例提供的SST索引块的结构示意图;
图7是本申请一个示例性实施例提供的SST索引块的结构示意图;
图8是本申请一个示例性实施例提供的获取索引节点号的方法的流程示意图;
图9是本申请一个示例性实施例提供的获取索引节点号的装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了便于对本申请实施例的理解,下面首先介绍本申请实施例所涉及到的名词的概念:
文件***,用于在存储设备上管理数据存储。文件***可以是任意一种文件***,如***扩展文件***(4th extended file system,Ext4)、闪存友好文件***(Flashfriendly file system,F2FS)等。
解析路径信息(也可以称为是路径解析),通过对文件的路径信息进行解析,获取文件的过程。具体的,在对文件的路径信息进行解析的过程中,依次对文件的路径信息中的每个路径分量进行解析,得到所要获取的文件的地址信息,基于该地址信息,获取到文件。
LSM树,广泛应用于键值存储***(键值存储***使用键值对存储数据)。如图1所示,LSM树的索引树结构是一大一小两颗树,较小的一个树存储在主机的内存C0(可以称为是内存缓存区),较大的一个树持久化到硬盘(如C1、C2、…、Ck)。数据的写入操作会首先操作主机的内存,随着主机的内存中树的不断变大,会触发与硬盘中的树进行合并操作。LSM树应用在数据库上可以有多种实现(如基于LSM树实现的键值数据库LevelDB和RocksDB),LSM树可以分为内存结构和盘上结构。内存结构可以包括内存表(memtable)、不可写内存表(immutable)(memtable和immutable可以称为是内存缓存区)、SST信息缓存(SST InfoCache),内存结构为上述C0,盘上结构的每一层相当于上述C1、C2、…、Ck。
SST,是键值存储***将键值对持久化到硬盘时组织键值对的形式,如图2所示,LSM树中包括多个SST,每个SST可以由两部分组成,一部分是SST索引块,另一部分是SST数据块(一个SST中的SST数据块为一个或多个)。在SST数据块中使用“键”和“值”的形式存储数据,在SST索引块中对SST数据块的“键”和“值”进行索引,以快速定位查找的键值对在SST数据块中的位置信息。因此,在生成一个新的SST时,键值存储***先确定SST数据块,再根据该SST数据块生成SST索引块,在生成SST索引块中记录SST数据块中键值对的位置信息。对于某个SST,主机在访问该SST时,该SST的索引块才会被加载到主机的内存中,具体是加载到SST信息缓存。
元数据文件的索引节点块,存储在SST数据块中,存储文件的元数据文件的信息。如元数据文件可以包括文件的创建者及权限、文件的创建日期、文件的大小及文件的数据标识等。元数据文件的索引节点块,用于查找元数据文件的数据主体。
元数据文件的索引节点号,用于索引路径分量对应的元数据文件的索引节点块。对于一个路径分量,不管该路径分量对应的元数据文件的索引节点块中的信息是否有更新,用于索引该路径分量对应的元数据文件的索引节点块的索引节点号不会改变。
目前在文件***中,主机将文件***的元数据转换为使用键值存储***存储,以键值存储***为LevelDB为例,具体处理为:文件***的元数据文件使用键值存储***来存储时,主机需要将文件***的元数据文件转换为键值对的形式。每个元数据文件的数据需要两个键值对存储,一个键值对存储元数据文件的索引节点块,该键值对的键为元数据文件的索引节点块的标识(后续可以称为是索引节点号),该键对应的值为索引节点块;另一个键值对存储元数据文件的数据主体,该键值对的键为元数据文件的数据标识,该键对应的值为元数据文件的数据。
例如,1.txt文件的元数据文件的路径信息为/home/foo/1.txt,将元数据文件键值化存储后,结构图如图3所示,最左侧的“/”为根目录,“home”为“/”的子目录,“foo”为“home”的子目录,“/”、“home”和“foo”作为目录,它们对应的元数据文件均可以使用两个键值对表示,一个键值对存储元数据文件的索引节点块,另一个键值对存储元数据文件的数据主体(如对于“home”,一个键值对存储home对应的元数据文件的索引节点块,另一个键值对存储home对应的元数据文件的数据主体)。在图3中,“etc”表示根目录“/”的某个其他子目录,“bar”表示“home”的某个其他子目录。此处需要说明的是,对于普通文件1.txt,由于1.txt的数据可以使用任何方式存储,所以1.txt的键值对有可能仅有一个,即仅有索引节点号与索引节点块的键值对。
主机在将元数据文件键值化后,主机可以将元数据文件的键值对存储在数据块中。主机将键值对存储在数据块后,在数据块对应的索引块中建立索引项(索引项键包括索引项键和索引项值),且一个索引项对应一个键值对。具体的,某个数据块中存储有元数据文件的索引节点号与元数据文件的索引节点块的键值对,该键值对在该数据块对应的索引块中的索引项为:元数据文件的索引节点号与元数据文件的索引节点块所在数据块的位置信息的索引项(索引项键为元数据文件的索引节点号,索引项值为元数据文件的索引节点块所在数据块的位置信息)。某个数据块中存储有元数据文件的数据标识与元数据文件的数据的键值对,该键值对在该数据块对应的索引块中的索引项为:元数据文件的数据标识与元数据文件的数据的位置信息的索引项(索引项键为元数据文件的数据标识,索引项值为元数据文件的数据的位置信息)。
此处需要说明的是,由于在文件***下,文件***使用“/”切分路径信息,将路径信息切分为多个路径分量,每个路径分量实际上对应一个文件(该文件可以为目录文件或者普通文件)。若路径分量对应目录文件,则该目录文件为该路径分量对应的元数据文件,若路径分量对应普通文件,则该普通文件的索引节点块为该路径分量对应的元数据文件,而该普通文件的数据不是该路径分量对应的元数据文件。例如,路径信息为/home/foo/1.txt,最左侧的“/”、“home”、“foo”和“1.txt”均可以称为是路径分量,最左侧的“/”、“home”、“foo”分别对应的文件为目录文件,“1.txt”对应的文件为普通文件。
这样,由于索引块中存储有元数据文件的索引节点号与元数据文件的索引节点块所在数据块的位置信息的索引项,后续在解析某个路径分量时,主机可以使用该路径分量对应的元数据文件的索引节点号,找到索引节点块所在数据块的位置信息,从而获得索引节点块所在数据块,进而从该数据块中,获取索引节点。进而可以从索引节点块中,获取到该路径分量对应的元数据文件的数据标识。而且由于索引块中存储有路径分量对应的元数据文件的数据标识与元数据文件的数据的位置信息的索引项,主机可以使用路径分量对应的元数据文件的数据标识,查找到对应的位置信息,使用该位置信息,找到该路径分量对应的元数据文件的数据。
此处需要说明的是,为了后续方便描述,将“路径分量对应的元数据文件的索引节点号”简称为“路径分量的索引节点号”;将“路径分量对应的元数据文件的索引节点块”简称为“路径分量的索引节点块”;将“路径分量对应的元数据文件的数据标识”简称为“路径分量的数据标识”;将“路径分量对应的元数据文件的数据”简称为“路径分量的数据”。
主机在获取某个文件的数据时,首先要获取该文件的索引节点块,相关技术中具体处理步骤为(以使用路径信息/home/foo/1.txt查找文件1.txt的数据为例进行说明(根目录/、home、foo和1.txt可以称为是路径分量,根目录/的元数据信息一般为已知,被缓存在主机的内容中)):
步骤1,在主机启动时,根目录“/”对应的元数据文件已经被存储在主机的内存,主机使用路径分量home的标识,在根目录“/”对应的元数据文件中查找到路径分量home的索引节点号。
步骤2,主机使用路径分量home的索引节点号,在键值存储***的内存缓存区(memtable、immutable)中,查找该索引节点号对应的索引节点块。若该内存缓存区不存在该索引节点号对应的索引节点块,则主机依次在C1层至Ck层的SST索引块的索引项中,使用路径分量home的索引节点号,查找路径分量home的索引节点块所在的SST数据块的位置信息。主机使用该位置信息在硬盘中确定出该SST数据块,然后主机使用该索引节点号,在该SST数据块中读取路径分量home的索引节点块。此处需要说明的是,在读取至某个SST时,才会将该SST的SST索引块缓存至主机的内存中。
步骤3,主机从路径分量home的索引节点块中读取到路径分量home的数据标识。
步骤4,主机使用该数据标识,在SST索引块的路径分量的数据标识与路径分量的数据的位置信息的索引项中,查找路径分量home的数据标识对应的位置信息。主机使用该位置信息,从硬盘中读取路径分量home的数据。
步骤5,主机在路径分量home的数据中查找到路径分量foo的索引节点号。
步骤6,主机使用路径分量foo的索引节点号,在键值存储***的内存缓存区(memtable、immutable)中,查找该索引节点号对应的索引节点块。若该内存缓存区不存在索引节点号对应的索引节点块,则主机依次在C1层至Ck层的SST索引块的索引项中,使用路径分量foo的索引节点号,查找路径分量foo的索引节点块所在的SST数据块的位置信息。主机使用该位置信息在硬盘中确定出该SST数据块,然后主机使用该索引节点号,在该SST数据块中读取路径分量foo的索引节点块。
步骤7,主机从路径分量foo的索引节点块中读取到路径分量foo的数据标识。
步骤8,主机使用该数据标识,在SST索引块的路径分量的数据标识与路径分量的数据的位置信息的索引项中,查找路径分量foo的数据标识对应的位置信息。主机使用该位置信息,从硬盘中读取到路径分量foo的数据。
步骤9,主机在路径分量foo的数据中查找路径分量1.txt的索引节点号。
步骤10,主机使用路径分量1.txt的索引节点号,在键值存储***的内存缓存区(memtable、immutable)中,查找该索引节点号对应的索引节点块。若该内存缓存区不存在索引节点号对应的索引节点块,则主机依次在C1层至Ck层的SST索引块的索引项中,使用路径分量1.txt的索引节点号,查找路径分量1.txt的索引节点块所在的SST数据块的位置信息。主机使用该位置信息在硬盘中确定出该SST数据块,然后主机使用该索引节点号,在该SST数据块中读取路径分量1.txt的索引节点块。
后续主机还可以执行步骤11和步骤12读取到1.txt的数据,具体处理为:
步骤11,在1.txt的索引节点块中读取1.txt数据块的地址。
步骤12,主机使用该地址,读取到1.txt的数据。
通过上述描述可知,上述步骤2、步骤4、步骤6、步骤8和步骤10均需要访问硬盘。这样,在解析的路径信息的路径分量比较多时,需要访问硬盘的次数比较多,使得路径信息的解析的整体时延比较高,所以需要提供一种降低解析路径信息的时延的方法。
还需要说明的是,上述内存缓存区设置在主机的内存中。
在对本申请实施例提供的获取索引节点号的方法介绍之前,首先对本申请实施例所适用的应用场景和***进行介绍。
本申请实施例中,使用键值存储***提供存储和管理文件***的元数据文件的存储服务,使用的***架构如图4所示,在可移植操作***接口(Portable Operating SystemInterface of UNIX,POSIX)与键值存储***之间设置文件***接口的包裹层(包裹层可以理解为一段代码,在包裹层对键值接口进行转换,实际上是主机通过运行这一段代码实现)。应用调用文件***的元数据文件的存储服务时,所见和所使用的是POSIX,键值存储***向文件***接口的包裹层所暴露的是键值接口。键值存储***的键值接口通过文件***接口的包裹层的包裹后,转换为文件***使用的POSIX,从而向使用POSIX的应用提供文件***的元数据文件的存储服务。键值存储***组织的键值对被存储在存储设备(如硬盘等)中,根据键值接口的调用来对存储设备中的数据进行相应的操作(如在键值存储***是LevelDB时,可以将键值对批量组织成SST的形式存储到存储设备中,根据键值接口的调用来对存储设备中SST中的数据进行相应的操作)。文件***接口的包裹层完成键值接口与文件***POSIX之间的转换工作。在上述***架构下,应用不感知为其提供元数据文件的存储服务实际上是键值存储***。
需要说明的是,上述元数据文件在存储至键值存储***时,可以基于文件***进行存储,也可以基于其他方式存储,本申请实施例不做限定。上述存储设备可以是本地存储服务中的存储设备,也可以是云存储服务中的存储设备,如弹性块存储服务(ElasticBlock Store,EBS)中的存储设备、对象存储***S3中的存储设备等。
还需要说明的是,上述键值存储***是任意一种存储***,如LevelDB,TiKV等,在后续的过程中,使用键值存储***为LevelDB为例进行说明。
还需要说明的是,POSIX的标准接口可以为open(A),其中,A为所要打开的文件的路径信息,open()接口表示打开一个文件,具体打开哪个目标文件由A指定。键值接口是键值存储***的接口,如GET(键(Key))等,表示获取键(Key)对应的值(Value)。包裹层的转换为:以路径信息/home/foo/1.txt为例,POSIX标准接口提交open(“/home/foo/1.txt”)操作,通过包裹层转换为多个有序的键值操作:GET(/)、GET(home)、GET(foo)、GET(1.txt)。此处仅为一种举例的形式,不作为本申请实施例的限定。
获取索引节点号的方法可以由获取索引节点号的装置执行,获取索引节点号的装置可以是一个硬件装置,如主机等,也可以是一个软件装置(如可以为运行在硬件装置上的一套软件程序)。
在获取索引节点号的方法由主机执行时,图5示例性的提供了本申请的主机的一种可能的架构图。主机可以包括处理器501、存储器502、通信接口503和总线504。在主机中,处理器501的数量可以是一个或多个,图5仅示意了其中一个处理器501。可选的,处理器501可以是中央处理器(Central Processing Unit,CPU)。若主机具有多个处理器501,多个处理器501的类型可以不同,或者可以相同。可选的,主机的多个处理器还可以集成为多核处理器。
存储器502存储计算机指令和数据,存储器502可以存储实现本申请提供的获取索引节点号的方法所需的计算机指令和数据。例如,存储器502存储用于实现本申请提供的获取索引节点号的方法中获取模块执行步骤的指令。再例如,存储器502存储用于本申请提供的获取索引节点号的方法中确定模块执行步骤的指令等。存储器502可以是以下存储介质的任一种或任一种组合:非易失性存储器(如只读存储器(Read-Only Memory,ROM)、固态硬盘(Solid State Disk,SSD)、硬盘(Hard Disk Drive,HDD)、光盘等)、易失性存储器。
通信接口503可以是以下器件的任一种或任一种组合:网络接口(如以太网接口)、无线网卡等具有网络接入功能的器件。
通信接口503用于主机与其他主机或者终端进行数据通信。
总线504可以将处理器501与存储器502、通信接口503连接。这样,通过总线504,处理器501可以访问存储器502,还可以利用通信接口503与其它主机或者终端进行数据交互。
在本申请中,主机执行存储器502中的计算机指令,使用主机实现本申请提供的获取索引节点号的方法。例如,使得主机执行上述获取索引节点号的方法中由确定模块执行的步骤。
下面将对本申请实施例提供的获取索引节点号的方法进行说明,以下以执行获取索引节点号的方法的主体为主机为例进行方案的说明。
在进行获取索引节点号之前,主机将文件***的元数据文件转换为使用键值存储***存储。
本实施例中,主机在键值存储***写入元数据文件的过程与上述描述过程完全相同,只不过在建立索引项时,若数据块存储有元数据文件的索引节点号与元数据文件的索引节点块的键值对,则在上述元数据文件的索引节点号与元数据文件的索引节点块所在数据块的位置信息的索引项的基础上,该数据块对应的索引块中增加了:元数据文件的标识(也可以称为元数据文件的文件名)与元数据文件的索引节点号的索引项(索引项键为元数据文件的标识,索引项值为元数据文件的索引节点号),即增加了元数据文件的标识与元数据文件的索引节点号的对应关系。
具体的对于某个路径分量对应的元数据文件,在建立路径分量对应元数据文件的标识(可以称为是路径分量的标识)与路径分量对应的元数据文件的索引节点号的索引项时,主机可以在该路径分量的前一个路径分量的数据中获取到该路径分量对应的元数据文件的索引节点号(主机可以在该前一个路径分量的数据写入键值存储***时获取)。这样,在解析某个路径分量时,主机可以在索引块中直接查找到该路径分量对应的元数据文件的索引节点号,而不需要从该路径分量相邻的前一个路径分量的数据中获得,那么也不需要访问硬盘获取该前一个路径分量的数据,所以可以减少硬盘的访问次数。具体如何查找,在后面图8所示的流程中进行详细说明。
具体的,本申请实施例在键值存储***LevelDB中,将元数据文件使用键值对的方式在SST的SST数据块中进行存储。以元数据文件的路径信息为/home/foo/1.txt为例,首先在SST的SST数据块中建立元数据文件的键值对,具体可以为:键为路径分量home的索引节点号,值为路径分量home的索引节点块;键为路径分量foo的索引节点号,值为路径分量foo的索引节点块;键为路径分量1.txt的索引节点号,值为路径分量1.txt的索引节点块。SST数据块中还存储有键为路径分量home的数据标识、值为路径分量home的数据的键值对,路径分量foo与路径分量home类似,此处不再赘述。对于路径分量1.txt,由于文件1.txt是普通文件,所以文件1.txt的数据不是元数据,进而文件1.txt的数据可以不按照元数据文件的方式进行存储。
相应的,如图6所示,在SST索引块中记录SST数据块中各键值对的索引项,SST数据块中一个键值对对应一个索引项。在SST数据块中键值对为路径分量home的索引节点号和路径分量home的索引节点块时,在该SST数据块对应的SST索引块中,索引项包括:索引项键为路径分量home的标识,该索引项键对应的索引项值为路径分量的索引节点号;索引项键为路径分量home的索引节点号,该索引项键对应的索引项值为路径分量home的索引节点块所在SST数据块的位置信息。在SST数据块中键值对为路径分量home的数据标识和路径分量home的数据时,在该SST数据块对应的SST索引块中,索引项包括:索引项键为路径分量home的数据标识,该索引项键对应的索引项值为路径分量home的数据的位置信息。路径分量foo和路径分量1.txt,与路径分量home类似,此处不再赘述。这样,主机可以从路径分量的索引节点块所在SST数据块对应的SST索引块中,查找到该路径分量的索引节点号,而不需要从该路径分量的前一个路径分量的数据中获取,所以不需要获取该前一个路径分量的数据,进而不要访问硬盘,可以减少硬盘的访问次数。
另外,在索引项键为路径分量的标识时,索引项值还可以包括元数据文件的访问权限信息等。
此处需要说明的是,对于任一元数据文件,由于键值存储***是先将元数据文件对应的键值对存储至数据块中,然后才建立这些键值对的索引信息,所以主机可以确定出任一元数据文件的索引节点号,以及索引节点块所在的数据块。例如,在路径分量home对应的元数据文件的数据中存储有路径分量foo的索引节点号,所以可以获取到路径分量foo对应的元数据文件的索引节点号。
此处还需要说明的是,假设路径信息为/home/foo/1.txt,路径分量foo的前一个路径分量为路径分量home,路径分量1.txt的前一个路径分量为路径分量foo。
上述在索引块中存储数据块的键值对的索引信息的方式仅为一种可行的方式,当然也可以是按照其它方式。例如,如图7所示,以路径信息为/home/foo/1.txt为例,将上述描述的SST索引块中的三个索引项,组织在一个索引项键和索引项值的对应关系中。
以下结合图8对路径信息的解析过程进行说明:
步骤801,主机获取目标路径分量对应的元数据文件的标识。
本实施例中,有应用想要从主机上读取文件(该文件后续可以被称为是待获取文件),该应用会将文件的路径信息传输给主机的键值存储***。待获取文件的路径信息包括满足POSIX相应接口要求的路径信息。主机的键值存储***在解析该路径信息中的任一路径分量时(可以称为是目标路径分量),可以获取目标路径分量对应的元数据文件的标识,该标识可以是目标路径分量对应的元数据文件的文件名,也可以是一个逻辑标识。
例如,应用通过POSIX提交open(“/home/foo/1.txt”)操作至主机上的包裹层,主机上的包裹层将open(“/home/foo/1.txt”)操作,转换为键值存储***所能识别的键值操作GET(/)、GET(home)、GET(foo)、GET(1.txt)。这样,主机的键值存储***就可以接收到GET(/)操作、GET(home)操作、GET(foo)操作、GET(1.txt)操作。
需要说明的是,上述应用可以是安装在主机上的应用,也可以不是安装在主机上的应用。文件***对文件进行操作前,首先要获取待获取文件的元数据文件,而本申请中文件***的元数据文件使用键值存储***存储,所以应用会将文件的路径信息传输至主机的键值存储***。
还需要说明的是,由于POSIX与键值存储***之间设置有包裹层,进行操作的转换,所以对于应用,其不会感知到为其提供文件***的元数据的存储服务实际上是键值存储***。此处路径信息中排列在最前面的路径分量为根目录,在主机启动时,根目录的元数据文件会被缓存在主机的内存中,所以主机不基于索引节点号,获取根目录的索引节点块,所以目标路径分量为路径信息中除根目录路径分量之外的任一路径分量。
步骤802,主机在被加载至内存的索引块中确定与元数据文件的标识对应的第一索引块。
本实施例中,主机可以在被加载至主机的内存的索引块中,使用目标路径分量对应的元数据文件的标识,确定出与该元数据文件的标识对应的第一索引块。如前文中描述,第一索引块存储有元数据文件的标识与索引节点号的对应关系,第一索引块对应的数据块存储有该元数据文件的索引节点块。
步骤803,主机根据对应关系,确定元数据文件的标识对应的索引节点号。
本实施例中,主机可以在元数据文件的标识与索引节点号的对应关系中,查找到目标路径分量对应的元数据文件的标识对应的索引节点号,即获取到目标路径分量对应的元数据文件的索引节点号。
这样,由于主机可以在主机的内存中获取到目标路径分量对应的元数据文件的索引节点号,而不需要访问硬盘获取,所以可以降低解析路径信息的时延。
上述步骤802的一种可能实现方式中,主机在被加载至内存的索引块中,将第一索引节点块所在的数据块对应的索引块,确定为目标路径分量对应的元数据文件的标识对应的第一索引块,第一索引节点块为之前的路径分量对应的元数据文件的索引节点块,之前的路径分量为路径信息中排列在目标路径分量之前的路径分量。
本实施例中,对于目标路径分量,主机首先使用目标路径分量对应的元数据文件的标识,在键值存储***的内存缓存区中查找是否存在目标路径分量对应的元数据文件的索引节点号。若该内存缓存区存在目标路径分量对应的元数据文件的索引节点号,则向POSIX返回该索引节点号;若该内存缓存区不存在目标路径分量对应的元数据文件的索引节点号,则主机确定路径信息中目标路径分量之前的路径分量。然后主机确定目标路径分量之前的路径分量的第一索引节点块所在的数据块,确定该数据块对应的索引块。主机将该索引块确定为与目标路径分量对应的元数据文件的标识对应的第一索引块。
这样,待解析的路径信息对应的文件的元数据文件的数据量比较小,同一路径信息下的路径分量对应的元数据文件的索引节点块,存储在一个索引块下的数据块的可能性比较大。这样,目标路径分量对应的元数据文件的索引节点块也会存储在该索引块下的数据块中,那么该索引块中存储有目标路径分量对应的元数据文件的标识与索引节点号的对应关系。主机可以将加载至主机的内存的该索引块,确定为该元数据文件的标识对应的第一索引块,进而主机可以从第一索引块,获取到目标路径分量对应的元数据文件的索引节点号。这样,主机不需要访问硬盘,就可以获取到目标路径分量对应的元数据文件的索引节点号,可以降低解析路径信息的时延。
上述步骤802的一种可能实现方式中,主机在被加载至内存的索引块中,将第二索引节点块所在的数据块对应的索引块,确定为元数据文件的标识对应的第一索引块,其中,第二索引节点块为第一路径分量对应的元数据文件的索引节点块,第一路径分量为路径信息中目标路径分量的前一个路径分量。
本实施例中,在主机的内存缓存区不存在目标路径分量对应的元数据文件的索引节点号的情况下,主机可以确定路径信息中目标路径分量的前一个路径分量。主机使用该前一个路径分量对应的元数据文件的标识,确定该前一个路径分量对应的元数据文件的第二索引节点块所在的索引块,该索引块后续可以称为是第二索引块。主机将加载至该内存的第二索引块,确定为与目标路径分量对应的元数据文件的标识对应的第一索引块。例如,主机使用该前一个路径分量对应元数据文件的标识,确定该前一个路径分量的SST索引块,在该SST索引块中,使用目标路径分量对应的元数据文件的标识,查找目标路径分量对应的元数据文件的索引节点号。
上述过程中将第二索引块,确定为与目标路径分量对应的元数据文件的标识对应的第一索引块的原因为:
目标路径分量的前一个路径分量下的子文件的数量比较少,使得存储该前一个路径分量下的子文件仅使用一个索引块下的数据块即可,那么该前一个路径分量的索引块下的数据块中存储有目标路径分量对应的元数据文件的索引节点块,所以在该前一个路径分量对应的元数据文件所在的第二索引块中,存储有目标路径分量对应的元数据文件的标识对应的索引节点号。这样,主机可以将第二索引块,确定为该元数据文件的标识对应的第一索引块,进而可以从第一索引块,获取到目标路径分量对应的元数据文件的索引节点号。因此,主机不需要访问硬盘,就可以获取到目标路径分量对应的元数据文件的索引节点号,可以降低解析路径信息的时延。
对于另外一些情况,第二索引块中未存储目标路径分量对应的元数据文件的索引节点号,那么主机在第二索引块,就查找不到目标路径分量对应的元数据文件的索引节点号。其中,上述另外一些情况包括但不限于以下情况:目标路径分量的前一个路径分量下的子文件的数量比较多,使得存储该前一个路径分量的子文件需要使用多个索引块下的数据块才能完全存储。这样,在这种情况下,目标路径分量对应的元数据文件的索引节点块与该前一个路径分量的索引节点块就不属于一个索引块下的数据块中,那么目标路径分量对应的元数据文件的索引节点号未存储在第二索引块。这种情况下,可以按照下述方式进行查找:
主机在第二索引块中未查找到目标路径分量对应的元数据文件的索引节点号时,可以确定被加载至内存的索引块中除第二索引块之外的其它索引块(即键值存储***中,被加载至内存的索引块中除第二索引块之外的其它索引块)。在键值存储***的内存缓存区以及该其它索引块中,主机使用目标路径分量对应的元数据文件的标识,在内存缓存区,查找是否存在该标识对应的索引节点号,若存在该标识对应的索引节点号,则获取到目标路径分量对应的元数据文件的索引节点号,返回给POSIX。若未存在该标识对应的索引节点号,则在被加载至主机的内存的其它索引块中,确定与目标路径分量对应的元数据文件的标识对应的第一索引块。这样,主机也可以从被加载内存的索引块中,获取到元数据文件的标识对应的第一索引块,进而可以从第一索引块,获取到目标路径分量对应的元数据文件的索引节点号。因此,主机不需要访问硬盘,就可以获取到目标路径分量对应的元数据文件的索引节点号,可以降低解析路径信息的时延。
此处需要说明的是,对应上述另外一些情况,采用相关技术的方式,目标路径分量的前一个路径分量的数据有可能也存储在其它索引块的数据块下,此时,主机需要使用该前一个路径分量的数据标识,依次在内存缓存区和其它索引块中,查找该前一个路径分量的数据的位置信息。在主机查找到该前一个路径分量的数据的位置信息后,还需要访问硬盘获取该前一个路径分量对应的元数据文件的数据,从该数据中读取目标路径分量对应的元数据文件的索引节点号。而本申请中,主机可以在内存缓存区或者被加载至内存的其它索引块中,查找目标路径分量对应的元数据文件的索引节点号,而不需要访问硬盘获取该前一个路径分量对应的元数据文件的数据,可以减少硬盘的访问次数。
此处还需要说明的是,在内存缓存区中存储一个路径分量对应的元数据文件时,是存储该路径分量对应的元数据文件的索引节点号与索引节点块的键值对,以及存储该路径分量对应的元数据文件的标识与索引节点号的键值对。
另外,若内存缓存区和在其它索引块的任一索引块中,均不存在目标路径分量对应的元数据文件的索引节点号,则表示目标路径分量对应的元数据文件的索引节点块不存在。主机可以向POSIX返回目标路径分量对应的元数据文件的索引节点块缺乏的指示信息。
在一种可能的实现方式中,主机在被加载至内存的其它索引块中,依次查找其它索引块中的各索引块,确定元数据文件的标识对应的第一索引块。具体处理为:
主机可以确定其它索引块所对应的元数据文件在写入键值存储***的数据块的写入顺序,按照元数据文件的写入时间顺序,元数据文件写入时间早的位置优先被查找。具体的先查找内存缓存区(前文中已经描述,此处不再赘述),然后再查找其它索引块。主机在查找其它索引块时,主机按照元数据文件的写入时间顺序,将其它索引块依次加载至主机的内存中,每加载至主机的内存中一个索引块,使用目标路径分量对应的元数据文件的标识,确定是否是该标识对应的第一索引块。如果是该标识对应的第一索引块,则主机执行步骤803,如果不是该标识对应的第一索引块,则主机继续按照元数据文件的写入时间顺序,加载下一个索引块至主机的内存,直至找完其它索引块,或者直至找到与目标路径分量对应的元数据文件的标识对应的第一索引块。例如,其它索引块中的第三索引块在其它索引块中的第四索引块之前被查找,第三索引块为第一元数据文件所在的数据块对应的索引块,第四索引块为第二元数据文件所在的数据块对应的索引块,第一元数据文件的写入时间点早于第二元数据文件的写入时间点,也即第一元数据文件对应的第一时长小于第二元数据文件对应的第二时长,第一时长为第一元数据文件的开始写入时间点距离当前时间点的时长,第二时长为第二元数据文件的开始写入时间点距离当前时间点的时长。
这样,主机在被加载至内存的其它索引块中,确定目标路径分量对应的元数据文件的标识对应的第一索引块时,是先查找最新写入元数据文件的索引块。由于新存储的数据被查找的概率大,所以相对查找较少的索引块,主机就能确定出目标路径分量对应的元数据文件的标识对应的第一索引块,花费的时间较少。
例如,在基于LSM树的键值存储***中,内存缓存区为C0(包括memtable和immutable),最新写入的数据写入在C0,随着后续的写操作,数据会依次从C0逐渐移动至C1,直至Ck。从新数据向旧数据的查找过程,即为依次从C0查找至Ck,此处需要说明的是先查找memtable,再查找immutable。
在一种可能的实现方式中,在主机获取到目标路径分量的前一个路径分量对应的元数据文件的索引节点块时,主机可以在该索引节点块中,获取该前一个路径分量对应的元数据文件的数据的数据量。主机判断该数据量是否大于预设数值,若该数据量小于或等于预设数值,则主机在解析目标路径分量的索引节点号时,可以采用图8所示的流程。若该数据量大于预设数值,则主机在解析目标路径分量的索引节点号时,可以采用图8所示的流程,也可以基于前一个路径分量对应的元数据文件的索引节点块,获取该前一个路径分量对应的元数据文件的数据。主机从该数据中,获取到目标路径分量对应的元数据文件的索引节点号。
在一种可能的实现方式中,主机查找到目标路径分量对应的元数据文件的索引节点号后,主机以该目标路径分量对应的元数据文件的索引节点号为索引项键,在键值存储***中查找这个索引项键对应的索引项值,根据该索引项值获得目标路径分量对应的元数据文件的索引节点块。
例如,在键值存储***为LevelDB时,假设路径信息为/home/foo/1.txt,目标路径分量为foo,主机使用foo对应的元数据文件的索引节点号作为索引项键,依次在C0(memtable、immutable)、C1层的SST、C1层的SST直至Ck层的SST中查找路径分量foo对应的元数据文件的索引节点号对应的索引项值,若在某一层查找到foo对应的元数据文件的索引节点号对应的索引项值,则不需要再向后继续查找。具体在memtable、immutable中查找索引节点号对应的值时,由于memtable、immutable是使用键值对的方式存储,所以在memtable、immutable中,路径分量foo对应的元数据文件的索引节点号对应的索引项值即为路径分量foo对应的元数据文件的索引节点号对应的索引节点块。而在C1层的SST、C2层的SST直至Ck层中任一层的SST中查找路径分量foo对应的元数据文件的索引节点号对应的索引项值时,主机首先在SST的SST索引块中查找到路径分量foo对应的元数据文件的索引节点号对应的位置信息,该位置信息为路径分量foo对应的元数据文件的索引节点号对应的索引项值。主机使用该位置信息,确定出路径分量foo对应的元数据文件的索引节点块所在的SST数据块。然后主机使用路径分量foo对应的元数据文件的索引节点号,在该SST数据块中,确定路径分量foo对应的元数据文件的索引节点号对应的内容,该内容即为路径分量foo对应的元数据文件的索引节点块。
此处需要说明的是,对于某个路径分量,虽然该路径分量的索引节点块所属SST的SST索引块中记录了该路径分量对应的元数据文件的索引节点号与该路径分量对应的元数据文件的索引节点块所属SST数据块的位置信息的索引项,但是并不会在该SST索引块所属的SST中,使用该位置信息查找到该索引节点块所在的数据块的原因为:当前SST中的索引节点块有可能不是最新的索引节点块,会使获取到的索引节点块不正确。
从图8所示的流程可知,上述图8的流程中,是以路径信息中的目标路径分量为例说明获取索引节点号的流程,对于待解析的路径信息中除根目录之外的路径分量,主机均可以使用图8的流程获取索引节点号,本申请实施例不做限定。
另外,由于本申请实施例中满足POSIX规范,所以在解析待解析的路径信息时,是按照路径信息的各路径分量的排列顺序,依次解析各路径分量,获得各路径分量对应的元数据文件的索引节点号,在解析到路径信息的最后一个路径分量对应的元数据文件的索引节点号时,通过最后一个路径分量对应的元数据文件的索引节点号,获得最后一个路径分量对应的元数据文件的索引节点块,进而获得路径信息对应的文件。
本实施例中,主机可以按照路径信息中各路径分量的排列顺序,首先解析排在最前面的路径分量,然后解析排列的第二个路径分量,获得第二个路径分量对应的元数据文件的索引节点号和索引节点块。主机再解析排列的第三个路径分量,获得第三个路径分量对应的元数据文件的索引节点号和索引节点块,直到路径信息中的所有路径分量均解析完毕,得到路径信息的最后一个路径分量的索引节点号和索引节点块。主机在最后一个路径分量的索引节点块中,获取路径信息对应的文件的地址信息。然后主机使用该地址信息,确定待路径信息对应的文件所存放的位置,从该位置获取路径信息对应的文件。
需要说明的是,在上述路径信息的解析过程中,虽然主机获取到每个路径分量对应的元数据文件的索引节点块,但是主机仅使用最后一个路径分量对应的元数据文件的索引节点块来查找所要获取文件的数据。主机获取路径信息中除最后一个路径分量之外的其它路径分量对应的元数据文件的索引节点块的原因是:1)本申请实施例的方案符合POSIX规范,由于应用通过POSIX提交至键值存储***的操作是用于获取每个路径分量对应的元数据文件的索引节点块的操作,所以主机的键值存储***要向POSIX返回索引节点块,从而满足POSIX的要求;2)此处以路径信息/home/foo/1.txt为例,主机的键值存储***给POSIX返回路径分量home对应的元数据文件的索引节点块,POSIX确认路径分量foo的上层目录(即路径分量home)是正确的,才会继续解析路径分量foo;3)路径信息中的路径分量有可能会发生更新(如路径信息为/home/foo/1.txt,更新后变为/home/aa/bb/foo/1.txt),只有依次解析才会解析到正确的路径分量,保证给POSIX返回正确的路径分量对应的元数据文件的索引节点块。所以为了保证路径信息的解析过程正常进行,主机的键值存储***要向POSIX返回每个路径分量对应的元数据文件的索引节点块。
为了更好的理解本申请实施例,本申请实施例还提供了键值存储***为LevelDB时,对/home/foo/1.txt进行路径信息的解析的过程,假设SST索引块和文件***的根目录/的数据已被缓存到主机的内存中。需要完成以下步骤,以获得文件1.txt的索引节点块(此过程中,将“路径分量对应的元数据文件的索引节点号”简称为“路径分量的索引节点号”;将“路径分量对应的元数据文件的索引节点块”简称为“路径分量的索引节点块”;将“路径分量对应的元数据文件的数据标识”简称为“路径分量的数据标识”;将“路径分量对应的元数据文件的数据”简称为“路径分量的数据”):
步骤S1,主机在根目录“/”的数据中,使用路径分量home的标识,获取到路径分量home的索引节点号。
步骤S2,主机使用路径分量home的索引节点号,依次在memtable、immutable、C1层的SST、C2层的SST直至Ck层的SST中,将路径分量home的索引节点号作为索引项键,查找路径分量home的索引节点号对应的索引项值。若是在memtable、immutable中找到路径分量home的索引节点号对应的索引项值,则主机可以将该索引项值确定为路径分量home的索引节点块。若主机未在memtable、immutable中找到路径分量home的索引节点号对应的索引项值,则主机可以依次在C1层的SST、C2层的SST、Ck层中SST中,将路径分量home的索引节点号作为索引项键,查找路径分量home的索引节点号对应的索引项值。若主机在某一层的SST的SST索引块中查找到路径分量home的索引节点号对应的位置信息(该位置信息为路径分量home的索引节点号对应的索引项值),则主机结束查找,该SST索引块即为路径分量home的索引节点块。主机使用该位置信息,在硬盘中确定出路径分量home的索引节点块所在的SST数据块。然后主机使用路径分量home的索引节点号,在该SST数据块中,确定路径分量home的索引节点号对应的内容,该内容即为路径分量home对应的索引节点块。然后主机将路径分量home的索引节点块,返回给POSIX。
步骤S3,若主机在键值存储***的memtable、immutable中,未查找到路径分量foo的索引节点号,则主机在路径分量home对应的元数据文件所在SST数据块的SST索引块中,查找路径分量foo的索引节点号。具体的,主机可以使用路径分量foo的标识作为索引项键,查找对应的索引项值,该索引项值即为路径分量foo的索引节点号。
步骤S4,若主机在路径分量home对应的元数据文件所在SST数据块的SST索引块中,查找到路径分量foo的索引节点号,则确定该SST索引块为与路径分量foo的标识对应的索引块,使用该索引节点号,访问硬盘获取路径分量foo的索引节点块(处理过程参见获取路径分量home的索引节点块的过程),返回给POSIX。若主机在路径分量home对应的元数据文件所在SST数据块的SST索引块中,未查找到路径分量foo的索引节点号,则依次在memtable、immutable以及除路径分量home对应的元数据文件所在SST数据块的SST索引块之外的其它SST索引块中,查找路径分量foo的索引节点号(具体处理见步骤S1中的描述)。若主机在该memtable、该immutable、或者该其它SST索引块任一中,查找到路径分量foo的索引节点号,则执行查找该索引节点号对应的索引节点块的处理(具体在处理在前面有描述,此处不再赘述),执行步骤S5的处理。若主机在该memtable、该immutable和该其它SST索引块中,均未查找到路径分量foo的索引节点号,则返回元数据文件缺乏的指示信息,不再执行步骤S5及之后步骤的处理。
步骤S5,若主机在键值存储***的memtable、immutable中,未查找到路径分量1.txt的索引节点号,则主机在路径分量foo对应的元数据文件所在SST数据块的SST索引块中,查找路径分量1.txt的索引节点号。具体的,主机可以使用路径分量1.txt的标识作为索引项键,查找对应的索引项值,该索引项值即为路径分量1.txt的索引节点号。
步骤S6,若主机在路径分量foo对应的元数据文件所在SST数据块的SST索引块中,查找到路径分量1.txt的索引节点号,则确定该SST索引块为与路径分量1.txt的标识对应的索引块,执行查找路径分量1.txt的索引节点块的处理(具体在处理在前面有描述,此处不再赘述),执行步骤S7的处理。若主机在路径分量foo对应的元数据文件所在SST数据块的SST索引块中,未查找到路径分量1.txt的索引节点号,则依次在memtable、immutable以及除路径分量foo所在的SST索引块之外的其它SST索引块中,使用路径分量1.txt的标识,查找路径分量1.txt的索引节点号。若主机在该memtable、该immutable或者该其它SST索引块中的某个SST索引块任一中,查找到路径分量1.txt的索引节点号,则执行查找该索引节点号对应的索引节点块的处理(具体在处理在前面有描述,此处不再赘述),执行步骤S7的处理。若主机在该memtable、该immutable和其它SST索引块中,均未查找到路径分量1.txt的索引节点号,则返回元数据文件缺乏的指示信息,不再执行步骤S7。
步骤S7,主机在路径分量1.txt的索引节点块,查找到路径分量1.txt的数据块的地址。主机基于该地址,确定路径分量1.txt的文件的位置,从该位置读取1.txt的文件。
这样,在进行路径信息/home/foo/1.txt的解析过程中,对于路径分量home,由于主机不需要基于路径分量home的索引节点块,获取路径分量home的数据(具体处理见上述步骤4的处理),所以也不需要通过访问硬盘读取路径分量home的数据,进而可以减少一次访问硬盘。同样,对于路径分量foo,由于主机不需要基于路径分量foo的索引节点块,获取路径分量foo的数据(具体处理见上述步骤8的处理),所以也不需要通过访问硬盘读取路径分量foo的数据,进而可以减少一次访问硬盘。可见,对于路径信息为/home/foo/1.txt的解析过程,相关技术的方案需要访问五次硬盘(步骤2、步骤4、步骤6、步骤8和步骤10),而采用本申请的方案,减少了访问硬盘获取路径分量home的数据和路径分量foo的数据的过程,即不需要执行上述步骤4和步骤8的处理,所以仅需要访问三次硬盘,就可以获取到1.txt的数据,所以采用本申请的方案可以减少硬盘的访问次数。以上是以路径信息中包括4个路径分量进行说明,在路径信息包括更多的路径分量时,同样也可以减少硬盘的访问次数。
本申请实施例中,索引块中存储有路径分量对应的元数据文件的索引节点号,而索引块被加载至主机内存中,这样,主机进行路径信息的解析时,对于某个路径分量,由于主机可以从主机的内存的索引块中,获取到该路径分量对应的元数据文件的索引节点号,而不需要从该路径分量的前一个路径分量对应的元数据文件的数据中获取,所以可以减少硬盘的访问次数,进而可以加速文件***的路径信息的解析。
需要说明的是,本申请针对的是文件***的目录项缓存发生缺失的情况,这是由于若文件***的目录项缓存的存在,可以直接使用文件***的目录项读取到待获取文件的索引节点号,基于索引节点号读取到待获取文件(基于索引节点号获取到待获取文件的过程已在前面进行描述,此处不再赘述)。其中,文件***的目录项发生缺失的情况可以包括文件***的目录项的存储空间不足、文件***的目录项无法加载等。
图9是本申请实施例提供的获取索引节点号的装置的结构图。该装置可以通过软件、硬件或者两者的结合实现成为装置中的部分或者全部。本申请实施例提供的装置可以实现本申请实施例图8所述的流程,该装置包括:获取模块910和确定模块920,其中:
获取模块910,用于获取目标路径分量对应的元数据文件的标识,其中,所述目标路径分量为待解析的路径信息中的多个路径分量中的任一路径分量,具体可以用于实现步骤801中的获取功能以及其包含的隐含步骤;
确定模块920,用于:
在被加载至内存的索引块中确定与所述元数据文件的标识对应的第一索引块,其中,所述第一索引块存储有所述元数据文件的标识与索引节点号的对应关系,所述内存为执行所述方法的设备的内存;
根据所述对应关系,确定所述元数据文件的标识对应的索引节点号,其中,所述第一索引块对应的数据块存储有所述元数据文件的索引节点块,具体可以用于实现步骤802和步骤803中的确定功能以及其包含的隐含步骤。
在一种可能的实现方式中,所述确定模块920,用于:
在被加载至内存的索引块中,将第一索引节点块所在的数据块对应的索引块,确定为所述元数据文件的标识对应的第一索引块,其中,所述第一索引节点块为之前的路径分量对应的元数据文件的索引节点块,所述之前的路径分量为所述路径信息中排列在所述目标路径分量之前的路径分量。
在一种可能的实现方式中,所述确定模块920,用于:
在被加载至内存的索引块中,将第二索引节点块所在的数据块对应的索引块,确定为所述元数据文件的标识对应的第一索引块,其中,所述第二索引节点块为第一路径分量对应的元数据文件的索引节点块,所述第一路径分量为所述路径信息中所述目标路径分量的前一个路径分量。
在一种可能的实现方式中,所述确定模块920,用于:
在属于被加载至内存的索引块的其它索引块中,确定所述元数据文件的标识对应的第一索引块,其中,所述其它索引块为被加载至内存的索引块中除第二索引块之外的索引块,所述第二索引块为第二索引节点块所在的数据块对应的索引块,所述第二索引节点块为第一路径分量对应的元数据文件的索引节点块,所述第一路径分量为所述路径信息中所述目标路径分量的前一个路径分量。
在一种可能的实现方式中,所述确定模块920,用于:
在属于被加载至内存的索引块的其它索引块中,依次查找所述其它索引块中的各索引块,确定所述元数据文件的标识对应的第一索引块,其中,所述其它索引块中的第三索引块在所述其它索引块中的第四索引块之前被查找,所述第三索引块为第一元数据文件所在的数据块对应的索引块,所述第四索引块为第二元数据文件所在的数据块对应的索引块,所述第一元数据文件的写入时间点早于所述第二元数据文件的写入时间点。
在一种可能的实现方式中,所述目标路径分量为所述路径信息中除根目录路径分量之外的任一路径分量。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
本申请实施例中,索引块中存储有路径分量的索引节点号,而索引块被加载至主机内存中,这样,在主机解析路径信息中的目标路径分量时,由于主机可以从主机的内存中的索引块中确定目标路径分量对应的元数据文件的索引节点号,而不需要从目标路径分量的前一个路径分量对应的元数据文件的数据中获取,所以可以减少访问硬盘的次数,进而可以降低解析路径信息的时延。
本申请实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中存储的计算机指令被计算设备执行时,使得计算设备执行上述所提供的获取索引节点号的方法。
本申请实施例中,还提供了一种包含计算机指令的计算机程序产品,当其在计算设备上运行时,使得计算设备执行上述所提供的获取索引节点号的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在服务器或终端上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是服务器或终端能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(Digital Video Disk,DVD)等),或者半导体介质(如固态硬盘等)。
Claims (13)
1.一种获取索引节点号的方法,其特征在于,所述方法包括:
获取目标路径分量对应的元数据文件的标识,其中,所述目标路径分量为待解析的路径信息中的多个路径分量中的任一路径分量;
在被加载至内存的索引块中确定与所述元数据文件的标识对应的第一索引块,其中,所述第一索引块存储有所述元数据文件的标识与索引节点号的对应关系,所述内存为执行所述方法的设备的内存;
根据所述对应关系,确定所述元数据文件的标识对应的索引节点号,其中,所述第一索引块对应的数据块存储有所述元数据文件的索引节点块。
2.根据权利要求1所述的方法,其特征在于,所述在被加载至内存的索引块中确定与所述元数据文件的标识对应的第一索引块,包括:
在被加载至内存的索引块中,将第一索引节点块所在的数据块对应的索引块,确定为所述元数据文件的标识对应的第一索引块,其中,所述第一索引节点块为之前的路径分量对应的元数据文件的索引节点块,所述之前的路径分量为所述路径信息中排列在所述目标路径分量之前的路径分量。
3.根据权利要求1所述的方法,其特征在于,所述在被加载至内存的索引块中确定与所述元数据文件的标识对应的第一索引块,包括:
在被加载至内存的索引块中,将第二索引节点块所在的数据块对应的索引块,确定为所述元数据文件的标识对应的第一索引块,其中,所述第二索引节点块为第一路径分量对应的元数据文件的索引节点块,所述第一路径分量为所述路径信息中所述目标路径分量的前一个路径分量。
4.根据权利要求1所述的方法,其特征在于,所述在被加载至内存的索引块中确定与所述元数据文件的标识对应的第一索引块,包括:
在属于被加载至内存的索引块的其它索引块中,确定所述元数据文件的标识对应的第一索引块,其中,所述其它索引块为被加载至内存的索引块中除第二索引块之外的索引块,所述第二索引块为第二索引节点块所在的数据块对应的索引块,所述第二索引节点块为第一路径分量对应的元数据文件的索引节点块,所述第一路径分量为所述路径信息中所述目标路径分量的前一个路径分量。
5.根据权利要求4所述的方法,其特征在于,所述在属于被加载至内存的索引块的其它索引块中,确定所述元数据文件的标识对应的第一索引块,包括:
在属于被加载至内存的索引块的其它索引块中,依次查找所述其它索引块中的各索引块,确定所述元数据文件的标识对应的第一索引块,其中,所述其它索引块中的第三索引块在所述其它索引块中的第四索引块之前被查找,所述第三索引块为第一元数据文件所在的数据块对应的索引块,所述第四索引块为第二元数据文件所在的数据块对应的索引块,所述第一元数据文件的写入时间点早于所述第二元数据文件的写入时间点。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述目标路径分量为所述路径信息中除根目录路径分量之外的任一路径分量。
7.一种获取索引节点号的装置,其特征在于,所述装置包括存储器和处理器,其中,所述存储器中存储有计算机指令,所述处理器执行所述计算机指令,用于实现如下步骤:
获取目标路径分量对应的元数据文件的标识,其中,所述目标路径分量为待解析的路径信息中的多个路径分量中的任一路径分量;
在被加载至内存的索引块中确定与所述元数据文件的标识对应的第一索引块,其中,所述第一索引块存储有所述元数据文件的标识与索引节点号的对应关系,所述内存为执行所述方法的设备的内存;
根据所述对应关系,确定所述元数据文件的标识对应的索引节点号,其中,所述第一索引块对应的数据块存储有所述元数据文件的索引节点块。
8.根据权利要求7所述的装置,其特征在于,所述处理器,用于:
在被加载至内存的索引块中,将第一索引节点块所在的数据块对应的索引块,确定为所述元数据文件的标识对应的第一索引块,其中,所述第一索引节点块为之前的路径分量对应的元数据文件的索引节点块,所述之前的路径分量为所述路径信息中排列在所述目标路径分量之前的路径分量。
9.根据权利要求7所述的装置,其特征在于,所述处理器,用于:
在被加载至内存的索引块中,将第二索引节点块所在的数据块对应的索引块,确定为所述元数据文件的标识对应的第一索引块,其中,所述第二索引节点块为第一路径分量对应的元数据文件的索引节点块,所述第一路径分量为所述路径信息中所述目标路径分量的前一个路径分量。
10.根据权利要求7所述的装置,其特征在于,所述处理器,用于:
在属于被加载至内存的索引块的其它索引块中,确定所述元数据文件的标识对应的第一索引块,其中,所述其它索引块为被加载至内存的索引块中除第二索引块之外的索引块,所述第二索引块为第二索引节点块所在的数据块对应的索引块,所述第二索引节点块为第一路径分量对应的元数据文件的索引节点块,所述第一路径分量为所述路径信息中所述目标路径分量的前一个路径分量。
11.根据权利要求10所述的装置,其特征在于,所述处理器,用于:
在属于被加载至内存的索引块的其它索引块中,依次查找所述其它索引块中的各索引块,确定所述元数据文件的标识对应的第一索引块,其中,所述其它索引块中的第三索引块在所述其它索引块中的第四索引块之前被查找,所述第三索引块为第一元数据文件所在的数据块对应的索引块,所述第四索引块为第二元数据文件所在的数据块对应的索引块,所述第一元数据文件的写入时间点早于所述第二元数据文件的写入时间点。
12.根据权利要求7至11任一项所述的装置,其特征在于,所述目标路径分量为所述路径信息中除根目录路径分量之外的任一路径分量。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机可读存储介质中的计算机指令被计算设备执行时,使得所述计算设备执行所述权利要求1-6中任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/095483 WO2021017655A1 (zh) | 2019-07-30 | 2020-06-10 | 获取索引节点号的方法、装置、计算设备和存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019106957419 | 2019-07-30 | ||
CN201910695741 | 2019-07-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112306957A true CN112306957A (zh) | 2021-02-02 |
Family
ID=74336329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911261725.5A Pending CN112306957A (zh) | 2019-07-30 | 2019-12-10 | 获取索引节点号的方法、装置、计算设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112306957A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627973A (zh) * | 2023-05-25 | 2023-08-22 | 成都融见软件科技有限公司 | 一种数据定位*** |
CN116627568A (zh) * | 2023-05-25 | 2023-08-22 | 成都融见软件科技有限公司 | 一种数据可视化定位*** |
CN116820602A (zh) * | 2023-05-25 | 2023-09-29 | 成都融见软件科技有限公司 | 一种数据库部分加载*** |
-
2019
- 2019-12-10 CN CN201911261725.5A patent/CN112306957A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627973A (zh) * | 2023-05-25 | 2023-08-22 | 成都融见软件科技有限公司 | 一种数据定位*** |
CN116627568A (zh) * | 2023-05-25 | 2023-08-22 | 成都融见软件科技有限公司 | 一种数据可视化定位*** |
CN116820602A (zh) * | 2023-05-25 | 2023-09-29 | 成都融见软件科技有限公司 | 一种数据库部分加载*** |
CN116627973B (zh) * | 2023-05-25 | 2024-02-09 | 成都融见软件科技有限公司 | 一种数据定位*** |
CN116627568B (zh) * | 2023-05-25 | 2024-02-20 | 成都融见软件科技有限公司 | 一种数据可视化定位*** |
CN116820602B (zh) * | 2023-05-25 | 2024-04-26 | 成都融见软件科技有限公司 | 一种数据库部分加载*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10210191B2 (en) | Accelerated access to objects in an object store implemented utilizing a file storage system | |
US9514154B2 (en) | Virtual file system interface for communicating changes of metadata in a data storage system | |
CN110019004B (zh) | 一种数据处理方法、装置及*** | |
US11403269B2 (en) | Versioning validation for data transfer between heterogeneous data stores | |
US20160147797A1 (en) | Optimizing database deduplication | |
US11093446B2 (en) | Duplicate request checking for file system interfaces | |
US11221921B2 (en) | Method, electronic device and computer readable storage medium for data backup and recovery | |
US10212067B2 (en) | Dynamic symbolic links for referencing in a file system | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
WO2018118287A1 (en) | Method and system for maintaining and searching index records | |
US11082494B2 (en) | Cross storage protocol access response for object data stores | |
GB2520361A (en) | Method and system for a safe archiving of data | |
KR101621385B1 (ko) | 클라우드 스토리지 서비스의 파일 검색 시스템 및 방법, 및 파일 제어 방법 | |
CN113448938A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US11625192B2 (en) | Peer storage compute sharing using memory buffer | |
CN112912870A (zh) | 租户标识符的转换 | |
US20220342888A1 (en) | Object tagging | |
US11520818B2 (en) | Method, apparatus and computer program product for managing metadata of storage object | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
US10235373B2 (en) | Hash-based file system | |
US10762139B1 (en) | Method and system for managing a document search index | |
US20230138113A1 (en) | System for retrieval of large datasets in cloud environments | |
CN114416676A (zh) | 数据处理方法、装置、设备和存储介质 | |
WO2021017655A1 (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
WO2014051592A1 (en) | Replacing virtual file system data structures deleted by a forced unmount |
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 |