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

文档序号:28527924发布日期:2022-01-18 19:47阅读:117来源:国知局
一种分布式文件系统的元数据组织方法及装置与流程

1.本发明属于数据处理技术领域,具体地说,涉及一种分布式文件系统的元数据组织方法及装置。


背景技术:

2.近年来,互联网行业高速发展,物联网等新兴产业也普及开来。各种形式的内容呈现快速上升的趋势,各行各业的数据量越来越大。有海量重要的数据和文件需要保存。此外,大数据的任务分析等需要快速的从存储单元获取数据。因此需要大量的资源来存储和管理这些数据。那么,高效的元数据组织及管理是必不可少的。分布式文件系统凭借其内在的通用性和简洁性已经成为了解决海量数据存储及管理的重要途径。
3.分布式文件系统的元数据是描述该系统结构特征的数据,如大小、状态信息以及针对每个文件或目录的访问权限,拥有者、时间等,还有包括目录与子目录/子文件的映射关系、文件和文件数据块的映射关系等。对分布式文件系统的操作,均要涉及对元数据的操作,分布式文件系统中的大部分访问也都是基于元数据进行的。因此,提出一种分布式文件系统的元数据组织方法是十分有意义的。
4.目前,分布式文件系统主要分为两种方式,一是将所有元数据通过元数据服务器单独存放,通过内存存放整个文件目录结构,当文件、目录过多时,会造成存储过大。而且获取文件及目录信息时,需要从元数据服务器获取,大量的访问会使元数据服务器形成单点瓶颈,造成数据获取效率较低。二是通过类hash算法,分布式文件系统通过文件、目录的名字将切分的数据块映射到存储模块,进而完成对每个数据块的存储和获取,同时通过每级目录数据中存储下级目录或文件的信息,形成级联关系。当获取文件或目录信息时,需要从根路径一级一级的逐级向下查找,因此,为了获取文件或目录信息,仍然需要遍历多级目录,有较大开销。


技术实现要素:

5.为解决现有技术存在上述缺陷,本发明提出了一种分布式文件系统的元数据组织方法,通过将所有数据和元数据均以数据块的形式存于存储节点,将大的数据经过过分形成小的数据块,目的是减小元数据集中存储方式的单点瓶颈,同时通过使目录、文件全路径的哈希作为唯一标识获取文件、目录信息。相比一些分布式文件系统通过每级目录索引数据块中存储下级目录或文件的信息,形成级联关系,能够避免在获取文件及其对应的目录信息时多级遍历目录从而造成开销大的问题。
6.本发明提供的一种分布式文件系统的元数据组织方法,该方法包括:
7.写入时,根据文件内容生成文件内容的内部唯一标识,将文件内容的内部唯一标识和文件系统维护的相关文件属性信息存入文件索引数据块,为文件索引数据块生成无语义的全局唯一标识,将文件索引数据块的全局唯一标识写入文件所在目录的目录内容中,将文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息,存入文件映射
3);
25.步骤2-3)将该新的目录数据块按照切分规则切分成多个子目录数据块,每个子目录数据块通过子目录数据块的数据内容进行哈希计算形成唯一标识,再通过tlv格式,将多个子目录数据块对应的唯一标识及其容量组合成一个新的子目录数据块,如果新的子目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤2-4);
26.如果新的子目录数据块的容量大于预先设定的数据块的最大容量时,则对该新的子目录数据块按照切分规则再次进行切分,并循环步骤2-3);
27.步骤2-4)将新的目录数据块通过该新的目录数据块的数据内容经过哈希计算,生成目录内容的内部唯一标识。
28.作为上述技术方案的改进之一,所述文件系统维护的相关文件属性信息包括:文件索引数据块类型、文件索引数据块存储容量、文件名字、文件访问时间、文件修改时间、文件创建时间、文件所属用户名、文件所属组名、文件的权限、文件内容的唯一标识和该文件所在目录的索引块唯一标识;
29.所述文件系统维护的文件的部分属性信息包括:文件所属用户名、文件所属组名和文件的权限。
30.作为上述技术方案的改进之一,所述文件系统维护的相关目录属性信息包括:目录索引数据块类型、目录索引数据块存储容量、目录名字、目录访问时间、目录修改时间、目录创建时间、目录所属用户名、目录所属组名、目录的权限、目录内容的唯一标识和该目录上一级目录的索引块唯一标识;
31.所述文件系统维护的目录的部分属性信息包括:目录所属用户名、目录所属组名和目录的权限。
32.作为上述技术方案的改进之一,所述基于文件的全路径名,生成文件映射块的唯一访问标识,具体为:通过对文件的全路径名,经过哈希计算,生成文件映射块的唯一访问标识。
33.作为上述技术方案的改进之一,所述基于目录的全路径名,生成目录映射块的唯一访问标识,具体为:通过对目录的全路径名,经过哈希计算,生成目录映射块的唯一访问标识。
34.本发明还提供了一种分布式文件系统的元数据组织装置,该装置包括:
35.映射模块,用于根据文件的全路径名,获取带有文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息的文件映射块;还用于根据目录的全路径名,获取带有目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息的目录映射块;
36.索引模块,用于获取文件的相关属性信息以及存储文件内容的内部唯一标识;还用于获取目录的相关属性信息以及存储目录内容的内部唯一标识;
37.文件模块,用于存储文件内容的内部唯一标识与切分后的数据块标识的映射关系,进而获取文件内容的数据;
38.目录模块,用于存储目录内容的内部唯一标识与目录中多个目录索引块的映射关系,进而获取目录内容的数据。
39.作为上述技术方案的改进之一,所述映射模块包括:
40.目录映射单元,用于根据目录的全路径名,获取带有目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息的目录映射块;还用于存储目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息;和
41.文件映射单元,用于根据文件的全路径名,获取带有文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息的文件映射块;还用于存储文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息。
42.作为上述技术方案的改进之一,所述索引模块包括:
43.目录索引单元,用于根据目录索引数据块的全局唯一标识,获取文件系统维护的相关目录属性信息;还用于根据目录内容,生成目录内容的内部唯一标识;还用于存储目录内容的内部唯一标识和文件系统维护的相关目录属性信息;和
44.文件索引单元,用于根据文件索引数据块的全局唯一标识,获取文件系统维护的相关文件属性信息;还用于根据文件内容,生成文件内容的内部唯一标识;还用于存储文件内容的内部唯一标识和文件系统维护的相关文件属性信息。
45.本发明与现有技术相比的有益效果是:
46.本发明的方法,将大的文件数据和目录内容经过切分形成小的数据块,目的是减小元数据集中存储方式的单点瓶颈,同时通过使目录全路径名和文件全路径名的哈希,作为唯一标识,获取文件内容的数据和目录内容的数据。相比现有的分布式文件系统,通过每一级目录索引数据块中存储下级目录或文件的信息,形成级联关系,能够避免在获取文件内容的数据及其对应的目录内容的数据时,多级遍历目录,从而造成开销大的问题,同时文件内容的数据与目录内容的数据均采用哈希摘要命名的方式,保证了数据的正确性。
附图说明
47.图1是本发明的一种分布式文件系统的元数据组织方法的一个具体实施例的层级关系结构示意图;
48.图2是图1的本发明的一种分布式文件系统的元数据组织方法的一个具体实施例的详细层级关系结构图;
49.图3是本发明的一种分布式文件系统的元数据组织装置的结构示意图。
50.附图标记:
51.201、映射模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
202、索引模块
52.203、文件模块
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
204、目录模块
53.2011、文件映射单元
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
2012、目录映射单元
54.2021、文件索引单元
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
2022、目录索引单元
具体实施方式
55.现结合附图对本发明作进一步的描述。
56.本发明提供了一种分布式文件系统的元数据组织方法,该方法包括:
57.写入时,根据文件内容生成文件内容的内部唯一标识;将文件内容的内部唯一标识和文件系统维护的相关文件属性信息存入文件索引数据块,为文件索引数据块生成无语义的全局唯一标识,将文件索引数据块的全局唯一标识写入文件所在目录的目录内容中,
将文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息,存入文件映射块,并基于文件全路径名,生成文件映射块的唯一访问标识;
58.其中,根据文件内容生成文件内容的内部唯一标识的具体过程为:
59.所述文件内容为包含层级关系的文件数据;
60.步骤1-1)按照切分规则,将文件数据切分生成多个数据块,每个数据块具有一个唯一标识;其中,对每个数据块中的数据内容经过哈希计算,得到每个数据块对应的唯一标识;
61.步骤1-2)采用tlv(type length value)格式进行编码,将多个数据块对应的唯一标识及其容量组合成一个新的数据块;
62.步骤1-3)如果新的数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤1-5);
63.如果新的数据块的容量大于预先设定的数据块的最大容量时,则跳至步骤1-4);
64.步骤1-4)将该新的数据块按照切分规则再次切分成多个子数据块,每个子数据块通过子数据块的数据内容进行哈希计算形成唯一标识,再通过tlv格式,将多个子数据块对应的唯一标识及其容量组合成一个新的子数据块,如果新的子数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤1-5);
65.如果新的子数据块的容量大于预先设定的数据块的最大容量时,则对新的子数据块按照切分规则再次进行拆分,循环步骤1-4);
66.步骤1-5)将新的数据块通过该新的数据块的数据内容经过哈希计算,生成文件内容的内部唯一标识。
67.其中,所述文件系统维护的相关文件属性信息包括:文件索引数据块类型、文件索引数据块存储容量、文件名字、文件访问时间、文件修改时间、文件创建时间、文件所属用户名、文件所属组名、文件的权限、文件内容的唯一标识和该文件所在目录的索引块唯一标识;
68.所述文件系统维护的文件的部分属性信息包括:文件所属用户名、文件所属组名和文件的权限。
69.根据目录内容生成目录内容的内部唯一标识,将目录内容的内部唯一标识和文件系统维护的相关目录属性信息存入目录索引数据块,为目录索引数据块生成无语义的全局唯一标识,将目录索引数据块的全局唯一标识写入当前目录的目录内容中,将目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息,存入目录映射块,并基于目录全路径名,生成目录映射块的唯一访问标识;
70.所述根据目录内容生成目录内容的内部唯一标识,具体为:
71.所述目录内容为包含层级关系的多个目录索引块;
72.步骤2-1)采用tlv(type length value)格式进行编码,将多个目录索引块对应的唯一标识及其容量组合成一个新的目录数据块;
73.步骤2-2)如果新的目录数据块的容量小于或等于预先设定的目录数据块的最大容量时,则跳至步骤2-4);
74.如果新的目录数据块的容量大于预先设定的目录数据块的最大容量时,则跳至步骤2-3);
75.步骤2-3)将该新的目录数据块按照切分规则切分成多个子目录数据块,每个子目录数据块通过子目录数据块的数据内容进行哈希计算形成唯一标识,再通过tlv格式,将多个子目录数据块对应的唯一标识及其容量组合成一个新的子目录数据块,如果新的子目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤2-4);
76.如果新的子目录数据块的容量大于预先设定的数据块的最大容量时,则对该新的子目录数据块按照切分规则再次进行切分,并循环步骤2-3);
77.步骤2-4)将新的目录数据块通过该新的目录数据块的数据内容经过哈希计算,生成目录内容的内部唯一标识。
78.其中,所述文件系统维护的相关目录属性信息包括:目录索引数据块类型、目录索引数据块存储容量、目录名字、目录访问时间、目录修改时间、目录创建时间、目录所属用户名、目录所属组名、目录的权限、目录内容的唯一标识和该目录上一级目录的索引块唯一标识;
79.所述文件系统维护的目录的部分属性信息包括:目录所属用户名、目录所属组名和目录的权限。
80.其中,所述基于文件的全路径名,生成文件映射块的唯一访问标识,具体为:通过对文件的全路径名,经过哈希计算,生成文件映射块的唯一访问标识。
81.其中,所述基于目录的全路径名,生成目录映射块的唯一访问标识,具体为:通过对目录的全路径名,经过哈希计算,生成目录映射块的唯一访问标识。
82.读取时,基于文件全路径名生成的文件映射块的唯一访问标识,获取文件映射块中的文件索引数据块的全局唯一标识,并根据获取的文件索引数据块的全局唯一标识,获取文件内容的内部唯一标识,进而获取文件内容的数据;
83.基于目录全路径名生成的目录映射块的唯一访问标识,获取目录映射块中的目录索引数据块的全局唯一标识,并根据获取的目录索引数据块的全局唯一标识,获取目录内容的内部唯一标识,进而获取目录内容的数据。
84.所述文件的内部唯一标识用于获取文件内容的数据,并且用于文件获取后的数据校验以及数据块去重。
85.所述目录的内部唯一标识用于获取目录内容的数据,并且用于目录获取后的数据校验以及数据块去重。
86.所述无语义的全局唯一标识,可选用uuid,用于防止内容修改引起的上层多级目录索引数据块、包含层级关系的目录数据的重新生成。并且用于获取索引数据块进而获取文件和目录的部分属性信息以及文件和目录的内部唯一标识。
87.所述文件映射块的唯一访问标识需要满足与文件全路径的唯一对应关系,且可通过文件全路径计算得到该唯一标识。该唯一标识可通过文件全路径经哈希计算获得,该唯一标识用于根据文件全路径直接获取文件的部分属性信息以及存储文件的索引数据块唯一标识。
88.所述目录映射块的唯一访问标识需要满足与目录全路径的唯一对应关系,且可通过目录全路径计算得到该唯一标识,该唯一标识可通过目录全路径经哈希计算获得,该唯一标识用于根据目录全路径直接获取目录的部分属性信息以及存储目录的索引数据块唯一标识。
89.如图3所示,本发明还提供了一种分布式文件系统的元数据组织装置,该装置包括:
90.映射模块201,用于根据文件的全路径名,获取带有文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息的文件映射块;还用于根据目录的全路径名,获取带有目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息的目录映射块;
91.其中,所述映射模块201包括:
92.目录映射单元2012,用于根据目录的全路径名,获取带有目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息的目录映射块;还用于存储目录索引数据块的全局唯一标识和文件系统维护的目录的部分属性信息;和
93.文件映射单元2011,用于根据文件的全路径名,获取带有文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息的文件映射块;还用于存储文件索引数据块的全局唯一标识和文件系统维护的文件的部分属性信息。
94.索引模块202,用于获取文件的相关属性信息以及存储文件内容的内部唯一标识;还用于获取目录的相关属性信息以及存储目录内容的内部唯一标识;
95.其中,所述索引模块202包括:
96.目录索引单元2022,用于根据目录索引数据块的全局唯一标识,获取文件系统维护的相关目录属性信息;还用于根据目录内容,生成目录内容的内部唯一标识;还用于存储目录内容的内部唯一标识和文件系统维护的相关目录属性信息;和
97.文件索引单元2021,用于根据文件索引数据块的全局唯一标识,获取文件系统维护的相关文件属性信息;还用于根据文件内容,生成文件内容的内部唯一标识;还用于存储文件内容的内部唯一标识和文件系统维护的相关文件属性信息。
98.文件模块203,用于存储文件内容的内部唯一标识与切分后的数据块标识的映射关系,进而获取文件内容的数据;和
99.目录模块204,用于存储目录内容的内部唯一标识与目录中多个目录索引块的映射关系,进而获取目录内容的数据。
100.实施例1.
101.为了更好的说明本发明的方法,假设一个目录的全路径名为/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之间的层级关系。
102.其中,每一个目录都包含三部分,即目录映射块、目录索引块和目录数据;每一个文件包含三部分,即文件映射块、文件索引块和文件数据。
103./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文件索引块
的信息。
104./home/test/conf/a目录映射块中包含着/home/test/conf/a目录索引块的唯一标识,/home/test/conf/a目录索引块中包含着/home/test/conf/a的目录内容的内部唯一标识,/home/test/conf/a目录数据中包含着/home/test/conf/a的所有下级子目录索引块和子文件索引块的信息。
105./home/test/conf/b目录映射块中包含着/home/test/conf/b目录索引块的唯一标识,/home/test/conf/b目录索引块中包含着/home/test/conf/b的目录内容的内部唯一标识,/home/test/conf/b目录数据中包含着/home/test/conf/b的所有下级子目录索引块和子文件索引块的信息。
106./home/test/conf/c.txt文件映射块中包含着/home/test/conf/c.txt文件索引块的唯一标识,/home/test/conf/c.txt文件索引块中包含着/home/test/conf/c.txt文件内容的内部唯一标识。
107./home/test/conf/test.txt文件映射块中包含着/home/test/conf/test.txt文件索引块的唯一标识,/home/test/conf/test.txt文件索引块中包含着/home/test/conf/test.txt文件内容的内部唯一标识。
108.下面结合结构图1和2,描述在/home/test/conf下写入test.txt文件引起的写入文件内容的数据和目录内容的数据的过程;在/home/test/conf下读取test.txt文件,引起的读取文件内容的数据的流程;以及读取/home/test/conf的目录内容的过程。
109.如图1和2所示,写入文件内容test.txt引起的写入文件数据和写入目录内容的数据的过程具体如下:
110.步骤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,生成文件映射块的唯一访问标识;
111.其中,相关文件属性信息包括:文件索引数据块类型、文件索引数据块存储容量、文件名字、文件访问时间、文件修改时间、文件创建时间、文件所属用户名、文件所属组名、文件的权限、文件内容的唯一标识和该文件所在目录的索引块唯一标识。
112.部分属性信息包括:文件所属用户名、文件所属组名和文件的权限。
113.根据test.txt文件内容生成/home/test/conf/test.txt文件内容的内部唯一标识的具体过程为:
114.所述文件内容为包含层级关系的文件数据;
115.步骤3-1-1)按照切分规则,将test.txt文件数据切分生成多个数据块,每个数据块具有一个唯一标识;其中,对每个数据块中的数据内容经过哈希计算,得到每个数据块对应的唯一标识;
116.步骤3-1-2)采用tlv(type length value)格式进行编码,将多个数据块对应的唯一标识及其容量组合成一个新的数据块;
117.步骤3-1-3)如果新的数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤3-1-5);
118.如果新的数据块的容量大于预先设定的数据块的最大容量时,则跳至步骤3-1-4);
119.步骤3-1-4)将该新的数据块按照切分规则再次切分成多个子数据块,每个子数据块通过子数据块的数据内容进行哈希计算形成唯一标识,再通过tlv格式,将多个子数据块对应的唯一标识及其容量组合成一个新的子数据块,如果新的子数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤3-1-5);
120.如果新的子数据块的容量大于预先设定的数据块的最大容量时,则对新的子数据块按照切分规则再次进行拆分,循环步骤3-1-4);
121.步骤3-1-5)将新的数据块通过该新的数据块的数据内容经过哈希计算,生成/home/test/conf/test.txt文件内容的内部唯一标识。
122.其中,所述基于文件的全路径名,生成文件映射块的唯一访问标识,具体为:通过对test.txt文件的全路径名/home/test/conf/test.txt,经过哈希计算,生成/home/test/conf/test.txt文件映射块的唯一访问标识。
123.步骤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,生成该目录映射块的唯一访问标识;
124.其中,所述相关目录属性信息包括:目录索引数据块类型、目录索引数据块存储容量、目录名字、目录访问时间、目录修改时间、目录创建时间、目录所属用户名、目录所属组名、目录的权限、目录内容的唯一标识和该目录上一级目录的索引块唯一标识。
125.部分属性信息包括:目录所属用户名、目录所属组名和目录的权限。
126.所述根据目录内容生成目录内容的内部唯一标识,具体为:
127.所述目录内容为包含层级关系的多个目录索引块;
128.步骤3-2-1)采用tlv(type length value)格式进行编码,将添加test.txt后的/home/test/conf下级多个目录索引块对应的唯一标识及其容量组合成一个新的目录数据块;
129.步骤3-2-2)如果新的目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤3-2-4);
130.如果新的目录数据块的容量大于预先设定的数据块的最大容量时,则跳至步骤3-2-3);
131.步骤3-2-3)将该新的目录数据块按照切分规则切分成多个子目录数据块,每个子目录数据块通过子目录数据块的数据内容进行哈希计算形成唯一标识,再通过tlv格式,将多个子目录数据块对应的唯一标识及其容量组合成一个新的子目录数据块,如果新的子目录数据块的容量小于或等于预先设定的数据块的最大容量时,则跳至步骤3-2-4);
132.如果新的子目录数据块的容量大于预先设定的数据块的最大容量时,则对该新的子目录数据块按照切分规则再次进行切分,并循环步骤3-2-3);
133.步骤3-2-4)将新的目录数据块通过该新的目录数据块的数据内容经过哈希计算,生成目录内容的内部唯一标识。
134.其中,所述基于目录的全路径名/home/test/conf,生成/home/test/conf目录映射块的唯一访问标识,具体为:通过对目录的全路径名/home/test/conf,经过哈希计算,生成/home/test/conf目录映射块的唯一访问标识。
135.读取文件内容的数据和目录内容的数据的过程具体如下:
136.步骤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文件内容的内部唯一标识,进而获取文件内容的数据;
137.具体地,
138.步骤4-1-1)通过对文件的全路径名/home/test/conf/test.txt,经过哈希计算,生成/home/test/conf/test.txt文件映射块的唯一访问标识;
139.步骤4-1-2)通过/home/test/conf/test.txt文件映射块的唯一访问标识获取/home/test/conf/test.txt文件映射块,从/home/test/conf/test.txt文件映射块中获取test.txt的权限、所属用户以及所属用户组,看是否有权限读,如果没有权限读,就返回无权限读;如果有权限读,进入步骤4-1-3);
140.步骤4-1-3)获取步骤4-1-2)中/home/test/conf/test.txt文件映射块中的test.txt文件索引块的全局唯一标识,通过该标识获取该/home/test/conf/test.txt文件索引块。
141.步骤4-1-4)通过/home/test/conf/test.txt文件索引块中的文件内容标识获取到一个数据块,从该数据块中读取tlv格式编码的多个数据块的标识和容量。
142.通过其中一个数据块标识获取对应的数据块,从获取到的数据块中,读取该数据块是否为文件的切分数据块,如果是,进入步骤4-1-6);如果不是,进入步骤4-1-5)
143.步骤4-1-5)通过多个数据块的所有标识,获取对应的所有的数据块,按顺序拼接成一个新的数据。从该新的数据中读取tlv格式编码的多个数据块的标识和容量,
144.再通过其中一个数据块标识,获取对应的数据块,从获取到的数据块中,读取该数据块是否为文件的切分数据块,如果是,进入步骤4-1-6);如果不是,重复步骤4-1-5)
145.步骤4-1-6)通过多个数据块的标识,获取到test.txt文件数据的所有切分数据块,将所有切分数据块按顺序拼接一个大的数据块,该数据块即为test.txt文件。
146.步骤4-2)基于目录全路径名/home/test/conf生成的/home/test/conf目录映射块的唯一访问标识,/home/test/conf目录映射块中的/home/test/conf目录索引数据块的全局唯一标识,并根据获取的/home/test/conf目录索引数据块的全局唯一标识,获取/home/test/conf目录内容的内部唯一标识,进而获取目录内容的数据。
147.具体地,
148.步骤4-1-1)通过对目录的全路径名/home/test/conf,经过哈希计算,生成/home/
test/conf目录映射块的唯一访问标识;
149.步骤4-1-2)通过/home/test/conf目录映射块的唯一访问标识获取/home/test/conf目录映射块,从/home/test/conf目录映射块中获取/home/test/conf的权限、所属用户以及所属用户组,看是否有权限读,如果没有权限读,就返回无权限读;如果有权限读,进入步骤4-1-3);
150.步骤4-1-3)获取步骤4-1-2)中目录映射块中的/home/test/conf目录索引数据块的全局唯一标识,通过该标识获取该目录索引数据块。
151.步骤4-1-4)通过/home/test/conf目录索引数据块中的目录内容标识获取到一个数据块,从该数据块中读取tlv格式编码的多个数据块的标识和容量。
152.通过其中一个数据块标识,获取对应的数据块,从获取到的数据块中,读取该数据块是否为索引数据块,如果是,进入步骤4-1-6);如果不是,进入步骤4-1-5)
153.步骤4-1-5)通过多个数据块的所有标识,获取对应的所有的数据块,按顺序拼接成一个新的数据。从该新的数据中,读取tlv格式编码的多个数据块的标识和容量,
154.通过其中一个数据块标识,获取对应的数据块,从获取到的数据块中,读取该数据块是否为文件的切分数据块,如果是,进入步骤4-1-6);如果不是,重复步骤4-1-5)
155.具体地,
156.步骤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下级的所有目录信息。
157.最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1