专利名称::元数据管理方法及系统的制作方法
技术领域:
:本发明涉及计算机技术,尤其涉及一种元数据管理方法及系统。
背景技术:
:元数据是保存于存储介质上的用于管理数据的数据,其可使用户根据该元数据进行定位获取其管理的数据。现有技术中的元数据的组织结构分为两类:文件系统元数据和对象系统元数据,其中,文件系统元数据以文件/目录为单位,该元数据组织结构中的各个文件和目录采用层级结构的目录树,以索引节点(inode)为存储单位进行存储,在查询定位时以各级inode为标识进行逐级多次输入输出(IO)定位;对象系统元数据组织结构以桶/对象(Bucket/object)为存储单位进行存储,object是没有目录层级结构的名称,在查询定位时以全路径名为标识进行一次IO定位。由于现有的元数据管理在文件系统和对象系统中的数据组织结构不同,因此两类系统分别需要相应的元数据存储,即需要两套元数据存储系统,所以,实际应用中需要一种元数据存储管理结构在不影响两类系统各自应用特点和操作效率的情况下,能够同时实现两类系统的元数据管理。
发明内容本发明提供一种元数据管理方法及系统,用以在保证文件系统和对象系统各自应用特点和操作效率的情况下,统一文件系统和对象系统的元数据存储。本发明的第一个方面是提供一种元数据管理方法,包括:以目录层次结构作为元数据组织结构,并以对象系统中的用户名作为目录层次结构中根目录下的第一层目录;以对象系统中用户名对应的桶作为目录层次结构中该用户名目录下的目录;根据对象系统中与每个桶关联的对象名中的分割符将对象名分割为对应桶目录下的目录名或文件名;以相同目录的索引节点集合为存储单位存储元数据,并以目录名或文件名所在目录的绝对路径名计算的哈希(hash)值作为存储单位的标识存储在目录索引节点中。结合第一个方面的元数据管理方法,在第一种实现方式中,若相同目录中的索引节点个数大于预设的个数时,对该相同目录中的索引节点进行二叉树分片存储在同一标识对应的不同存储单位中。结合第一个方面的元数据管理方法或第一种实现方式,在第二种实现方式中,若根据不同绝对路径名计算得到相同的hash值,则将该不同绝对路径对应的目录存放于该相同的hash值标识对应的不同存储单位中。本发明的第二个方面是提供一种元数据管理系统,包括:组织模块,用于以目录层次结构作为元数据组织结构,并以对象系统中的用户名作为目录层次结构中根目录下的第一层目录;以对象系统中用户名对应的桶作为目录层次结构中该用户名目录下的目录;根据对象系统中与每个桶关联的对象名中的分割符将对象名分割为对应桶目录下的目录名或文件名;存储模块,用于以相同目录的索引节点集合为存储单位存储元数据,并以目录名或文件名所在目录的绝对路径名计算的hash值作为存储单位的标识存储在目录索引节点中。结合第二个方面的元数据管理系统,在第一种实现方式中,所述存储模块,还用于若相同目录中的索引节点个数大于预设的个数时,对该相同目录中的索引节点进行二叉树分片存储在同一标识对应的不同存储单位中。结合第二个方面的元数据管理系统或第一种实现方式,在第二种实现方式中,所述存储模块,还用于若根据不同绝对路径名计算得到相同的hash值,则将该不同绝对路径对应的目录存放于该相同的hash值标识对应的不同存储单位中。本发明通过以目录层次结构作为元数据组织结构,并以对象系统中与每个桶关联的对象名中的分割符“/”将对象名分割为对应桶目录下的目录名或文件名,并以目录名或文件名所在目录的绝对路径名计算的hash值作为存储单位的标识存储在目录索引节点中,实现了文件系统和对象系统共用一份元数据管理系统而且由于采用这种元数据管理方法,对文件系统和对象系统的各自性能和目录操作效率并没有影响,所以对文件系统和对象系统的用户来说,不会出现任何使用不便的问题;进一步通过二叉树分片技术以克服同一标识具有较多节点索引时查询效率问题;同时,当出现计算的hash值出现冲突时,进一步通过将不同目录存放在标识相同的一组存储单位中以克服,还可配合分片技术以避免降低效率。为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明元数据管理方法实施例的流程图;图2为本发明元数据管理方法具体应用例的示意图;图3为本发明元数据管理系统实施例的结构示意图;图4为本发明元数据管理系统一个应用例的结构示意5为本发明元数据管理系统另一个应用例的结构示意图。具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明元数据管理方法实施例的流程图,如图1所示,本实施例的方法包括:步骤101、以目录层次结构作为元数据组织结构,并以对象系统中的用户名作为目录层次结构中根目录下的第一层目录;以对象系统中用户名对应的桶作为目录层次结构中该用户名目录下的目录;根据对象系统中与每个桶关联的对象名中的分割符“/”将对象名分割为对应桶目录下的目录名或文件名。本发明实施例中,逻辑上将文件系统和对象系统的元数据进行了统一,文件系统和对象系统使用存储的同一份元数据。该元数据的数据组织结构采用文件系统的目录层次结构,而将对象系统中各个对象名按照分割符“/”进行分割,得到对应桶目录下的目录名或文件名,以便于后续根据各个目录或文件所在的绝对路径名确定存储单位的标识。步骤102、以相同目录的索引节点集合为存储单位存储元数据,并以目录名或文件名所在目录的绝对路径名计算的hash值作为存储单位的标识存储在目录索引节点中。在上述步骤的目录组织结构的基础上,本步骤计算获取各个目录或文件所在的目录的绝对路径名对应的目录标识(dir_id),即存储单位的标识,并存储该目录标识,使后续目录操作时根据该目录标识可直接一次获取对应的数据。本实施例中,通过计算目录名或文件名所在目录的绝对路径名的hash值获取相应的目录标识,由于以路径结构层次化的方法获取的hash值中包含层次化hash算法,所以能够减少标识冲突。而且通过计算hash值的方法可以非顺序分配存储单位的标识,且标识中含有路径快速定位信息的分配算法,保证了目录操作的快速定位,提高了操作效率。由于采用本发明的方法存储的元数据,并不影响文件系统和对象系统的各自性能和目录操作效率,因此用户在使用两类系统时不会出现使用不便的问题;而且由于两类系统采用同一份元数据存储,当用户在文件系统中进行元数据更新时,在对象系统中可以看到更新的数据,反之亦然。根据上述方法存储的元数据,文件系统可以直接使用,对象系统也可以直接使用,即两类系统统一采用一份元数据存储系统进行元数据管理,而且,对采用本发明的方法存储的元数据进行操作时,对象系统可通过其与元数据管理系统的接口模块一次IO操作即可获取相应的数据。在实际应用中,以相同目录的索引节点集合为存储单位存储元数据时,相同目录的索引节点可能为多个,当进行目录操作时,需要逐个比较以找出要操作的项目,从而出现目录应用中操作效率较低的问题,`为解决这个问题,本发明实施例中还进一步通过二叉树分片存储技术配合上述实施例中的元数据管理方法,即若相同目录中的索引节点个数大于预设的个数时,对该相同目录中的索引节点进行二叉树分片存储,如将属于同一目录的子目录或文件进行分片,存储在标识相同的不同存储单位中,从而当进行目录操作时,可根据标识获取相应的一组存储单位时,从该一组存储单位中根据二叉树分片找到相应的项目,其中预设的个数为根据需要设定。在实际元数据存储中,存在根据不同绝对路径名计算得到相同的hash值的情况,即存在存储冲突的问题,在这种情况下,本发明实施例还进一步采用将根据不同绝对路径名计算得到相同的hash值的该不同绝对路径对应的目录存放于该相同的hash值标识对应的不同存储单位中,即存放在相同标识对应的一组存储单位中,以避免存储冲突,同时配合上述的二叉树分片存储技术保证目录操作效率。根据上述元数据管理方法存储的元数据,在目录操作时,由于文件系统的重命名或移动操作需要多次10,效率较低,因此,文件系统可通过系统的日志进行改善时延,即文件系统通过其元数据服务器(Metadataserver,简称MDS)读取存储元数据,具体过程为:根据记录在目录索引节点中的目录标识,即存储单位的标识一次IO读取对应目录的数据,并缓存在内存中,当执行重命名或移动操作时,可在元数据服务器集群中记录日志,修改对应子目录的存储单位标识,当后续刷日志时将修改后的子目录的元数据写到新位置。对象系统的对象存储控制器(Objectstorecontroller,简称OSC)在执行用户的目录操作请求时,可以对操作请求的对象名计算hash值;根据计算得到的hash值一次IO读取存储的索引节点信息;根据索引节点信息获取用户请求的数据。在上述的目录操作中,若通过文件系统进行的元数据更新,可通过对象系统直接得到更新后的元数据,同时通过对象系统进行的元数据更新,也可通过文件系统直接得到更新后的元数据,而且针对各自的系统,元数据以相应的形态呈现给用户,从而不影响各自系统的性能。本发明实施例通过以目录层次结构作为元数据组织结构,并以对象系统中与每个桶关联的对象名中的分割符“/”将对象名分割为对应桶目录下的目录名或文件名,并以目录名或文件名所在目录的绝对路径名计算的hash值作为存储单位的标识存储在目录索引节点中,实现了文件系统和对象系统共用一份元数据管理系统,而且由于采用这种元数据管理方法,对文件系统和对象系统的各自性能和目录操作效率并没有影响,所以对文件系统和对象系统的用户来说,不会出现任何使用不便的问题;进一步通过二叉树分片技术以克服同一标识具有较多节点索引时查询效率问题;同时,当出现计算的hash值出现冲突时,进一步通过将不同目录存放在标识相同的一组存储单位中以克服,还可配合分片技术以避免降低效率。图2为本发明元数据管理方法具体应用例的示意图,图2中位于同一目录下的各个子目录或文件属于同一存储单位,并具有同一索引节点信息,如绝对路径为/kobe/bucket_l下包含子目录kl,kl_l和文件k_a.avi,依照本发明的元数据管理方法,将三者存放于同一存储单位中,并根据三者所属的绝对路径/kobe/bucket_l进行hash计算,获取hash值为23,以该hash值作为该存储单位的标识。其他各个索引节点类似。图2中目录bucket_4下包含三个子目录和一个文件,为降低目录操作时的查询效率,图2中将目录bucket_4下的子目录或文件进行了二叉树分片,分成两个存储单位,且这两个存储单位存放于标识33对应的两个存储单位中。另外,当出现目录bucket_4下的子目录和目录bucket_5的子目录所在的绝对路径通过hash计算获取的hash值相同,即出现标识冲突的问题时,可以将bucket_4下的子目录和目录bucket_5的子目录采用相同的标识33,并且使其分别位于不同的存储单位中,存储单位再分别用33_0,33_1和33_2标识以区分。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,处理器,如中央处理单元(英文为CentralProcessingUnit,简称CPU),执行包括上述方法实施例的步骤;而前述的存储介质包括:只读存储器(英文为read-onlymemory,简称ROM)、随机存储器(英文为randomaccessmemory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。图3为本发明元数据管理系统实施例的结构示意图,如图3所示,本实施例的系统包括:组织模块10和存储模块20,其中,组织模块10,用于以目录层次结构作为元数据组织结构,并以对象系统中的用户名作为目录层次结构中根目录下的第一层目录;以对象系统中用户名对应的桶作为目录层次结构中该用户名目录下的目录;根据对象系统中与每个桶关联的对象名中的分割符“/”将对象名分割为对应桶目录下的目录名或文件名;存储模块20,用于以相同目录的索引节点集合为存储单位存储元数据,并以目录名或文件名所在目录的绝对路径名计算的hash值作为存储单位的标识存储在目录索引节点中。本实施例中,组织模块10根据对象系统中各个桶/对象将与每个桶关联的对象名分割为对应桶目录下的目录名或文件名,并由存储模块存储根据每个目录名或文件名所在目录的绝对路径名计算的hash值,当后续进行目录操作时,可以根据相应的hash值通过一次IO即可获取目录操作对应的数据。在另一元数据管理系统实施例中,在上述图2所示实施例中存储模块还可进一步用于若相同目录中的索引节点个数大于预设的个数时,对该相同目录中的索引节点进行二叉树分片存储在同一标识对应的不同存储单位中,以解决同一目录中的子目录较多时查询效率较低的问题。在又一元数据管理系统实施例中,在上述图2所示实施例中存储模块还可进一步用于若根据不同绝对路径名计算得到相同的hash值,则将该不同绝对路径对应的目录存放于该相同的hash值标识对应的不同存储单位中,以避免出现的存储冲突问题。在上述元数据管理系统的任一实施例中,实际应用中还可以进一步包括:接口模块,实现与文件系统或对象系统的接口,图4为本发明元数据管理系统一个应用例的结构示意图,如图4所示,在上述实施例的基础上,本实施例的元数据管理系统还包括第一接口模块30和第二接口模块40,其中第一接口模块30,用于当文件系统的元数据服务器读元数据时,根据存储的存储单位的标识一次读取对应目录的数据,并缓存在内存中;且当文件系统的元数据服务器执行重命名或移动操作时,修改对应子目录的存储单位标识,并记录日志,以使刷日志时将修改后的子目录的元数据写到新位置,以实现文件系统操作目录时与元数据管理系统接口。第二接口模块40,用于当对象系统的对象存储控制器执行用户的目录操作请求时,对操作请求的对象名计算hash值;根据计算得到的hash值一次读取索引节点信息;根据索引节点信息获取用户请求的数据,以实现对象系统操作目录时与元数据管理系统接□。本发明实施例可用于执行上述方法实施例的技术方案,其工作原理及达到的技术效果类似,不再详细赘述。在实际应用中,上述第一接口模块和第二接口模块也可以是独立于元数据管理系统的功能模块,元数据管理系统仅作为元数据存储系统使用。图5为本发明元数据管理系统另一应用例的结构示意图,如图5所示,文件系统通过可移植操作系统接口(PortableOperatingSystemInterface,简称P0SIX)接口与本发明元数据管理系统进行交互执行目录操作,对象系统通过Asazon的S3接口与本发明元数据管理系统进行交互执行目录操作,两类系统共用一份元数据存储管理系统。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。权利要求1.一种元数据管理方法,应用于计算机存储系统中,其特征在于,包括:以目录层次结构作为元数据组织结构,并以对象系统中的用户名作为目录层次结构中根目录下的第一层目录;以对象系统中用户名对应的桶作为目录层次结构中该用户名目录下的目录;根据对象系统中与每个桶关联的对象名中的分割符将对象名分割为对应桶目录下的目录名或文件名;以相同目录的索引节点集合为存储单位存储元数据,并以目录名或文件名所在目录的绝对路径名计算的hash值作为存储单位的标识存储在目录索引节点中。2.根据权利要求1所述的方法,其特征在于,若相同目录中的索引节点个数大于预设的个数时,对该相同目录中的索引节点进行二叉树分片存储在同一标识对应的不同存储单位中。3.根据权利要求1或2所述的方法,其特征在于,若根据不同绝对路径名计算得到相同的hash值,则将该不同绝对路径对应的目录存放于该相同的hash值标识对应的不同存储单位中。4.根据权利要求1或2所述的方法,其特征在于,当文件系统的元数据服务器读元数据时,根据存储的存储单位的标识一次读取对应目录的数据,并缓存在内存中。5.根据权利要求4所述的方法,其特征在于,当文件系统的元数据服务器执行重命名或移动操作时,修改对应子目录的存储单位标识,并记录日志,以使刷日志时将修改后的子目录的元数据写到新位置。6.根据权利要求1或2所述的方法,其特征在于,当对象系统的对象存储控制器执行用户的目录操作请求时,对操作请求的对象名计算hash值;根据计算得到的hash值一次读取索引节点信息;根据索引节点信息获取用户请求的数据。7.—种元数据管理系统,应用于计算机存储系统中,其特征在于,包括:组织模块,用于以目录层次结构作为元数据组织结构,并以对象系统中的用户名作为目录层次结构中根目录下的第一层目录;以对象系统中用户名对应的桶作为目录层次结构中该用户名目录下的目录;根据对象系统中与每个桶关联的对象名中的分割符将对象名分割为对应桶目录下的目录名或文件名;存储模块,用于以相同目录的索引节点集合为存储单位存储元数据,并以目录名或文件名所在目录的绝对路径名计算的hash值作为存储单位的标识存储在目录索引节点中。8.根据权利要求7所述的系统,其特征在于,所述存储模块,还用于若相同目录中的索引节点个数大于预设的个数时,对该相同目录中的索引节点进行二叉树分片存储在同一标识对应的不同存储单位中。9.根据权利要求7或8所述的系统,其特征在于,所述存储模块,还用于若根据不同绝对路径名计算得到相同的hash值,则将该不同绝对路径对应的目录存放于该相同的hash值标识对应的不同存储单位中。10.根据权利要求7或8所述的系统,其特征在于,还包括:第一接口模块,用于当文件系统的元数据服务器读元数据时,根据存储的存储单位的标识一次读取对应目录的数据,并缓存在内存中。11.根据权利要求10所述的系统,其特征在于,第一接口模块,还用于当文件系统的元数据服务器执行重命名或移动操作时,修改对应子目录的存储单位标识,并记录日志,以使刷日志时将修改后的子目录的元数据写到新位置。12.根据权利要求7或8所述的系统,其特征在于,还包括:第二接口模块,用于当对象系统的对象存储控制器执行用户的目录操作请求时,对操作请求的对象名计算hash值;根据计算得到的hash值一次读取索引节点信息;根据索引节点信息获取用户请求的数据。全文摘要本发明涉及一种元数据管理方法及系统,其中,元数据管理方法包括以目录层次结构作为元数据组织结构,并以对象系统中的用户名作为目录层次结构中根目录下的第一层目录;以对象系统中用户名对应的桶作为目录层次结构中该用户名目录下的目录;根据对象系统中与每个桶关联的对象名中的分割符“/”将对象名分割为对应桶目录下的目录名或文件名;以相同目录的索引节点集合为存储单位存储元数据,并以目录名或文件名所在目录的绝对路径名计算的hash值作为存储单位的标识存储在目录索引节点中。本发明应用于与将文件系统和对象系统的元数据进行统一存储管理的元数据存储系统中。文档编号G06F17/30GK103229173SQ201280002961公开日2013年7月31日申请日期2012年12月26日优先权日2012年12月26日发明者过晓春申请人:华为技术有限公司