CN108241710A - 一种文件创建方法、装置以及文件查询方法、装置 - Google Patents

一种文件创建方法、装置以及文件查询方法、装置 Download PDF

Info

Publication number
CN108241710A
CN108241710A CN201611224782.2A CN201611224782A CN108241710A CN 108241710 A CN108241710 A CN 108241710A CN 201611224782 A CN201611224782 A CN 201611224782A CN 108241710 A CN108241710 A CN 108241710A
Authority
CN
China
Prior art keywords
file
directory
bitmap
directory entry
target
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
CN201611224782.2A
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.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology 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 China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201611224782.2A priority Critical patent/CN108241710A/zh
Publication of CN108241710A publication Critical patent/CN108241710A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种文件创建方法,包括:接收到文件创建请求消息时,根据所述文件创建请求消息获取目标文件的存储路径和文件名;根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中。本发明还同时公开了一种文件创建装置。

Description

一种文件创建方法、装置以及文件查询方法、装置
技术领域
本发明涉及数据业务领域,尤其涉及一种文件创建方法、装置以及文件查询方法、装置。
背景技术
随着大数据时代的到来,各种应用飞速发展,使数据存储系统成为社会经济发展中必不可少的一部分,同时给数据存储系统的设计难度带来巨大挑战,如何在海量文件中查找到目标文件,保证文件系统的查询性能变得非常关键。传统的文件系统在查询文件过程中采用了全局遍历的方法,该方法的算法复杂度为O(n),当目录下存在海量文件时,查询效率十分低下。例如EFS分布式文件系统在检索文件时通常由客户端发出请求,服务器端收到请求后,调用本地文件系统的接口对路径进行逐级解析查找,最终找到目标文件,在逐级查找的过程中,都是通过遍历当前目录下所有文件的目录项的方式来搜索目标文件的目录项。该方法在文件数规模不大的情况下,查找速度不会受到影响,但是当目录中存在海量文件时,由于在查找过程中需要频繁访问磁盘,因此会导致检索的速度急剧下降。
对于分布式文件系统的文件查询,现有提出了采用哈希和位图检索文件的方法,然而,该方法是对整个文件系统设置一个哈希索引表和位图信息,当查询一个文件时,需要遍历整个目录文件的磁盘空间,时间开销很大。因此,为解决分布式文件系统的文件查询效率低的问题,亟需寻找一种文件创建和查询方法。
发明内容
为解决现有存在的问题,本发明实施例期望提供一种文件创建方法、装置以及文件查询方法、装置,能够提高文件查询的效率,实现文件的快速查询。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种文件创建方法,所述方法包括:
接收到文件创建请求消息时,根据所述文件创建请求消息获取目标文件的存储路径和文件名;
根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中。
上述方案中,所述根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中包括:
将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第一位置;
根据预设的位图信息,判断所述第一位置中是否存储有目录项;
若是,则查找所述预设的位图信息中与所述第一位置对应的第一位图位置之后第一个标识为未存储有目录项的状态的第二位图位置,根据所述第二位图位置,在目录文件中查找与所述第二位图位置对应的第二位置,将所述目标文件的目录项存储至所述第二位置中,并将所述第二位图位置标识为存储有目录项的状态;
若否,则将所述目标文件的目录项存储至所述第一位置中,并将所述预设的位图信息中与所述第一位置对应的第一位图位置标识为存储有目录项的状态。
上述方案中,所述根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中之前,所述方法还包括:
遍历所述预设的位图信息中标识为存储有目录项的状态的位图位置;
判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与目标文件的文件名是否都不一致;
若是,则执行所述根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中的步骤;
若否,则返回创建失败。
本发明实施例还提供了一种文件创建装置,所述装置包括:第一获取模块、第一运算模块和存储模块;其中,
所述第一获取模块,用于接收到文件创建请求消息时,根据所述文件创建请求消息获取目标文件的存储路径和文件名;
所述第一运算模块,用于根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
所述存储模块,用于根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中。
上述方案中,所述存储模块包括:第一运算单元、第一判断单元和第一处理单元;其中,
所述第一运算单元,用于将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第一位置;
所述第一判断单元,用于根据预设的位图信息,判断所述第一位置中是否存储有目录项;
所述第一处理单元,用于当所述第一位置存储有目录项时,查找所述预设的位图信息中与所述第一位置对应的第一位图位置之后第一个标识为未存储有目录项的状态的第二位图位置,根据所述第二位图位置,在目录文件中查找与所述第二位图位置对应的第二位置,将所述目标文件的目录项存储至所述第二位置中,并将所述第二位图位置标识为存储有目录项的状态;当所述第一位置未存储有目录项时,将所述目标文件的目录项存储至所述第一位置中,并将所述预设的位图信息中与所述第一位置对应的第一位图位置标识为存储有目录项的状态。
上述方案中,所述装置还包括:遍历模块和判断模块;其中,
所述遍历模块,用于遍历所述预设的位图信息中标识为存储有目录项的状态的位图位置;
所述判断模块,用于判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与目标文件的文件名是否都不一致;若是,则根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中;若否,则返回创建失败。
本发明实施例还提供了一种文件查询方法,所述方法包括:
接收到文件查询请求消息时,根据所述文件查询请求消息获取目标文件的存储路径和文件名;
根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
根据所述哈希值和所述目录文件,查询所述目录文件中存储的目录项中的文件名是否与所述目标文件的文件名一致,并返回查询结果。
上述方案中,所述根据所述哈希值和所述目录文件,查询所述目录文件中存储的目录项中的文件名是否与所述目标文件的文件名一致,并返回查询结果包括:
将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第三位置;
判断所述第三位置中存储的目录项中的文件名与所述目标文件的文件名是否一致;
若是,则返回查询成功;
若否,则遍历预设的位图信息中与所述第三位置对应的第三位图位置之后标识为存储有目录项的状态的位图位置,判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与所述目标文件的文件名是否存在一致,若是,则返回查询成功;若否,则返回查询失败。
本发明实施例还提供了一种文件查询装置,所述装置包括:第二获取模块、第二运算模块和查询模块;其中,
所述第二获取模块,用于接收到文件查询请求消息时,根据所述文件查询请求消息获取目标文件的存储路径和文件名;
所述第二运算模块,用于根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
所述查询模块,用于根据所述哈希值和所述目录文件,查询所述目录文件中存储的目录项中的文件名是否与所述目标文件的文件名一致,并返回查询结果。
上述方案中,所述查询模块包括:第二运算单元、第二判断单元和第二处理单元;其中,
所述第二运算单元,用于将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第三位置;
所述第二判断单元,用于判断所述第三位置中存储的目录项中的文件名与所述目标文件的文件名是否一致;
所述第二处理单元,用于当所述第三位置中存储的目录项中的文件名与所述目标文件的文件名一致时,返回查询成功;当所述第三位置中存储的目录项中的文件名与所述目标文件的文件名不一致时,遍历预设的位图信息中与所述第三位置对应的第三位图位置之后标识为存储有目录项的状态的位图位置,判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与所述目标文件的文件名是否存在一致,若是,则返回查询成功;若否,则返回查询失败。
可见,本发明实施例在文件创建时,首先根据目标文件的文件名,计算所述文件名的哈希值,同时根据所述目标文件的存储路径,解析与所述目标文件对应的目录文件,然后根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中;从而在文件查询时,只需要通过计算所述目标文件的文件名的哈希值,根据所述哈希值和所述目标文件的存储路径就能快速查询到所述目标文件;相对于现有技术而言,本发明实施例对每一个目录文件都使用哈希的方式保存文件的目录项信息,实现了以适度的空间换取查询时间的大幅减少,提高了文件的查询效率,显著提升了在海量文件中查询文件的性能。
附图说明
图1为本发明文件创建方法实施例一的实现流程示意图;
图2为图1所示实现流程中将所述目标文件的目录项存储至所述目录文件中的细化流程示意图;
图3为本发明文件创建方法实施例二的实现流程示意图;
图4为目录文件中位图信息和目录项的存储结构示意图;
图5为本发明文件创建方法实施例三的应用场景示意图;
图6为本发明文件创建装置实施例一的组成结构示意图;
图7为图6所示文件创建装置中存储模块的细化组成结构示意图;
图8为本发明文件创建装置实施例二的组成结构示意图;
图9为本发明文件查询方法实施例一的实现流程示意图;
图10为图9所示实现流程中返回查询结果的细化流程示意图;
图11为本发明文件查询装置实施例一的组成结构示意图;
图12为图11所示文件查询装置中查询模块的细化组成结构示意图。
具体实施方式
本发明实施例提供的文件创建方法和文件查询方法,主要应用于分布式文件系统中;在文件创建时,首先根据目标文件的文件名,计算所述文件名的哈希值,同时根据所述目标文件的存储路径,解析与所述目标文件对应的目录文件,然后根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中;从而在文件查询时,只需要通过计算所述目标文件的文件名的哈希值,根据所述哈希值和所述目标文件的存储路径就能快速查询到所述目标文件,实现文件的快速查询。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为本发明文件创建方法实施例一的实现流程示意图,参照图1所示,本实施例的文件创建方法包括以下步骤:
步骤101,接收到文件创建请求消息时,根据所述文件创建请求消息获取目标文件的存储路径和文件名;
在本实施例中,所述文件创建请求消息中包括目标文件的存储路径和文件名,根据所述文件创建请求消息,确定目标文件的存储路径和文件名。
步骤102,根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
这里,通过逐级遍历目录文件下的目录项信息,解析所述存储路径,从而查找到与所述目标文件对应的目录文件;同时根据所述文件名,计算所述文件名的哈希值。
哈希算法是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值,哈希值是一段数据唯一且极其紧凑的数值表示形式,典型的哈希算法包括MD2、MD4、MD5。
具体地,以第一目标文件的文件名作为自变量,通过哈希算法MD5,将第一目标文件的文件名映射为哈希值;在本实施例中,可以以哈希函数y=H(k)为例进行详细说明,其中,H表示哈希函数,k表示目标文件的文件名,y表示目标文件的文件名的哈希值。
步骤103,根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中。
这里,所述目标文件包括目录文件和数据文件,所述目标文件的目录项包括所述目标文件的文件名和存储位置;本实施例中,将所述目标文件的目录项存储至所述目录文件中为:对目标文件的目录项即目标文件的索引进行创建,从而在后续存储目标文件时,可以根据所述目标文件的目录项对所述目标文件进行存储。
图2为图1所示实现流程中将所述目标文件的目录项存储至所述目录文件中的细化流程示意图,参照图2所示,步骤103具体包括以下步骤:
步骤1031,将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第一位置;
这里,目录文件中已分配空间的目录项数可以根据实际需要进行设置;在本实施例中,在对目标文件的目录项进行创建之后,可以在目录文件中预分配4M的目录项空间,如果每一个目录项的存储空间为256K,则在对目录文件中的下一个目录项进行创建之前,所述目录文件中已分配空间的目录项数会加上16;这样,可以避免对下一个目录项进行创建时,由于所述目录文件中的目录项空间不够,而导致创建失败的情况。
步骤1032,根据预设的位图信息,判断所述第一位置中是否存储有目录项;
这里,所述预设的位图信息用来标识所述目录文件的位置中存储目录项的状态;本实施例中,可以在预设的位图信息与所述第一位置对应的位图位置中以1标识目录文件的第一位置中存储有目录项,以0标识目录文件的第一位置中未存储有目录项。
步骤1033,若是,则查找所述预设的位图信息中与所述第一位置对应的第一位图位置之后第一个标识为未存储有目录项的状态的第二位图位置,根据所述第二位图位置,在目录文件中查找与所述第二位图位置对应的第二位置,将所述目标文件的目录项存储至所述第二位置中,并将所述第二位图位置标识为存储有目录项的状态;
步骤1034,若否,则将所述目标文件的目录项存储至所述第一位置中,并将所述预设的位图信息中与所述第一位置对应的第一位图位置标识为存储有目录项的状态。
具体地,当接收到文件创建请求消息时,根据所述文件创建请求消息,确定目标文件的存储路径和文件名;
根据所述存储路径,逐级遍历目录文件下的目录项信息,查找到与所述目标文件对应的目录文件;同时,以目标文件的文件名作为自变量,以哈希值作为因变量,通过哈希函数y=H(k),计算得到所述目标文件的文件名的哈希值;
将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第一位置;
根据预设的位图信息,判断所述预设的位图信息与所述第一位置对应的第一位图位置中是否为1,即判断所述第一位置中是否存储有目录项;
若是,则遍历所述预设的位图信息中与所述第一位置对应的第一位图位置之后内容为0的位图位置,查找到所述位图位置中第一个内容为0的第二位图位置,将所述目标文件的目录项存储至所述目录文件与所述第二位图位置对应的第二位置中,并将所述第二位图位置中内容置为1;
若否,则将所述目标文件的目录项存储至所述第一位置中,并将所述预设的位图信息中与第一位置对应的第一位图位置中内容置为1。
可以理解的是,接收到文件创建请求消息时,根据目标文件的文件名和目标文件的存储路径,计算得到即将存储所述目标文件的目录项在目录文件中的位置,根据预设的位图信息和所述位置,将所述目标文件的目录项存储至所述位置中,就能提高文件的查询效率是因为:在文件创建时,首先根据目标文件的文件名,计算所述文件名的哈希值,同时根据所述目标文件的存储路径,解析与所述目标文件对应的目录文件;然后根据所述哈希值和所述目录文件,计算得到即将存储所述目标文件的目录项在所述目录文件中的位置,并将所述目标文件的目录项存储至所述目录文件对应的位置中,后续对目标文件进行存储时,将所述目标文件存储至所述目标文件的目录项指示的存储位置中;从而在文件查询时,只需要计算所述目标文件的文件名的哈希值,根据所述哈希值和所述目标文件的存储路径就能快速查询到所述目标文件,因此实现了文件的快速查询,提高了文件的查询效率。
进一步地,在对目标文件的目录项进行创建之前,需要检查所述目标文件的目录项是否存在,当所述目标文件的目录项存在时,则返回创建失败,不对目标文件的目录项进行创建;当所述目标文件的目录项不存在时,则对目标文件的目录项进行创建。
图3为本发明文件创建方法实施例二的实现流程示意图,参照图3所示,本实施例的文件创建方法,是在本发明文件创建方法实施例一的步骤103之前还包括:
步骤104,遍历所述预设的位图信息中标识为存储有目录项的状态的位图位置;
步骤105,判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与目标文件的文件名是否都不一致;若是,则执行步骤103;
步骤106,若否,则返回创建失败。
图4为目录文件中位图信息和目录项的存储结构示意图,参照图4所示,bcfs_disk_inode表示目录文件,目录文件中已分配空间的目录项数有n个,分别为entry[0],entry[1],…,entry[k],…,entry[n],bitmap表示目录文件中的位图信息,用来标识entry[0],entry[1],…,entry[k],…,entry[n]的位置中存储目录项的状态;当entry[0],entry[1],…,entry[k],…,entry[n]的位置中存储有文件的目录项时,这些位置中存储的内容包括文件的文件名和存储位置。
基于实施例一的文件创建方法,在本实施例中,结合图4对本发明文件创建方法的具体实现举例进行详细说明。
当接收到文件创建请求消息时,获取目标文件的存储路径和文件名z;
根据目标文件的存储路径,逐级遍历目录文件下的目录项信息,查找到与所述目标文件对应的目录文件bcfs_disk_inode;以目标文件的文件名z为自变量,通过哈希函数y=H(z),计算目标文件的文件名的哈希值y;
遍历bitmap中内容为1的位图位置,查询到目录文件与所述位图位置对应的位置中存储的目录项中的文件名与目标文件的文件名z都不一致;
将哈希值y除以n,相除结果为目录文件中entry[k]的位置;
查询到bitmap中与entry[k]的位置对应的第一位图位置的内容为1,遍历bitmap中与entry[k]的位置对应的第一位图位置之后内容为0的位图位置,查找到所述位图位置中第一个内容为0的第二位图位置,将所述目标文件的目录项存储至所述目录文件与第二位图位置对应的entry[k+2]的位置中,并将bitmap中第二位图位置中内容置为1,对entry[k+2]进行创建后,后续将目标文件存储至entry[k+2]指示的存储位置中。
图5为本发明文件创建方法实施例三的应用场景示意图,参照图5所示,本实施例的文件创建方法主要应用在BC-EFS分布式文件系统中,BC-EFS分布式文件系统包括客户端bc-client,服务器bc-server和磁盘disk。
BC-EFS分布式文件系统启动后,在服务器端创建文件系统,bc-client挂载bc-server后,便可访问BC-EFS分布式文件系统,执行文件创建、查询和删除操作。
当bc-server接收到bc-client发送的文件创建请求消息时,根据文件创建请求消息确定目标文件的文件名和目标文件的存储路径;根据所述存储路径,逐级遍历目录文件下的目录项信息,查找到与所述目标文件对应的目录文件;遍历所述目录文件的位图信息中内容为1的位图位置,在所述目录文件中查找到与所述位图位置对应的位置,读取磁盘数据,获取所述位置的目录项;判断所述位置中存储的目录项中的文件名与目标文件的文件名是否一致,若是,则返回创建失败;若否,则继续遍历所述位图信息中内容为1的位图位置,直到在所述目录文件与所述位图位置对应的位置中查找到所述目标文件的目录项,此时返回创建失败;或者在遍历结束时,也没有在所述目录文件与所述位图位置对应的位置中查找到所述目标文件的目录项,此时对目标文件的目录项进行创建,并在创建完成后返回创建成功。
本发明还提供一种文件创建装置,用于实现本发明文件创建方法的具体细节,达到相同的效果。
图6为本发明文件创建装置实施例一的组成结构示意图,参照图6所示,本实施例的文件创建装置包括:第一获取模块21、第一运算模块22和存储模块23;其中,
所述第一获取模块21,用于接收到文件创建请求消息时,根据所述文件创建请求消息获取目标文件的存储路径和文件名;
所述第一运算模块22,用于根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
所述存储模块23,用于根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中。
图7为图6所示文件创建装置中存储模块的细化组成结构示意图,参照图7所示,所述存储模块23包括:第一运算单元231、第一判断单元232和第一处理单元233;其中,
所述第一运算单元231,用于将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第一位置;
所述第一判断单元232,用于根据预设的位图信息,判断所述第一位置中是否存储有目录项;
所述第一处理单元233,用于当所述第一位置存储有目录项时,查找所述预设的位图信息中与所述第一位置对应的第一位图位置之后第一个标识为未存储有目录项的状态的第二位图位置,根据所述第二位图位置,在目录文件中查找与所述第二位图位置对应的第二位置,将所述目标文件的目录项存储至所述第二位置中,并将所述第二位图位置标识为存储有目录项的状态;当所述第一位置未存储有目录项时,将所述目标文件的目录项存储至所述第一位置中,并将所述预设的位图信息中与所述第一位置对应的第一位图位置标识为存储有目录项的状态。
进一步地,在对目标文件的目录项进行创建之前,需要检查所述目标文件的目录项是否存在,当所述目标文件的目录项存在时,则返回创建失败,不对目标文件的目录项进行创建;当所述目标文件的目录项不存在时,则对目标文件的目录项进行创建。
图8为本发明文件创建装置实施例二的组成结构示意图,本实施例的文件创建装置除了包括第一获取模块21、第一运算模块22和存储模块23外,还包括:遍历模块24和判断模块25;其中,
所述遍历模块24,用于遍历所述预设的位图信息中标识为存储有目录项的状态的位图位置;
所述判断模块25,用于判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与目标文件的文件名是否都不一致;若是,则执行所述根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中的步骤;若否,则返回创建失败。
图9为本发明文件查询方法实施例一的实现流程示意图,参照图9所示,本实施例的文件查询方法包括以下步骤:
步骤301,接收到文件查询请求消息时,根据所述文件查询请求消息获取目标文件的存储路径和文件名;
在本实施例中,所述文件查询请求消息中包括目标文件的存储路径和文件名,根据所述文件查询请求消息,确定目标文件的存储路径和文件名。
步骤302,根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
这里,通过逐级遍历目录文件下的目录项信息,解析所述存储路径,从而查找到与所述目标文件对应的目录文件;同时根据所述文件名,计算所述文件名的哈希值。
哈希算法是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值,哈希值是一段数据唯一且极其紧凑的数值表示形式,典型的哈希算法包括MD2、MD4、MD5。
具体地,以第一目标文件的文件名作为自变量,通过哈希算法MD5,将第一目标文件的文件名映射为哈希值;在本实施例中,可以以哈希函数y=H(k)为例进行详细说明,其中,H表示哈希函数,k表示目标文件的文件名,y表示目标文件的文件名的哈希值。
步骤303,根据所述哈希值和所述目录文件,查询所述目录文件中存储的目录项中的文件名是否与所述目标文件的文件名一致,并返回查询结果。
图10为图9所示实现流程中返回查询结果的细化流程示意图,参照图10所示,步骤303具体包括以下步骤:
步骤3031,将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第三位置;
步骤3032,判断所述第三位置中存储的目录项中的文件名与所述目标文件的文件名是否一致;
步骤3033,若是,则返回查询成功;
步骤3034,若否,则遍历预设的位图信息中与所述第三位置对应的第三位图位置之后标识为存储有目录项的状态的位图位置,判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与所述目标文件的文件名是否存在一致,若是,则返回查询成功;若否,则返回查询失败。
这里,所述预设的位图信息用来标识所述目录文件的位置中存储目录项的状态;本实施例中,可以在所述预设的位图信息与所述第一位置对应的位图位置中以1标识目录文件的第一位置中存储有目录项,以0标识目录文件的第一位置中未存储有目录项。
具体地,当接收到文件查询请求消息时,根据所述文件查询请求消息,确定目标文件的存储路径和文件名;
根据所述存储路径,逐级遍历目录文件下的目录项信息,查找到与所述目标文件对应的目录文件;同时,以目标文件的文件名作为自变量,以哈希值作为因变量,通过哈希函数y=H(k),计算得到所述目标文件的文件名的哈希值;
将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第三位置;
判断所述第三位置中存储的目录项中的文件名是否与目标文件的文件名一致;
若是,则返回查询成功;
若否,则遍历所述预设的位图信息中与所述第三位置对应的第三位图位置之后内容为1的位图位置,判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与所述目标文件的文件名是否存在一致,若是,则返回查询成功;若否,则返回查询失败。
可以理解的是,接收到文件查询请求消息时,根据目标文件的文件名和目标文件的存储路径,计算得到所述目标文件的目录项在目录文件中的位置,根据预设的位图信息和所述位置,对所述目标文件进行查询,就能提高文件的查询效率是因为:当目标文件存在时,计算所述目标文件的文件名的哈希值,根据预设的位图信息、所述哈希值和所述目标文件的存储路径就能快速查询到所述目标文件的目录项,从而查找到目标文件;而当目标文件不存在时,只需要遍历与所述目标文件对应的目录文件的位图信息,读取目录文件中存储的文件目录项,可以避免全局遍历的过程,因此能够提高文件的查询效率,实现文件的快速查询。
本发明还提供一种文件查询装置,用于实现本发明文件查询方法的具体细节,达到相同的效果。
图11为本发明文件查询装置实施例一的组成结构示意图,参照图11所示,本实施例的文件查询装置包括:第二获取模块41、第二运算模块42和查询模块43;其中,
所述第二获取模块41,用于接收到文件查询请求消息时,根据所述文件查询请求消息获取目标文件的存储路径和文件名;
所述第二运算模块42,用于根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
所述查询模块43,用于根据所述哈希值和所述目录文件,查询所述目录文件中存储的目录项中的文件名是否与所述目标文件的文件名一致,并返回查询结果。
图12为图11所示文件查询装置中查询模块的细化组成结构示意图,参照图12所示,所述查询模块43包括:第二运算单元431、第二判断单元432和第二处理单元433;其中,
所述第二运算单元431,用于将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第三位置;
所述第二判断单元432,用于判断所述第三位置中存储的目录项中的文件名与所述目标文件的文件名是否一致;
所述第二处理单元433,用于当所述第三位置中存储的目录项中的文件名与所述目标文件的文件名一致时,返回查询成功;当所述第三位置中存储的目录项中的文件名与所述目标文件的文件名不一致时,遍历预设的位图信息中与所述第三位置对应的第三位图位置之后标识为存储有目录项的状态的位图位置,判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与所述目标文件的文件名是否存在一致,若是,则返回查询成功;若否,则返回查询失败。
在实际应用中,所述第一获取模块21、第一运算模块22、存储模块23、遍历模块24、判断模块25、第二获取模块41、第二运算模块42、查询模块43,以及第一运算单元231、第一判断单元232、第一处理单元233、第二运算单元431、第二判断单元432和第二处理单元433均可由位于移动终端中的中央处理器(CPU,Central Processing Unit)、微处理器(MPU,Micro Processor Unit)、数字信号处理器(DSP,Digital Signal Processor)、或现场可编程门阵列(FPGA,Field Programmable Gate Array)等实现。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

Claims (10)

1.一种文件创建方法,其特征在于,所述方法包括:
接收到文件创建请求消息时,根据所述文件创建请求消息获取目标文件的存储路径和文件名;
根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中包括:
将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第一位置;
根据预设的位图信息,判断所述第一位置中是否存储有目录项;
若是,则查找所述预设的位图信息中与所述第一位置对应的第一位图位置之后第一个标识为未存储有目录项的状态的第二位图位置,根据所述第二位图位置,在目录文件中查找与所述第二位图位置对应的第二位置,将所述目标文件的目录项存储至所述第二位置中,并将所述第二位图位置标识为存储有目录项的状态;
若否,则将所述目标文件的目录项存储至所述第一位置中,并将所述预设的位图信息中与所述第一位置对应的第一位图位置标识为存储有目录项的状态。
3.根据权利要求2所述的方法,其特征在于,所述根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中之前,所述方法还包括:
遍历所述预设的位图信息中标识为存储有目录项的状态的位图位置;
判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与目标文件的文件名是否都不一致;
若是,则执行所述根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中的步骤;
若否,则返回创建失败。
4.一种文件创建装置,其特征在于,所述装置包括:第一获取模块、第一运算模块和存储模块;其中,
所述第一获取模块,用于接收到文件创建请求消息时,根据所述文件创建请求消息获取目标文件的存储路径和文件名;
所述第一运算模块,用于根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
所述存储模块,用于根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中。
5.根据权利要求4所述的装置,其特征在于,所述存储模块包括:第一运算单元、第一判断单元和第一处理单元;其中,
所述第一运算单元,用于将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第一位置;
所述第一判断单元,用于根据预设的位图信息,判断所述第一位置中是否存储有目录项;
所述第一处理单元,用于当所述第一位置存储有目录项时,查找所述预设的位图信息中与所述第一位置对应的第一位图位置之后第一个标识为未存储有目录项的状态的第二位图位置,根据所述第二位图位置,在目录文件中查找与所述第二位图位置对应的第二位置,将所述目标文件的目录项存储至所述第二位置中,并将所述第二位图位置标识为存储有目录项的状态;当所述第一位置未存储有目录项时,将所述目标文件的目录项存储至所述第一位置中,并将所述预设的位图信息中与所述第一位置对应的第一位图位置标识为存储有目录项的状态。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:遍历模块和判断模块;其中,
所述遍历模块,用于遍历所述预设的位图信息中标识为存储有目录项的状态的位图位置;
所述判断模块,用于判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与目标文件的文件名是否都不一致;若是,则根据所述哈希值和所述目录文件,将所述目标文件的目录项存储至所述目录文件中;若否,则返回创建失败。
7.一种文件查询方法,其特征在于,所述方法包括:
接收到文件查询请求消息时,根据所述文件查询请求消息获取目标文件的存储路径和文件名;
根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
根据所述哈希值和所述目录文件,查询所述目录文件中存储的目录项中的文件名是否与所述目标文件的文件名一致,并返回查询结果。
8.根据权利要求7所述的方法,其特征在于,所述根据所述哈希值和所述目录文件,查询所述目录文件中存储的目录项中的文件名是否与所述目标文件的文件名一致,并返回查询结果包括:
将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第三位置;
判断所述第三位置中存储的目录项中的文件名与所述目标文件的文件名是否一致;
若是,则返回查询成功;
若否,则遍历预设的位图信息中与所述第三位置对应的第三位图位置之后标识为存储有目录项的状态的位图位置,判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与所述目标文件的文件名是否存在一致,若是,则返回查询成功;若否,则返回查询失败。
9.一种文件查询装置,其特征在于,所述装置包括:第二获取模块、第二运算模块和查询模块;其中,
所述第二获取模块,用于接收到文件查询请求消息时,根据所述文件查询请求消息获取目标文件的存储路径和文件名;
所述第二运算模块,用于根据所述存储路径,解析与所述目标文件对应的目录文件,并根据所述文件名,计算所述文件名的哈希值;
所述查询模块,用于根据所述哈希值和所述目录文件,查询所述目录文件中存储的目录项中的文件名是否与所述目标文件的文件名一致,并返回查询结果。
10.根据权利要求9所述的装置,其特征在于,所述查询模块包括:第二运算单元、第二判断单元和第二处理单元;其中,
所述第二运算单元,用于将所述哈希值与所述目录文件中已分配空间的目录项数相除,计算得到所述目录文件中的第三位置;
所述第二判断单元,用于判断所述第三位置中存储的目录项中的文件名与所述目标文件的文件名是否一致;
所述第二处理单元,用于当所述第三位置中存储的目录项中的文件名与所述目标文件的文件名一致时,返回查询成功;当所述第三位置中存储的目录项中的文件名与所述目标文件的文件名不一致时,遍历预设的位图信息中与所述第三位置对应的第三位图位置之后标识为存储有目录项的状态的位图位置,判断所述目录文件与所述位图位置对应的位置中存储的目录项中的文件名与所述目标文件的文件名是否存在一致,若是,则返回查询成功;若否,则返回查询失败。
CN201611224782.2A 2016-12-27 2016-12-27 一种文件创建方法、装置以及文件查询方法、装置 Pending CN108241710A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611224782.2A CN108241710A (zh) 2016-12-27 2016-12-27 一种文件创建方法、装置以及文件查询方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611224782.2A CN108241710A (zh) 2016-12-27 2016-12-27 一种文件创建方法、装置以及文件查询方法、装置

Publications (1)

Publication Number Publication Date
CN108241710A true CN108241710A (zh) 2018-07-03

Family

ID=62702669

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611224782.2A Pending CN108241710A (zh) 2016-12-27 2016-12-27 一种文件创建方法、装置以及文件查询方法、装置

Country Status (1)

Country Link
CN (1) CN108241710A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109408474A (zh) * 2018-11-09 2019-03-01 郑州云海信息技术有限公司 一种文件创建方法及客户端
CN109918346A (zh) * 2019-02-27 2019-06-21 苏州浪潮智能科技有限公司 一种文件的创建方法及装置
CN110765094A (zh) * 2019-10-24 2020-02-07 重庆紫光华山智安科技有限公司 文件创建方法、装置、系统及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283489A1 (en) * 2004-06-17 2005-12-22 Fujitsu Limited File management program, file management process, and file management apparatus
CN101719141A (zh) * 2009-12-24 2010-06-02 成都市华为赛门铁克科技有限公司 基于目录对象的文件处理方法和系统
CN105339904A (zh) * 2013-02-01 2016-02-17 辛博立科伊奥公司 用于存储和检索数据的方法和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283489A1 (en) * 2004-06-17 2005-12-22 Fujitsu Limited File management program, file management process, and file management apparatus
CN101719141A (zh) * 2009-12-24 2010-06-02 成都市华为赛门铁克科技有限公司 基于目录对象的文件处理方法和系统
CN105339904A (zh) * 2013-02-01 2016-02-17 辛博立科伊奥公司 用于存储和检索数据的方法和系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109408474A (zh) * 2018-11-09 2019-03-01 郑州云海信息技术有限公司 一种文件创建方法及客户端
CN109408474B (zh) * 2018-11-09 2021-11-19 郑州云海信息技术有限公司 一种文件创建方法及客户端
CN109918346A (zh) * 2019-02-27 2019-06-21 苏州浪潮智能科技有限公司 一种文件的创建方法及装置
CN110765094A (zh) * 2019-10-24 2020-02-07 重庆紫光华山智安科技有限公司 文件创建方法、装置、系统及存储介质
CN110765094B (zh) * 2019-10-24 2020-08-11 重庆紫光华山智安科技有限公司 文件创建方法、装置、系统及存储介质

Similar Documents

Publication Publication Date Title
CN111045857B (zh) 数据备份和恢复的方法、电子设备和计算机可读存储介质
WO2022148055A1 (zh) 一种文件检索方法及计算设备
CN107704202B (zh) 一种数据快速读写的方法和装置
CN107368527B (zh) 基于数据流的多属性索引方法
CN106484820B (zh) 一种重命名方法、访问方法及装置
CN111813756B (zh) 一种日志检索系统、方法、装置、电子设备及存储介质
CN106951179B (zh) 一种数据迁移方法及装置
CN103823807B (zh) 一种去除重复数据的方法、装置及系统
CN106980680B (zh) 数据存储方法及存储设备
US20180107404A1 (en) Garbage collection system and process
WO2020215580A1 (zh) 一种分布式全局数据去重方法和装置
CN109033295B (zh) 超大数据集的合并方法及装置
CN108241710A (zh) 一种文件创建方法、装置以及文件查询方法、装置
CN116431726A (zh) 一种图数据处理方法、装置、设备及计算机存储介质
CN112306957A (zh) 获取索引节点号的方法、装置、计算设备和存储介质
CN100357943C (zh) 一种检查机群文件系统中垃圾文件的方法
CN115543993A (zh) 数据处理方法、装置、电子设备及存储介质
CN111176574B (zh) 一种小文件存储方法、装置、设备及介质
CN111414239A (zh) 基于麒麟云计算平台的虚拟机镜像管理方法、系统及介质
US10262056B2 (en) Method and system for performing search queries using and building a block-level index
CN116303580A (zh) 数据查询方法、装置及数据库系统
CN116361287A (zh) 路径解析方法、装置以及系统
US10853320B1 (en) Scavenging directories for free space
CN112380174B (zh) 含删除文件的xfs文件系统解析方法、终端设备及存储介质
CN114416676A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180703