发明内容
本发明的目的在于提供一种可节约元数据服务器的存储以及传输数据的资源,又可有效的保证每个文件的标识唯一性的全局文件标识生成方法、生成装置及相应的分布式文件系统;解决了现有的分布式文件系统的全局文件标识容量太大导致存储及传输该全局文件标识成本过大的技术问题。
为解决上述问题,本发明提供的技术方案如下:
本发明涉及一种分布式文件系统的全局文件标识生成方法,其中,所述分布式文件系统包括至少一个主元数据服务器以及多个元数据服务器,所述元数据服务器用于存储及读写文件,所述主元数据服务器用于根据所述文件的元信息生成相应的全局文件标识,所述全局文件标识生成方法包括步骤:
接收到文件创建请求时,根据被创建文件所在元数据服务器的编号生成所述全局文件标识的服务器编号字段;以及
根据所述全局文件标识在所述主元数据服务器中的创建编号生成所述全局文件标识的文件顺序字段;
不同的所述全局文件标识在所述主元数据服务器中的创建编号不同。
在本发明所述的分布式文件系统的全局文件标识生成方法中,所述文件顺序字段根据所述全局文件标识的实际创建时间严格递增。
在本发明所述的分布式文件系统的全局文件标识生成方法中,所述根据所述全局文件标识在所述主元数据服务器中的创建编号生成所述全局文件标识的文件顺序字段的步骤包括:
根据所述全局文件标识在所述主元数据服务器中的创建时间生成所述文件顺序字段的创建时间子字段;以及
根据所述创建时间子字段相同的所述全局文件标识的创建编号生成所述文件顺序字段的创建顺序子字段。
在本发明所述的分布式文件系统的全局文件标识生成方法中,如当前时间创建文件的全局文件标识的数量A1小于等于当前时间的创建顺序子字段所能表示全局文件标识的数量A2,则根据所述全局文件标识的创建顺序使用当前时间的创建时间子字段和相应的创建顺序子字段来表示当前时间所创建文件的所述全局文件标识;
如当前时间创建文件的全局文件标识的数量A1大于当前时间的创建顺序子字段所能表示的全局文件标识的数量A2,且相同创建时间子字段的创建顺序子字段所能表示的全局文件标识的最大数量为A3,则根据所述全局文件标识的创建顺序使用当前时间的创建时间子字段和相应的创建顺序子字段、以及下n秒的创建时间子字段和相应的创建顺序子字段来表示当前时间所创建文件的所述全局文件标识;其中n为[(A1-A2)/A3]的向上取整。
在本发明所述的分布式文件系统的全局文件标识生成方法中,所述分布式文件系统的全局文件标识生成方法还包括步骤:
在所述全局文件标识内设置扩展数据字段,所述扩展数据字段用于进行所述全局文件标识的数据扩展;
所述全局文件标识依次包括为所述扩展数据字段、所述服务器编号字段、所述创建时间子字段以及所述创建顺序子字段。
在本发明所述的分布式文件系统的全局文件标识生成方法中,所述扩展数据字段的长度范围为8-16比特,所述服务器编号字段的长度范围为8-16比特,所述创建时间子字段的长度为32-64比特,所述创建顺序子字段的长度为16-32比特。
在本发明所述的分布式文件系统的全局文件标识生成方法中,所述扩展数据字段的长度为8比特,所述服务器编号字段的长度为8比特,所述创建时间子字段的长度为32比特,所述创建顺序子字段的长度为16比特。
本发明还涉及一种分布式文件系统的全局文件标识生成装置,其中所述分布式文件系统包括至少一个主元数据服务器以及多个元数据服务器,所述元数据服务器用于存储及读写文件,所述主元数据服务器用于根据所述文件的元信息生成相应的全局文件标识,所述全局文件标识生成装置包括:
服务器编号字段模块,用于使用服务器编号字段描述与所述全局文件标识相应的文件所在的元数据服务器;以及
文件顺序字段模块,用于使用文件顺序字段描述所述全局文件标识在所述主元数据服务器中的创建编号;
不同的所述全局文件标识在所述主元数据服务器中的创建编号不同。
在本发明所述的分布式文件系统的全局文件标识生成装置中,所述文件顺序字段模块中的所述文件顺序字段根据所述全局文件标识的实际创建时间严格递增。
在本发明所述的分布式文件系统的全局文件标识生成装置中,所述文件顺序字段模块包括:
创建时间子字段单元,用于使用创建时间子字段描述所述全局文件标识在所述主元数据服务器中的创建时间;以及
创建顺序子字段单元,用于使用创建顺序子字段描述所述创建时间子字段相同的所述全局文件标识的创建编号。
在本发明所述的分布式文件系统的全局文件标识生成装置中,所述全局文件标识生成装置还包括:
扩展数据字段模块,用于使用扩展数据字段进行所述全局文件标识的数据扩展。
在本发明所述的分布式文件系统的全局文件标识生成装置中,所述全局文件标识依次包括所述扩展数据字段、所述服务器编号字段、所述创建时间子字段以及所述创建顺序子字段。
在本发明所述的分布式文件系统的全局文件标识生成装置中,所述扩展数据字段的长度范围为8-16比特,所述服务器编号字段的长度范围为8-16比特,所述创建时间子字段的长度为32-64比特,所述创建顺序子字段的长度为16-32比特。
在本发明所述的分布式文件系统的全局文件标识生成装置中,所述扩展数据字段的长度为8比特,所述服务器编号字段的长度为8比特,所述创建时间子字段的长度为32比特,所述创建顺序子字段的长度为16比特。
本发明还涉及一种分布式文件系统,其包括至少一个主元数据服务器以及多个元数据服务器,所述元数据服务器用于存储及读写文件,所述主元数据服务器根据所述文件的元信息,使用上述的全局文件标识生成装置生成相应的全局文件标识。
相较于现有技术,本发明的全局文件标识生成方法、生成装置及相应的分布式文件系统可节约元数据服务器的存储以及传输数据的资源,又可有效的保证每个文件的标识唯一性;解决了现有的分布式文件系统的全局文件标识容量太大导致存储及传输该全局文件标识成本过大的技术问题。
为让本发明的上述内容能更明显易懂,下文特举优选实施例,并配合所附图式,作详细说明如下:
具体实施方式
以下各实施例的说明是参考附加的图式,用以例示本发明可用以实施的特定实施例。本发明所提到的方向用语,例如「上」、「下」、「前」、「后」、「左」、「右」、「内」、「外」、「侧面」等,仅是参考附加图式的方向。因此,使用的方向用语是用以说明及理解本发明,而非用以限制本发明。
在图中,结构相似的单元是以相同标号表示。
本发明涉及一种分布式文件系统的全局文件标识生成方法,如图1所示,图1为本发明的分布式文件系统的全局文件标识生成方法的优选实施例的流程图。该分布式文件系统包括至少一个主元数据服务器以及多个元数据服务器,元数据服务器用于存储及读写文件,主元数据服务器用于根据文件的元信息生成相应的全局文件标识,该分布式文件系统的全局文件标识生成方法包括:
步骤101,接收到文件创建请求时,根据被创建文件所在元数据服务器的编号生成全局文件标识的服务器编号字段;
步骤102,根据全局文件标识在主元数据服务器中的创建时间生成文件顺序字段的创建时间子字段;
步骤103,根据创建时间子字段相同的全局文件标识的创建编号生成文件顺序字段的创建顺序子字段;
这里不同的全局文件标识在主元数据服务器中的创建编号不同。
下面将详细的说明本发明实施例的分布式文件系统的全局文件标识生成方法的每个步骤的详细流程。
在步骤101中,接收到文件创建请求时,根据被创建文件所在元数据服务器的编号生成全局文件标识的服务器编号字段,从而该服务器编号字段可描述该被创建文件所在的元数据服务器的编号。
在步骤102中,根据全局文件标识在主元数据服务器中的创建时间生成文件顺序字段的创建时间子字段。根据文件的创建时间生成的创建时间子字段能够较好的区分不同的创建文件,同时还能够通过全局文件标识反映文件的创建时间的属性。这里为了保证每个被创建文件的全局文件标识的唯一性,文件顺序字段的创建时间子字段根据全局文件标识的实际创建时间严格递增。这里的严格递增是指创建时间较后的创建时间子字段一定大于创建时间较前的创建时间子字段(创建时间相邻的创建时间子字段不能相等)。
在步骤103中,根据创建时间子字段相同的全局文件标识的创建编号生成文件顺序字段的创建顺序子字段。在同一秒的时间内,多个元数据服务器可能会创建多个文件,这时为了满足对同一秒创建的文件(即创建时间子字段相同的全局文件标识所表示的文件)进行区分,可根据文件的创建编号生成创建顺序子字段,该创建编号优选根据文件的创建顺序生成,即相同创建时间子字段的创建顺序子字段根据全局文件标识的实际创建时间严格递增,以保证每个文件标识的唯一性。
进一步,本发明实施例的分布式文件系统的全局文件标识生成方法还包括步骤:在全局文件标识内设置扩展数据字段。扩展数据字段、服务器编号字段、创建时间子字段以及创建顺序子字段依次排列构成了全局文件标识。其中扩展数据字段用于进行全局文件标识的数据扩展,该扩展数据字段可以对现有的文件的某个属性进行编号(例如文件的版本等),也可以预留对将来扩展的服务器进行编号,甚至可以预留对将来文件的某个扩展属性进行编号,当然这里也可以不设置扩展数据字段。
进一步,分布式文件系统的全局文件标识生成时,为了保证每个文件的标识的唯一性,文件顺序字段根据全局文件标识的实际创建时间严格递增,即实际创建时间晚的全局文件标识的文件顺序字段一定大于实际创建时间早的全局文件标识的文件顺序字段。
进一步,该全局文件标识中的扩展数据字段的长度范围为8-16比特,服务器编号字段的长度范围为8-16比特,创建时间子字段的长度为32-64比特,创建顺序子字段的长度为16-32比特。
例如全局文件标识中的扩展数据字段的长度优选为8比特(即1字节),服务器编码字段的长度优选为8比特,创建时间子字段的长度优选为32比特,创建顺序子字段的长度优选为16比特。这样服务器编码字段可支持对256个元数据服务器进行编号,创建时间子字段以秒为最小计数单元,可以对232秒(130多年)内的文件进行编号,创建顺序子字段可以对1秒内的216(65536)个文件进行不同的编号。这样全局文件标识的总长度为64比特,在较好的实现唯一性标识的同时,全局文件标识占用的存储空间也较小。当然全局文件标识中各字段的具体长度可以根据用户的具体需要进行调整。
使用本发明实施例的分布式文件系统的全局文件标识生成方法生成全局文件标识时,如当前时间创建文件的全局文件标识的数量A1小于等于当前时间(当前秒)的创建顺序子字段所能表示的全局文件标识的数量A2,则根据全局文件标识的创建顺序使用当前时间的创建时间子字段和相应的创建顺序子字段来表示当前时间所创建文件的全局文件标识。
如当前时间创建文件的全局文件标识的数量A1大于当前时间的创建顺序子字段所能表示的全局文件标识的数量A2,且相同创建时间子字段的创建顺序子字段所能表示的全局文件标识的最大数量为A3,则根据全局文件标识的创建顺序使用当前时间的创建时间子字段和相应的创建顺序子字段、以及下n秒的创建时间子字段和相应的创建顺序子字段来表示当前时间所创建文件的全局文件标识;其中n为[(A1-A2)/A3]的向上取整。
下面通过描述三秒时间内的文件的全局文件标识的生成来具体说明创建时间子字段和相应的创建顺序子字段的生成(由于服务器编号字段根据元数据服务器的预设编号直接生成,这里不再做详细阐述)。
第一秒,如A2=A3=216=65536,A1=70000,这时由于A1大于A2,当前时间(当前秒)的创建时间子字段和相应的创建顺序子字段不能表示当前时间产生的所有的文件的全局文件标识,因此使用下一秒的创建时间子字段和相应的创建顺序子字段来表示A1-A2=4464个文件的全局文件标识。同时该70000个文件的全局文件标识的文件顺序字段根据全局文件标识的实际创建时间严格递增,其中前65536个文件的全局文件标识在同一创建时间子字段下的创建顺序子字段根据全局文件标识的实际创建时间严格递增,后4564个文件的全局文件标识在同一创建时间子字段下的创建顺序子字段根据全局文件标识的实际创建时间严格递增。
第二秒,如A3=65536,A2=65536-4464=61072,A1=70000,这时A1依然大于A2,当前时间的创建时间子字段和相应的创建顺序子字段不能表示当前时间产生的所有的文件的全局文件标识,因此使用下一秒的创建时间子字段和相应的创建顺序子字段来表示A1-A2=8928个文件的全局文件标识。同时该70000个文件的全局文件标识的文件顺序字段根据全局文件标识的实际创建时间严格递增,其中前61072个文件的全局文件标识在同一创建时间子字段下的创建顺序子字段根据全局文件标识的实际创建时间严格递增,后8928个文件的全局文件标识在同一创建时间子字段下的创建顺序子字段根据全局文件标识的实际创建时间严格递增。
第三秒,如A3=65536,A2=65536-8928=56608,A1=50000,这时A1小于A2,可使用当前时间的创建时间子字段和相应的创建顺序子字段来表示当前时间创建的文件的全局文件标识,上述8928个文件和该50000个文件的全局文件标识在同一创建时间子字段下的创建顺序子字段根据全局文件标识的实际创建时间严格递增。
进一步,如主元数据服务器进行主备切换时,备用的主元数据服务器可能会与原主元数据服务器的时间不一致,这时为了保证每个文件的全局文件标识的唯一性,切换后的文件顺序字段依然根据全局文件标识的实际创建时间严格递增。
如备用的主元数据服务器的时间晚于原主元数据服务器的时间,则直接采用备用的主元数据服务器的时间进行创建时间子字段的生成;如备用的主元数据服务器的时间早于原主元数据服务器的时间,则根据上述创建时间子字段和相应的创建顺序子字段的生成的实施例生成创建时间子字段,即采用后续时间的创建时间子字段来表示当前时间创建的文件的全局文件标识,以保证文件顺序字段依然根据全局文件标识的实际创建时间严格递增。
分布式文件系统的全局文件标识使用时,用户通过文件的路径从主元数据服务器上获取该文件的全局文件标识;然后从文件的全局文件标识中的服务器编号字段获取文件所在的元数据服务器的编号(即元数据服务器的IP);用户根据该元数据服务器的编号连接到相应的元数据服务器;最后用户根据全局文件标识中的文件顺序字段对相应的文件进行读写操作。
由于该全局文件标识的结构简单,分布式文件系统使用该全局文件标识,可以有效的减少用户和元数据服务器之间的数据传输量,同时保证每个文件的标识的唯一性。
本发明还涉及一种分布式文件系统的全局文件标识生成装置,请参照图2和图3,图2为本发明的分布式文件系统的全局文件标识生成装置的优选实施例生成的全局文件标识的示意图,图3为本发明的分布式文件系统的优选实施例的结构示意图。该分布式文件系统包括至少一个主元数据服务器11以及多个元数据服务器12,该元数据服务器12用于存储及读写文件,该主元数据服务器11用于根据文件的元信息,使用全局文件标识生成装置13生成相应的全局文件标识。主元数据服务器11和每个元数据服务器12连接,用户同时与主元数据服务器11和每个元数据服务器12连接。
本发明实施例的全局文件标识生成装置13包括服务器编号字段模块131、文件顺序字段模块132以及扩展数据字段模块133。服务器编号字段模块131用于生成服务器编号字段,文件顺序字段模块132用于生成文件顺序字段,扩展数据字段模块133用于生成扩展数据字段。该文件顺序字段模块132包括用于生成创建时间子字段的创建时间子字段单元以及用于生成创建顺序子字段的创建顺序子字段单元。
下面详细说明本优选实施例的全局文件标识生成装置13生成的全局文件标识。该全局文件标识包括服务器编号字段以及文件顺序字段,该服务器编号字段用于描述与全局文件标识相应的文件所在的元数据服务器12(即相应元数据服务器12的编号);该文件顺序字段用于描述全局文件标识在主元数据服务器11中的创建编号,每个全局文件标识在主元数据服务器11中的文件顺序字段均不相同。
如图2所示,全局文件标识还包括扩展数据字段,文件顺序字段包括创建时间子字段以及创建顺序子字段,扩展数据字段、服务器编号字段、创建时间子字段以及创建顺序子字段依次排列构成了全局文件标识。其中扩展数据字段用于进行全局文件标识的数据扩展,该扩展数据字段可以对现有的文件的某个属性进行编号(例如文件的版本等),也可以预留对将来扩展的服务器进行编号,甚至可以预留对将来文件的某个扩展属性进行编号,当然这里也可不设置扩展数据字段。
创建时间子字段用于描述全局文件标识在主元数据服务器11中的创建时间;创建顺序子字段用于描述创建时间子字段相同的全局文件标识的创建编号。由于文件的创建时间能够较好的区分不同的创建文件,同时还能够通过全局文件标识反映文件的创建时间的属性,因此通过创建时间子字段对某个元数据服务器12中的文件进行唯一性标识可以大大的简化全局文件标识的字段长度,从而节约主元数据服务器11存储和传输全局文件标识的资源。创建顺序子字段对同一秒创建的文件(即创建时间子字段相同的全局文件标识所表示的文件)进行进一步的区分,以保证每个文件的全局文件标识的唯一性。当然这里的文件顺序字段也可采用其他的方式来表示,只要能够实现对每个元数据服务器12中的文件进行唯一性标识(即能反映文件在元数据服务器12中的创建编号)的文件顺序字段均属于本发明的保护范围。
进一步,为了保证每个文件的标识的唯一性,文件顺序字段根据全局文件标识的实际创建时间严格递增,即实际创建时间晚的全局文件标识的文件顺序字段一定大于实际创建时间早的全局文件标识的文件顺序字段。
进一步,该全局文件标识中的扩展数据字段的长度范围为8-16比特,服务器编号字段的长度范围为8-16比特,创建时间子字段的长度为32-64比特,创建顺序子字段的长度为16-32比特。
参照图2,例如该全局文件标识中的扩展数据字段的长度优选为8比特(即1字节),服务器编码字段的长度优选为8比特,创建时间子字段的长度优选为32比特,创建顺序子字段的长度优选为16比特。这样服务器编码字段可支持对256个元数据服务器12进行编号,创建时间子字段以秒为最小计数单元,可对232秒(130多年)内的文件进行编号,创建顺序子字段可以对1秒内的216(65536)个文件进行不同的编号。这样全局文件标识的总长度为64比特,在较好的实现唯一性标识的同时,全局文件标识占用的存储空间也较小。当然全局文件标识中各字段的具体长度可以根据用户的具体需要进行调整。
本发明还涉及一种分布式文件系统,该分布式文件系统包括至少一个主元数据服务器以及多个元数据服务器,该元数据服务器用于存储及读写文件,主元数据服务器用于根据文件的元信息,使用上述的全局文件标识生成装置生成相应的全局文件标识,同时该分布式文件系统使用上述的全局文件标识进行元数据服务器上文件的创建和读写,该分布式文件系统使用的全局文件标识生成装置及相应的使用方法请参见上述分布式文件系统的全局文件标识生成方法及生成装置的具体实施例。
本发明的全局文件标识生成方法、生成装置及相应的分布式文件系统可节约主元数据服务器的存储以及传输数据的资源,又可有效的保证每个文件的标识唯一性;解决了现有的分布式文件系统的全局文件标识容量太大导致存储及传输该全局文件标识成本过大的技术问题。
综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。