CN113946544A - 一种分布式文件系统的元数据组织方法及装置 - Google Patents

一种分布式文件系统的元数据组织方法及装置 Download PDF

Info

Publication number
CN113946544A
CN113946544A CN202010685428.XA CN202010685428A CN113946544A CN 113946544 A CN113946544 A CN 113946544A CN 202010685428 A CN202010685428 A CN 202010685428A CN 113946544 A CN113946544 A CN 113946544A
Authority
CN
China
Prior art keywords
directory
file
data block
unique identifier
content
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
CN202010685428.XA
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.)
Zhengzhou Xinrand Network Technology Co ltd
Original Assignee
Zhengzhou Xinrand Network 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 Zhengzhou Xinrand Network Technology Co ltd filed Critical Zhengzhou Xinrand Network Technology Co ltd
Priority to CN202010685428.XA priority Critical patent/CN113946544A/zh
Publication of CN113946544A publication Critical patent/CN113946544A/zh
Pending legal-status Critical Current

Links

Images

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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • 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/18File system types
    • G06F16/182Distributed file systems

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)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明属于数据处理技术领域,具体地说,涉及一种分布式文件系统的元数据组织方法,该方法包括:写入时,根据文件内容生成文件内容的内部唯一标识,根据目录内容生成目录内容的内部唯一标识,读取时,基于文件全路径名生成的文件映射块的唯一访问标识,获取文件映射块中的文件索引数据块的全局唯一标识,并根据获取的文件索引数据块的全局唯一标识,获取文件内容的内部唯一标识,进而获取文件内容的数据;基于目录全路径名生成的目录映射块的唯一访问标识,获取目录映射块中的目录索引数据块的全局唯一标识,并根据获取的目录索引数据块的全局唯一标识,获取目录内容的内部唯一标识,进而获取目录内容的数据。

Description

一种分布式文件系统的元数据组织方法及装置
技术领域
本发明属于数据处理技术领域,具体地说,涉及一种分布式文件系统的元数据组织方法及装置。
背景技术
近年来,互联网行业高速发展,物联网等新兴产业也普及开来。各种形式的内容呈现快速上升的趋势,各行各业的数据量越来越大。有海量重要的数据和文件需要保存。此外,大数据的任务分析等需要快速的从存储单元获取数据。因此需要大量的资源来存储和管理这些数据。那么,高效的元数据组织及管理是必不可少的。分布式文件系统凭借其内在的通用性和简洁性已经成为了解决海量数据存储及管理的重要途径。
分布式文件系统的元数据是描述该系统结构特征的数据,如大小、状态信息以及针对每个文件或目录的访问权限,拥有者、时间等,还有包括目录与子目录/子文件的映射关系、文件和文件数据块的映射关系等。对分布式文件系统的操作,均要涉及对元数据的操作,分布式文件系统中的大部分访问也都是基于元数据进行的。因此,提出一种分布式文件系统的元数据组织方法是十分有意义的。
目前,分布式文件系统主要分为两种方式,一是将所有元数据通过元数据服务器单独存放,通过内存存放整个文件目录结构,当文件、目录过多时,会造成存储过大。而且获取文件及目录信息时,需要从元数据服务器获取,大量的访问会使元数据服务器形成单点瓶颈,造成数据获取效率较低。二是通过类hash算法,分布式文件系统通过文件、目录的名字将切分的数据块映射到存储模块,进而完成对每个数据块的存储和获取,同时通过每级目录数据中存储下级目录或文件的信息,形成级联关系。当获取文件或目录信息时,需要从根路径一级一级的逐级向下查找,因此,为了获取文件或目录信息,仍然需要遍历多级目录,有较大开销。
发明内容
为解决现有技术存在上述缺陷,本发明提出了一种分布式文件系统的元数据组织方法,通过将所有数据和元数据均以数据块的形式存于存储节点,将大的数据经过过分形成小的数据块,目的是减小元数据集中存储方式的单点瓶颈,同时通过使目录、文件全路径的哈希作为唯一标识获取文件、目录信息。相比一些分布式文件系统通过每级目录索引数据块中存储下级目录或文件的信息,形成级联关系,能够避免在获取文件及其对应的目录信息时多级遍历目录从而造成开销大的问题。
本发明提供的一种分布式文件系统的元数据组织方法,该方法包括:
写入时,根据文件内容生成文件内容的内部唯一标识,将文件内容的内部唯一标识和文件系统维护的相关文件属性信息存入文件索引数据块,为文件索引数据块生成无语义的全局唯一标识,将文件索引数据块的全局唯一标识写入文件所在目录的目录内容中,将文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息,存入文件映射块,并基于文件全路径名,生成文件映射块的唯一访问标识;
根据目录内容生成目录内容的内部唯一标识,将目录内容的内部唯一标识和文件系统维护的相关目录属性信息存入目录索引数据块,为目录索引数据块生成无语义的全局唯一标识,将目录索引数据块的全局唯一标识写入当前目录的目录内容中,将目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息,存入目录映射块,并基于目录全路径名,生成目录映射块的唯一访问标识;
读取时,基于文件全路径名生成的文件映射块的唯一访问标识,获取文件映射块中的文件索引数据块的全局唯一标识,并根据获取的文件索引数据块的全局唯一标识,获取文件内容的内部唯一标识,进而获取文件内容的数据;
基于目录全路径名生成的目录映射块的唯一访问标识,获取目录映射块中的目录索引数据块的全局唯一标识,并根据获取的目录索引数据块的全局唯一标识,获取目录内容的内部唯一标识,进而获取目录内容的数据。
作为上述技术方案的改进之一,所述根据文件内容生成文件内容的内部唯一标识,具体为:
所述文件内容为包含层级关系的文件数据;
步骤1-1)按照切分规则,将文件数据切分生成多个数据块,每个数据块具有一个唯一标识;其中,对每个数据块中的数据内容经过哈希计算,得到每个数据块对应的唯一标识;
步骤1-2)采用TLV格式进行编码,将多个数据块对应的唯一标识及其容量组合成一个新的数据块;
步骤1-3)如果新的数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤1-5);
如果新的数据块的容量大于预先设定的数据块的最大容量时,则跳至步骤1-4);
步骤1-4)将该新的数据块按照切分规则再次切分成多个子数据块,每个子数据块通过子数据块的数据内容进行哈希计算形成唯一标识,再通过TLV格式,将多个子数据块对应的唯一标识及其容量组合成一个新的子数据块,如果新的子数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤1-5);
如果新的子数据块的容量大于预先设定的数据块的最大容量时,则对新的子数据块按照切分规则再次进行拆分,循环步骤1-4);
步骤1-5)将新的数据块通过该新的数据块的数据内容经过哈希计算,生成文件内容的内部唯一标识。
作为上述技术方案的改进之一,所述根据目录内容生成目录内容的内部唯一标识,具体为:
所述目录内容为包含层级关系的多个目录索引块;
步骤2-1)采用TLV格式进行编码,将多个目录索引块对应的唯一标识及其容量组合成一个新的目录数据块;
步骤2-2)如果新的目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤2-4);
如果新的目录数据块的容量大于预先设定的数据块的最大容量时,则跳至步骤2-3);
步骤2-3)将该新的目录数据块按照切分规则切分成多个子目录数据块,每个子目录数据块通过子目录数据块的数据内容进行哈希计算形成唯一标识,再通过TLV格式,将多个子目录数据块对应的唯一标识及其容量组合成一个新的子目录数据块,如果新的子目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤2-4);
如果新的子目录数据块的容量大于预先设定的数据块的最大容量时,则对该新的子目录数据块按照切分规则再次进行切分,并循环步骤2-3);
步骤2-4)将新的目录数据块通过该新的目录数据块的数据内容经过哈希计算,生成目录内容的内部唯一标识。
作为上述技术方案的改进之一,所述文件系统维护的相关文件属性信息包括:文件索引数据块类型、文件索引数据块存储容量、文件名字、文件访问时间、文件修改时间、文件创建时间、文件所属用户名、文件所属组名、文件的权限、文件内容的唯一标识和该文件所在目录的索引块唯一标识;
所述文件系统维护的文件的部分属性信息包括:文件所属用户名、文件所属组名和文件的权限。
作为上述技术方案的改进之一,所述文件系统维护的相关目录属性信息包括:目录索引数据块类型、目录索引数据块存储容量、目录名字、目录访问时间、目录修改时间、目录创建时间、目录所属用户名、目录所属组名、目录的权限、目录内容的唯一标识和该目录上一级目录的索引块唯一标识;
所述文件系统维护的目录的部分属性信息包括:目录所属用户名、目录所属组名和目录的权限。
作为上述技术方案的改进之一,所述基于文件的全路径名,生成文件映射块的唯一访问标识,具体为:通过对文件的全路径名,经过哈希计算,生成文件映射块的唯一访问标识。
作为上述技术方案的改进之一,所述基于目录的全路径名,生成目录映射块的唯一访问标识,具体为:通过对目录的全路径名,经过哈希计算,生成目录映射块的唯一访问标识。
本发明还提供了一种分布式文件系统的元数据组织装置,该装置包括:
映射模块,用于根据文件的全路径名,获取带有文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息的文件映射块;还用于根据目录的全路径名,获取带有目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息的目录映射块;
索引模块,用于获取文件的相关属性信息以及存储文件内容的内部唯一标识;还用于获取目录的相关属性信息以及存储目录内容的内部唯一标识;
文件模块,用于存储文件内容的内部唯一标识与切分后的数据块标识的映射关系,进而获取文件内容的数据;
目录模块,用于存储目录内容的内部唯一标识与目录中多个目录索引块的映射关系,进而获取目录内容的数据。
作为上述技术方案的改进之一,所述映射模块包括:
目录映射单元,用于根据目录的全路径名,获取带有目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息的目录映射块;还用于存储目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息;和
文件映射单元,用于根据文件的全路径名,获取带有文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息的文件映射块;还用于存储文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息。
作为上述技术方案的改进之一,所述索引模块包括:
目录索引单元,用于根据目录索引数据块的全局唯一标识,获取文件系统维护的相关目录属性信息;还用于根据目录内容,生成目录内容的内部唯一标识;还用于存储目录内容的内部唯一标识和文件系统维护的相关目录属性信息;和
文件索引单元,用于根据文件索引数据块的全局唯一标识,获取文件系统维护的相关文件属性信息;还用于根据文件内容,生成文件内容的内部唯一标识;还用于存储文件内容的内部唯一标识和文件系统维护的相关文件属性信息。
本发明与现有技术相比的有益效果是:
本发明的方法,将大的文件数据和目录内容经过切分形成小的数据块,目的是减小元数据集中存储方式的单点瓶颈,同时通过使目录全路径名和文件全路径名的哈希,作为唯一标识,获取文件内容的数据和目录内容的数据。相比现有的分布式文件系统,通过每一级目录索引数据块中存储下级目录或文件的信息,形成级联关系,能够避免在获取文件内容的数据及其对应的目录内容的数据时,多级遍历目录,从而造成开销大的问题,同时文件内容的数据与目录内容的数据均采用哈希摘要命名的方式,保证了数据的正确性。
附图说明
图1是本发明的一种分布式文件系统的元数据组织方法的一个具体实施例的层级关系结构示意图;
图2是图1的本发明的一种分布式文件系统的元数据组织方法的一个具体实施例的详细层级关系结构图;
图3是本发明的一种分布式文件系统的元数据组织装置的结构示意图。
附图标记:
201、映射模块 202、索引模块
203、文件模块 204、目录模块
2011、文件映射单元 2012、目录映射单元
2021、文件索引单元 2022、目录索引单元
具体实施方式
现结合附图对本发明作进一步的描述。
本发明提供了一种分布式文件系统的元数据组织方法,该方法包括:
写入时,根据文件内容生成文件内容的内部唯一标识;将文件内容的内部唯一标识和文件系统维护的相关文件属性信息存入文件索引数据块,为文件索引数据块生成无语义的全局唯一标识,将文件索引数据块的全局唯一标识写入文件所在目录的目录内容中,将文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息,存入文件映射块,并基于文件全路径名,生成文件映射块的唯一访问标识;
其中,根据文件内容生成文件内容的内部唯一标识的具体过程为:
所述文件内容为包含层级关系的文件数据;
步骤1-1)按照切分规则,将文件数据切分生成多个数据块,每个数据块具有一个唯一标识;其中,对每个数据块中的数据内容经过哈希计算,得到每个数据块对应的唯一标识;
步骤1-2)采用TLV(Type Length Value)格式进行编码,将多个数据块对应的唯一标识及其容量组合成一个新的数据块;
步骤1-3)如果新的数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤1-5);
如果新的数据块的容量大于预先设定的数据块的最大容量时,则跳至步骤1-4);
步骤1-4)将该新的数据块按照切分规则再次切分成多个子数据块,每个子数据块通过子数据块的数据内容进行哈希计算形成唯一标识,再通过TLV格式,将多个子数据块对应的唯一标识及其容量组合成一个新的子数据块,如果新的子数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤1-5);
如果新的子数据块的容量大于预先设定的数据块的最大容量时,则对新的子数据块按照切分规则再次进行拆分,循环步骤1-4);
步骤1-5)将新的数据块通过该新的数据块的数据内容经过哈希计算,生成文件内容的内部唯一标识。
其中,所述文件系统维护的相关文件属性信息包括:文件索引数据块类型、文件索引数据块存储容量、文件名字、文件访问时间、文件修改时间、文件创建时间、文件所属用户名、文件所属组名、文件的权限、文件内容的唯一标识和该文件所在目录的索引块唯一标识;
所述文件系统维护的文件的部分属性信息包括:文件所属用户名、文件所属组名和文件的权限。
根据目录内容生成目录内容的内部唯一标识,将目录内容的内部唯一标识和文件系统维护的相关目录属性信息存入目录索引数据块,为目录索引数据块生成无语义的全局唯一标识,将目录索引数据块的全局唯一标识写入当前目录的目录内容中,将目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息,存入目录映射块,并基于目录全路径名,生成目录映射块的唯一访问标识;
所述根据目录内容生成目录内容的内部唯一标识,具体为:
所述目录内容为包含层级关系的多个目录索引块;
步骤2-1)采用TLV(Type Length Value)格式进行编码,将多个目录索引块对应的唯一标识及其容量组合成一个新的目录数据块;
步骤2-2)如果新的目录数据块的容量小于或等于预先设定的目录数据块的最大容量时,则跳至步骤2-4);
如果新的目录数据块的容量大于预先设定的目录数据块的最大容量时,则跳至步骤2-3);
步骤2-3)将该新的目录数据块按照切分规则切分成多个子目录数据块,每个子目录数据块通过子目录数据块的数据内容进行哈希计算形成唯一标识,再通过TLV格式,将多个子目录数据块对应的唯一标识及其容量组合成一个新的子目录数据块,如果新的子目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤2-4);
如果新的子目录数据块的容量大于预先设定的数据块的最大容量时,则对该新的子目录数据块按照切分规则再次进行切分,并循环步骤2-3);
步骤2-4)将新的目录数据块通过该新的目录数据块的数据内容经过哈希计算,生成目录内容的内部唯一标识。
其中,所述文件系统维护的相关目录属性信息包括:目录索引数据块类型、目录索引数据块存储容量、目录名字、目录访问时间、目录修改时间、目录创建时间、目录所属用户名、目录所属组名、目录的权限、目录内容的唯一标识和该目录上一级目录的索引块唯一标识;
所述文件系统维护的目录的部分属性信息包括:目录所属用户名、目录所属组名和目录的权限。
其中,所述基于文件的全路径名,生成文件映射块的唯一访问标识,具体为:通过对文件的全路径名,经过哈希计算,生成文件映射块的唯一访问标识。
其中,所述基于目录的全路径名,生成目录映射块的唯一访问标识,具体为:通过对目录的全路径名,经过哈希计算,生成目录映射块的唯一访问标识。
读取时,基于文件全路径名生成的文件映射块的唯一访问标识,获取文件映射块中的文件索引数据块的全局唯一标识,并根据获取的文件索引数据块的全局唯一标识,获取文件内容的内部唯一标识,进而获取文件内容的数据;
基于目录全路径名生成的目录映射块的唯一访问标识,获取目录映射块中的目录索引数据块的全局唯一标识,并根据获取的目录索引数据块的全局唯一标识,获取目录内容的内部唯一标识,进而获取目录内容的数据。
所述文件的内部唯一标识用于获取文件内容的数据,并且用于文件获取后的数据校验以及数据块去重。
所述目录的内部唯一标识用于获取目录内容的数据,并且用于目录获取后的数据校验以及数据块去重。
所述无语义的全局唯一标识,可选用UUID,用于防止内容修改引起的上层多级目录索引数据块、包含层级关系的目录数据的重新生成。并且用于获取索引数据块进而获取文件和目录的部分属性信息以及文件和目录的内部唯一标识。
所述文件映射块的唯一访问标识需要满足与文件全路径的唯一对应关系,且可通过文件全路径计算得到该唯一标识。该唯一标识可通过文件全路径经哈希计算获得,该唯一标识用于根据文件全路径直接获取文件的部分属性信息以及存储文件的索引数据块唯一标识。
所述目录映射块的唯一访问标识需要满足与目录全路径的唯一对应关系,且可通过目录全路径计算得到该唯一标识,该唯一标识可通过目录全路径经哈希计算获得,该唯一标识用于根据目录全路径直接获取目录的部分属性信息以及存储目录的索引数据块唯一标识。
如图3所示,本发明还提供了一种分布式文件系统的元数据组织装置,该装置包括:
映射模块201,用于根据文件的全路径名,获取带有文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息的文件映射块;还用于根据目录的全路径名,获取带有目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息的目录映射块;
其中,所述映射模块201包括:
目录映射单元2012,用于根据目录的全路径名,获取带有目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息的目录映射块;还用于存储目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息;和
文件映射单元2011,用于根据文件的全路径名,获取带有文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息的文件映射块;还用于存储文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息。
索引模块202,用于获取文件的相关属性信息以及存储文件内容的内部唯一标识;还用于获取目录的相关属性信息以及存储目录内容的内部唯一标识;
其中,所述索引模块202包括:
目录索引单元2022,用于根据目录索引数据块的全局唯一标识,获取文件系统维护的相关目录属性信息;还用于根据目录内容,生成目录内容的内部唯一标识;还用于存储目录内容的内部唯一标识和文件系统维护的相关目录属性信息;和
文件索引单元2021,用于根据文件索引数据块的全局唯一标识,获取文件系统维护的相关文件属性信息;还用于根据文件内容,生成文件内容的内部唯一标识;还用于存储文件内容的内部唯一标识和文件系统维护的相关文件属性信息。
文件模块203,用于存储文件内容的内部唯一标识与切分后的数据块标识的映射关系,进而获取文件内容的数据;和
目录模块204,用于存储目录内容的内部唯一标识与目录中多个目录索引块的映射关系,进而获取目录内容的数据。
实施例1.
为了更好的说明本发明的方法,假设一个目录的全路径名为/home/test/conf,在该目录下分别包含目录/home/test/conf/a、目录/home/test/conf/b、文件/home/test/conf/c.txt、文件/home/test/conf/test.txt。图1中描述了上述所属的目录/home/test/conf与目录/home/test/conf/a、目录/home/test/conf/b之间的层级关系,以及所属的目录/home/test/conf与文件/home/test/conf/c.txt、文件/home/test/conf/test.txt之间的层级关系。
其中,每一个目录都包含三部分,即目录映射块、目录索引块和目录数据;每一个文件包含三部分,即文件映射块、文件索引块和文件数据。
/home/test/conf目录映射块中包含着/home/test/conf目录索引块的唯一标识,/home/test/conf目录索引块中包含着/home/test/conf的目录内容的内部唯一标识、/home/test/conf目录数据中包含着/home/test/conf/a目录索引块、/home/test/conf/b目录索引块、/home/test/conf/c.txt文件索引块和/home/test/conf/test.txt文件索引块的信息。
/home/test/conf/a目录映射块中包含着/home/test/conf/a目录索引块的唯一标识,/home/test/conf/a目录索引块中包含着/home/test/conf/a的目录内容的内部唯一标识,/home/test/conf/a目录数据中包含着/home/test/conf/a的所有下级子目录索引块和子文件索引块的信息。
/home/test/conf/b目录映射块中包含着/home/test/conf/b目录索引块的唯一标识,/home/test/conf/b目录索引块中包含着/home/test/conf/b的目录内容的内部唯一标识,/home/test/conf/b目录数据中包含着/home/test/conf/b的所有下级子目录索引块和子文件索引块的信息。
/home/test/conf/c.txt文件映射块中包含着/home/test/conf/c.txt文件索引块的唯一标识,/home/test/conf/c.txt文件索引块中包含着/home/test/conf/c.txt文件内容的内部唯一标识。
/home/test/conf/test.txt文件映射块中包含着/home/test/conf/test.txt文件索引块的唯一标识,/home/test/conf/test.txt文件索引块中包含着/home/test/conf/test.txt文件内容的内部唯一标识。
下面结合结构图1和2,描述在/home/test/conf下写入test.txt文件引起的写入文件内容的数据和目录内容的数据的过程;在/home/test/conf下读取test.txt文件,引起的读取文件内容的数据的流程;以及读取/home/test/conf的目录内容的过程。
如图1和2所示,写入文件内容test.txt引起的写入文件数据和写入目录内容的数据的过程具体如下:
步骤3-1)根据test.txt文件内容生成/home/test/conf/test.txt文件内容的内部唯一标识,将该文件内容的内部唯一标识和文件系统维护的相关文件属性信息存入/home/test/conf/test.txt文件索引块,为/home/test/conf/test.txt文件索引块生成无语义的全局唯一标识,可选用UUID,将文件索引块的全局唯一标识写入/home/test/conf的目录数据中,将/home/test/conf/test.txt文件索引块的全局唯一标识和文件系统维护的文件的部分属性信息,存入/home/test/conf/test.txt文件映射块,并基于该文件全路径名/home/test/conf/test.txt,生成文件映射块的唯一访问标识;
其中,相关文件属性信息包括:文件索引数据块类型、文件索引数据块存储容量、文件名字、文件访问时间、文件修改时间、文件创建时间、文件所属用户名、文件所属组名、文件的权限、文件内容的唯一标识和该文件所在目录的索引块唯一标识。
部分属性信息包括:文件所属用户名、文件所属组名和文件的权限。
根据test.txt文件内容生成/home/test/conf/test.txt文件内容的内部唯一标识的具体过程为:
所述文件内容为包含层级关系的文件数据;
步骤3-1-1)按照切分规则,将test.txt文件数据切分生成多个数据块,每个数据块具有一个唯一标识;其中,对每个数据块中的数据内容经过哈希计算,得到每个数据块对应的唯一标识;
步骤3-1-2)采用TLV(Type Length Value)格式进行编码,将多个数据块对应的唯一标识及其容量组合成一个新的数据块;
步骤3-1-3)如果新的数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤3-1-5);
如果新的数据块的容量大于预先设定的数据块的最大容量时,则跳至步骤3-1-4);
步骤3-1-4)将该新的数据块按照切分规则再次切分成多个子数据块,每个子数据块通过子数据块的数据内容进行哈希计算形成唯一标识,再通过TLV格式,将多个子数据块对应的唯一标识及其容量组合成一个新的子数据块,如果新的子数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤3-1-5);
如果新的子数据块的容量大于预先设定的数据块的最大容量时,则对新的子数据块按照切分规则再次进行拆分,循环步骤3-1-4);
步骤3-1-5)将新的数据块通过该新的数据块的数据内容经过哈希计算,生成/home/test/conf/test.txt文件内容的内部唯一标识。
其中,所述基于文件的全路径名,生成文件映射块的唯一访问标识,具体为:通过对test.txt文件的全路径名/home/test/conf/test.txt,经过哈希计算,生成/home/test/conf/test.txt文件映射块的唯一访问标识。
步骤3-2)根据/home/test/conf下的目录内容生成/home/test/conf目录内容的内部唯一标识,将/home/test/conf目录内容的内部唯一标识和文件系统维护的相关目录属性信息存入/home/test/conf目录索引块,为该目录索引块生成无语义的全局唯一标识,可选用UUID,将目录索引块的全局唯一标识写入/home/test/conf的目录内容中,将/home/test/conf目录索引块的全局唯一标识和文件系统维护的目录的部分属性信息存入/home/test/conf目录映射块,并基于目录全路径名/home/test/conf,生成该目录映射块的唯一访问标识;
其中,所述相关目录属性信息包括:目录索引数据块类型、目录索引数据块存储容量、目录名字、目录访问时间、目录修改时间、目录创建时间、目录所属用户名、目录所属组名、目录的权限、目录内容的唯一标识和该目录上一级目录的索引块唯一标识。
部分属性信息包括:目录所属用户名、目录所属组名和目录的权限。
所述根据目录内容生成目录内容的内部唯一标识,具体为:
所述目录内容为包含层级关系的多个目录索引块;
步骤3-2-1)采用TLV(Type Length Value)格式进行编码,将添加test.txt后的/home/test/conf下级多个目录索引块对应的唯一标识及其容量组合成一个新的目录数据块;
步骤3-2-2)如果新的目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤3-2-4);
如果新的目录数据块的容量大于预先设定的数据块的最大容量时,则跳至步骤3-2-3);
步骤3-2-3)将该新的目录数据块按照切分规则切分成多个子目录数据块,每个子目录数据块通过子目录数据块的数据内容进行哈希计算形成唯一标识,再通过TLV格式,将多个子目录数据块对应的唯一标识及其容量组合成一个新的子目录数据块,如果新的子目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤3-2-4);
如果新的子目录数据块的容量大于预先设定的数据块的最大容量时,则对该新的子目录数据块按照切分规则再次进行切分,并循环步骤3-2-3);
步骤3-2-4)将新的目录数据块通过该新的目录数据块的数据内容经过哈希计算,生成目录内容的内部唯一标识。
其中,所述基于目录的全路径名/home/test/conf,生成/home/test/conf目录映射块的唯一访问标识,具体为:通过对目录的全路径名/home/test/conf,经过哈希计算,生成/home/test/conf目录映射块的唯一访问标识。
读取文件内容的数据和目录内容的数据的过程具体如下:
步骤4-1)基于文件全路径名/home/test/conf/test.txt生成的/home/test/conf/test.txt文件映射块的唯一访问标识,获取/home/test/conf/test.txt文件映射块中的/home/test/conf/test.txt文件索引块的全局唯一标识,并根据获取的/home/test/conf/test.txt文件索引块的全局唯一标识,获取/home/test/conf/test.txt文件内容的内部唯一标识,进而获取文件内容的数据;
具体地,
步骤4-1-1)通过对文件的全路径名/home/test/conf/test.txt,经过哈希计算,生成/home/test/conf/test.txt文件映射块的唯一访问标识;
步骤4-1-2)通过/home/test/conf/test.txt文件映射块的唯一访问标识获取/home/test/conf/test.txt文件映射块,从/home/test/conf/test.txt文件映射块中获取test.txt的权限、所属用户以及所属用户组,看是否有权限读,如果没有权限读,就返回无权限读;如果有权限读,进入步骤4-1-3);
步骤4-1-3)获取步骤4-1-2)中/home/test/conf/test.txt文件映射块中的test.txt文件索引块的全局唯一标识,通过该标识获取该/home/test/conf/test.txt文件索引块。
步骤4-1-4)通过/home/test/conf/test.txt文件索引块中的文件内容标识获取到一个数据块,从该数据块中读取TLV格式编码的多个数据块的标识和容量。
通过其中一个数据块标识获取对应的数据块,从获取到的数据块中,读取该数据块是否为文件的切分数据块,如果是,进入步骤4-1-6);如果不是,进入步骤4-1-5)
步骤4-1-5)通过多个数据块的所有标识,获取对应的所有的数据块,按顺序拼接成一个新的数据。从该新的数据中读取TLV格式编码的多个数据块的标识和容量,
再通过其中一个数据块标识,获取对应的数据块,从获取到的数据块中,读取该数据块是否为文件的切分数据块,如果是,进入步骤4-1-6);如果不是,重复步骤4-1-5)
步骤4-1-6)通过多个数据块的标识,获取到test.txt文件数据的所有切分数据块,将所有切分数据块按顺序拼接一个大的数据块,该数据块即为test.txt文件。
步骤4-2)基于目录全路径名/home/test/conf生成的/home/test/conf目录映射块的唯一访问标识,/home/test/conf目录映射块中的/home/test/conf目录索引数据块的全局唯一标识,并根据获取的/home/test/conf目录索引数据块的全局唯一标识,获取/home/test/conf目录内容的内部唯一标识,进而获取目录内容的数据。
具体地,
步骤4-1-1)通过对目录的全路径名/home/test/conf,经过哈希计算,生成/home/test/conf目录映射块的唯一访问标识;
步骤4-1-2)通过/home/test/conf目录映射块的唯一访问标识获取/home/test/conf目录映射块,从/home/test/conf目录映射块中获取/home/test/conf的权限、所属用户以及所属用户组,看是否有权限读,如果没有权限读,就返回无权限读;如果有权限读,进入步骤4-1-3);
步骤4-1-3)获取步骤4-1-2)中目录映射块中的/home/test/conf目录索引数据块的全局唯一标识,通过该标识获取该目录索引数据块。
步骤4-1-4)通过/home/test/conf目录索引数据块中的目录内容标识获取到一个数据块,从该数据块中读取TLV格式编码的多个数据块的标识和容量。
通过其中一个数据块标识,获取对应的数据块,从获取到的数据块中,读取该数据块是否为索引数据块,如果是,进入步骤4-1-6);如果不是,进入步骤4-1-5)
步骤4-1-5)通过多个数据块的所有标识,获取对应的所有的数据块,按顺序拼接成一个新的数据。从该新的数据中,读取TLV格式编码的多个数据块的标识和容量,
通过其中一个数据块标识,获取对应的数据块,从获取到的数据块中,读取该数据块是否为文件的切分数据块,如果是,进入步骤4-1-6);如果不是,重复步骤4-1-5)
具体地,
步骤4-1-6)通过多个数据块的标识,获取到/home/test/conf下的所有子目录和子文件的索引块(包括/home/test/conf/a目录索引块、/home/test/conf/b目录索引块、/home/test/conf/c.txt文件索引块、/home/test/conf/test.txt文件索引块),从所有索引块中可以获取/home/test/conf下级的所有目录信息。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (10)

1.一种分布式文件系统的元数据组织方法,该方法包括:
写入时,根据文件内容生成文件内容的内部唯一标识,将文件内容的内部唯一标识和文件系统维护的相关文件属性信息存入文件索引数据块,为文件索引数据块生成无语义的全局唯一标识,将文件索引数据块的全局唯一标识写入文件所在目录的目录内容中,将文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息,存入文件映射块,并基于文件全路径名,生成文件映射块的唯一访问标识;
根据目录内容生成目录内容的内部唯一标识,将目录内容的内部唯一标识和文件系统维护的相关目录属性信息存入目录索引数据块,为目录索引数据块生成无语义的全局唯一标识,将目录索引数据块的全局唯一标识写入当前目录的目录内容中,将目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息,存入目录映射块,并基于目录全路径名,生成目录映射块的唯一访问标识;
读取时,基于文件全路径名生成的文件映射块的唯一访问标识,获取文件映射块中的文件索引数据块的全局唯一标识,并根据获取的文件索引数据块的全局唯一标识,获取文件内容的内部唯一标识,进而获取文件内容的数据;
基于目录全路径名生成的目录映射块的唯一访问标识,获取目录映射块中的目录索引数据块的全局唯一标识,并根据获取的目录索引数据块的全局唯一标识,获取目录内容的内部唯一标识,进而获取目录内容的数据。
2.根据权利要求1所述的分布式文件系统的元数据组织方法,其特征在于,所述根据文件内容生成文件内容的内部唯一标识,具体为:
所述文件内容为包含层级关系的文件数据;
步骤1-1)按照切分规则,将文件数据切分生成多个数据块,每个数据块具有一个唯一标识;其中,对每个数据块中的数据内容经过哈希计算,得到每个数据块对应的唯一标识;
步骤1-2)采用TLV格式进行编码,将多个数据块对应的唯一标识及其容量组合成一个新的数据块;
步骤1-3)如果新的数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤1-5);
如果新的数据块的容量大于预先设定的数据块的最大容量时,则跳至步骤1-4);
步骤1-4)将该新的数据块按照切分规则再次切分成多个子数据块,每个子数据块通过子数据块的数据内容进行哈希计算形成唯一标识,再通过TLV格式,将多个子数据块对应的唯一标识及其容量组合成一个新的子数据块,如果新的子数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤1-5);
如果新的子数据块的容量大于预先设定的数据块的最大容量时,则对新的子数据块按照切分规则再次进行拆分,循环步骤1-4);
步骤1-5)将新的数据块通过该新的数据块的数据内容经过哈希计算,生成文件内容的内部唯一标识。
3.根据权利要求1所述的分布式文件系统的元数据组织方法,其特征在于,所述根据目录内容生成目录内容的内部唯一标识,具体为:
所述目录内容为包含层级关系的多个目录索引块;
步骤2-1)采用TLV格式进行编码,将多个目录索引块对应的唯一标识及其容量组合成一个新的目录数据块;
步骤2-2)如果新的目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤2-4);
如果新的目录数据块的容量大于预先设定的数据块的最大容量时,则跳至步骤2-3);
步骤2-3)将该新的目录数据块按照切分规则切分成多个子目录数据块,每个子目录数据块通过子目录数据块的数据内容进行哈希计算形成唯一标识,再通过TLV格式,将多个子目录数据块对应的唯一标识及其容量组合成一个新的子目录数据块,如果新的子目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤2-4);
如果新的子目录数据块的容量大于预先设定的数据块的最大容量时,则对该新的子目录数据块按照切分规则再次进行切分,并循环步骤2-3);
步骤2-4)将新的目录数据块通过该新的目录数据块的数据内容经过哈希计算,生成目录内容的内部唯一标识。
4.根据权利要求1所述的分布式文件系统的元数据组织方法,其特征在于,所述文件系统维护的相关文件属性信息包括:文件索引数据块类型、文件索引数据块存储容量、文件名字、文件访问时间、文件修改时间、文件创建时间、文件所属用户名、文件所属组名、文件的权限、文件内容的唯一标识和该文件所在目录的索引块唯一标识;
所述文件系统维护的文件的部分属性信息包括:文件所属用户名、文件所属组名和文件的权限。
5.根据权利要求1所述的分布式文件系统的元数据组织方法,其特征在于,所述文件系统维护的相关目录属性信息包括:目录索引数据块类型、目录索引数据块存储容量、目录名字、目录访问时间、目录修改时间、目录创建时间、目录所属用户名、目录所属组名、目录的权限、目录内容的唯一标识和该目录上一级目录的索引块唯一标识;
所述文件系统维护的目录的部分属性信息包括:目录所属用户名、目录所属组名和目录的权限。
6.根据权利要求1所述的分布式文件系统的元数据组织方法,其特征在于,所述基于文件的全路径名,生成文件映射块的唯一访问标识,具体为:通过对文件的全路径名,经过哈希计算,生成文件映射块的唯一访问标识。
7.根据权利要求1所述的分布式文件系统的元数据组织方法,其特征在于,所述基于目录的全路径名,生成目录映射块的唯一访问标识,具体为:通过对目录的全路径名,经过哈希计算,生成目录映射块的唯一访问标识。
8.一种分布式文件系统的元数据组织装置,其特征在于,该装置包括:
映射模块(201),用于根据文件的全路径名,获取带有文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息的文件映射块;还用于根据目录的全路径名,获取带有目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息的目录映射块;
索引模块(202),用于获取文件的相关属性信息以及存储文件内容的内部唯一标识;还用于获取目录的相关属性信息以及存储目录内容的内部唯一标识;
文件模块(203),用于存储文件内容的内部唯一标识与切分后的数据块标识的映射关系,进而获取文件内容的数据;
目录模块(204),用于存储目录内容的内部唯一标识与目录中多个目录索引块的映射关系,进而获取目录内容的数据。
9.根据权利要求8所述的分布式文件系统的元数据组织装置,其特征在于,所述映射模块(201)包括:
目录映射单元(2012),用于根据目录的全路径名,获取带有目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息的目录映射块;还用于存储目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息;和
文件映射单元(2011),用于根据文件的全路径名,获取带有文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息的文件映射块;还用于存储文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息。
10.根据权利要求8所述的分布式文件系统的元数据组织装置,其特征在于,所述索引模块(202)包括:
目录索引单元(2022),用于根据目录索引数据块的全局唯一标识,获取文件系统维护的相关目录属性信息;还用于根据目录内容,生成目录内容的内部唯一标识;还用于存储目录内容的内部唯一标识和文件系统维护的相关目录属性信息;和
文件索引单元(2021),用于根据文件索引数据块的全局唯一标识,获取文件系统维护的相关文件属性信息;还用于根据文件内容,生成文件内容的内部唯一标识;还用于存储文件内容的内部唯一标识和文件系统维护的相关文件属性信息。
CN202010685428.XA 2020-07-16 2020-07-16 一种分布式文件系统的元数据组织方法及装置 Pending CN113946544A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010685428.XA CN113946544A (zh) 2020-07-16 2020-07-16 一种分布式文件系统的元数据组织方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010685428.XA CN113946544A (zh) 2020-07-16 2020-07-16 一种分布式文件系统的元数据组织方法及装置

Publications (1)

Publication Number Publication Date
CN113946544A true CN113946544A (zh) 2022-01-18

Family

ID=79326597

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010685428.XA Pending CN113946544A (zh) 2020-07-16 2020-07-16 一种分布式文件系统的元数据组织方法及装置

Country Status (1)

Country Link
CN (1) CN113946544A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116627973A (zh) * 2023-05-25 2023-08-22 成都融见软件科技有限公司 一种数据定位系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116627973A (zh) * 2023-05-25 2023-08-22 成都融见软件科技有限公司 一种数据定位系统
CN116627973B (zh) * 2023-05-25 2024-02-09 成都融见软件科技有限公司 一种数据定位系统

Similar Documents

Publication Publication Date Title
CN110019218B (zh) 数据存储与查询方法及设备
CN103229173B (zh) 元数据管理方法及系统
CN107491487B (zh) 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质
US8472289B2 (en) Static TOC indexing system and method
JP2001028009A (ja) データ値の集合の形成、記憶及び使用のための方法とシステム
CN104899297A (zh) 具有存储感知的混合索引结构
CN109284273B (zh) 一种采用后缀数组索引的海量小文件查询方法及系统
CN103870588A (zh) 一种在数据库中使用的方法及装置
CN112416880A (zh) 一种基于实时归并的海量小文件存储性能优化方法及装置
Min et al. A system framework for map air update navigation service
CN114691721A (zh) 图数据的查询方法、装置、电子设备及存储介质
CN111680489A (zh) 目标文本的匹配方法和装置、存储介质及电子设备
CN112597345A (zh) 一种实验室数据自动采集与匹配方法
CN111221813A (zh) 数据库索引以及数据库查询的处理方法、装置及设备
CN104021223A (zh) 一种集群数据库测点的访问方法及装置
CN101226552A (zh) 一种利用多维结构树构成的目录管理海量信息的方法
CN113946544A (zh) 一种分布式文件系统的元数据组织方法及装置
CN111694520B (zh) 一种大数据存储优化的方法及装置
CN110889424B (zh) 向量索引建立方法及装置和向量检索方法及装置
CN104376000A (zh) 确定网页属性的方法及装置
CN113821630A (zh) 一种数据聚类的方法和装置
US20110072117A1 (en) Generating a Synthetic Table of Contents for a Volume by Using Statistical Analysis
CN115328859A (zh) 一种元数据访问方法、装置、设备及介质
US20110307492A1 (en) Multi-region cluster representation of tables of contents for a volume
CN113779025A (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