一种对元数据对象进行散列的方法及装置制造方法

文档序号:6515945阅读:259来源:国知局
一种对元数据对象进行散列的方法及装置制造方法
【专利摘要】本发明实施例公开了一种对元数据对象进行散列的方法,包括:判断元数据对象是否为快照元数据对象;若所述元数据对象不是快照元数据对象,则将所述元数据对象的名称作为输入值计算所述元数据对象的散列值;若所述元数据对象为快照元数据对象,则将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值;根据所述元数据对象的散列值将所述元数据对象散列到相应的元数据服务器节点。本发明实施例还公开了一种对元数据对象进行散列的装置。采用本发明,具有可降低元数据对象被散列到不同元数据服务器节点的随机性,提高快照数据的访问效率,提高快照的访问性能和系统的整体性能的优点。
【专利说明】一种对元数据对象进行散列的方法及装置
【技术领域】
[0001]本发明涉及通信【技术领域】,尤其涉及一种对元数据对象进行散列的方法及装置。【背景技术】
[0002]快照是系统容灾备份的重要手段之一,快照主要用于实现数据的在线备份和恢复,可以在系统出现故障时快速地将数据恢复到指定时间点状态,并且可以允许用户访问被快照保护的元数据对象在任意时间点生成的元数据对象的快照版本数据(下称快照数据)。当前集群系统为了保证系统中各个元数据服务器的负载均衡,防止某一个目录节点过大或者访问热度过大,需要将目录元数据对象进行分裂将所有元数据对象散列到不同的节点。由于快照是基于目录的,故此,如果目录节点被分裂,元数据对象被快照保护时生成的快照元数据对象也会被散列到不同的元数据服务器节点上。
[0003]现有技术中,元数据对象(包括普通的元数据对象和快照元数据对象)散列时主要是以同一个目录(例如节点过大的目录)下的各个元数据对象的名称(包括普通元数据对象的名称和快照元数据对象的名称)执行HASH计算,根据HASH计算的结果将所有元数据对象散列到不同的节点上。现有技术中由于同一个目录下的各个元数据对象的名称各不相同,故此各个元数据对象的HASH计算结果也多种多样,各个元数据对象散列到不同节点的随机性强。如图1,以图1中各个元数据对象(包括当前元数据服务器节点Dir下的两个普通元数据对象Filel和File2及其对应的快照元数据对象Filel@snapl、Filel@snap3,File2@snap K File2isnap3等,其中“Dir”中文可定义为“目录”,“File”中文可定义为“文件”,“snap”为“snapshot (快照)”的缩写,其中文可定义为“快照”,下文图2、图4中的“File”和“snap”也可为相同的中文意思,后续不再赘述)的名称进行HASH计算后可将各个元数据对象散列到不同节点,如图2,图2中Dirl和Dir2为两个不同的节点,由于图1中各个元数据对象的名称各不相同,各元数据对象的HASH结果也不尽相同,使得图1中的所有元数据对象被散列到Dirl或者Dir2节点上的随机性强。现有技术中同一个元数据对象的不同快照版本被散列到不同的节点的可能性高,快照数据的访问开销大、访问性能低,系统性能低。

【发明内容】

[0004]本发明实施例所要解决的技术问题在于,提供一种对元数据对象进行散列的方法及装置,可将元数据名称相同或者相同版本名称的元数据对象散列到相同的元数据服务器节点上,降低元数据对象被散列到不同元数据服务器节点的随机性,提高快照数据的访问效率,提高快照的访问性能和系统的整体性能。
[0005]本发明实施例第一方面提供了一种对元数据对象进行散列的方法,包括:
[0006]判断元数据对象是否为快照元数据对象;
[0007]若所述元数据对象不是快照元数据对象,则将所述元数据对象的名称作为输入值计算所述元数据对象的散列值;[0008]若所述元数据对象为快照元数据对象,则将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值;
[0009]根据所述元数据对象的散列值将所述元数据对象散列到相应的元数据服务器节点。
[0010]结合第一方面,在第一种可能的实施方式中,所述快照元数据对象为元数据对象被快照保护时生成的元数据对象的快照版本;
[0011]所述快照元数据对象的名称的组成包括:版本名称+分界符+版本号。
[0012]结合第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述判断元数据对象是否为快照元数据对象,包括:
[0013]判断所述元数据对象的名称中是否包含快照元数据对象的名称标识符;
[0014]若判断结果为是,则判定所述元数据对象为快照元数据对象,若判断结果为否,则判定所述元数据对象不是快照元数据对象。
[0015]结合第一方面至第一方面第二种可能的实现方式中任一种,在第三种可能的实现方式中,所述将所述元数据对象的名称作为输入值计算所述元数据对象的散列值,包括:
[0016]将所述元数据对象的名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
[0017]结合第一方面至第二方面第二种可能的实现方式中任一种,在第四种可能的实现方式中,所述将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值,包括:
[0018]将所述元数据对象的名称中的版本名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
[0019]本发明实施例第二方面提供了一种对元数据对象进行散列的装置,包括:
[0020]判断模块,用于判断元数据对象是否为快照元数据对象;
[0021]第一计算模块,用于在判断模块判断结果为否时,将所述元数据对象的名称作为输入值计算所述元数据对象的散列值;
[0022]第二计算模块,用于在判断模块判断结果为是时,将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值;
[0023]散列模块,用于根据所述元数据对象的散列值将所述元数据对象散列到相应的元数据服务器节点。
[0024]结合第二方面,在第一种可能的实现方式中,所述快照元数据对象为元数据对象被快照保护时生成的元数据对象的快照版本;
[0025]所述快照元数据对象的名称的组成包括:版本名称+分界符+版本号。
[0026]结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述判断模块在判断元数据对象是否为快照元数据对象时,具体用于:
[0027]判断所述元数据对象的名称中是否包含快照元数据对象的名称标识符,若判断结果为是,则判定所述元数据对象为快照元数据对象,若判断结果为否,则判定所述元数据对象不是快照元数据对象。
[0028]结合第二方面至第二方面第二种可能的实现方式中任一种,在第三种可能的实现方式中,所述第一计算模块将所述元数据对象的名称作为输入值计算所述元数据对象的散列值时,具体用于:
[0029]将所述元数据对象的名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
[0030]结合第二方面至第二方面第二种可能的实现方式中任一种,在第四种可能的实现方式中,所述第二计算模块将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值时,具体用于:
[0031]将所述元数据对象的名称中的版本名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
[0032]本发明实施例可根据元数据对象的名称以及快照元数据对象的版本名称计算元数据对象的散列值,并根据计算得到的散列值将元数据对象散列至相应的元数据服务器节点。本发明实施例可将当前元数据对象和它的各个不同版本的快照元数据对象散列到同一个元数据服务器节点上,降低元数据对象被散列到不同元数据服务器节点的随机性,可提高快照数据的访问效率,减少了元数据服务器节点间因快照访问而增加的信息交互,提高快照的访问性能和系统的整体性能。
【专利附图】

【附图说明】
[0033]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0034]图1是现有技术中被快照保护的元数据对象及其生成的快照元数据对象的关系示意图;
[0035]图2是现有技术中被快照保护的元数据对象生成的快照元数据对象被散列到不同节点的示意图;
[0036]图3是本发明实施例提供的对元数据对象进行散列的方法的流程示意图;
[0037]图4是本发明实施例提供的对元数据对象进行散列的方法的实施例中被快照保护的元数据对象生成的快照元数据对象被散列到不同节点的示意图;
[0038]图5是本发明实施例提供的对元数据对象进行散列的装置的结构示意图;
[0039]图6是本发明实施例提供的终端的实施例结构示意图。
【具体实施方式】
[0040]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041]参见图3,是本发明实施例提供的对元数据对象进行散列的方法的实施例流程示意图。本实施例中所描述的对元数据对象进行散列的方法,包括步骤:
[0042]S101,判断元数据对象是否为快照元数据对象,若判断结果为否,则执行步骤S102,若判断结果为是,则执行步骤S102。[0043]S102,将所述元数据对象的名称作为输入值计算所述元数据对象的散列值。
[0044]S103,将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值。
[0045]S104,根据所述元数据对象的散列值将所述元数据对象散列到相应的元数据服务器节点。
[0046]具体实现中,本发明实施例中所描述的快照元数据对象为元数据对象被快照保护时生成的元数据对象的快照版本,其中,一个普通元数据对象生成的快照版本可包括多个。当前实现快照的主要方式包括C0W(Copy On Write,写时复制)和R0W(Redirect On Write,写时重定向),其中,如果实现快照的方法是C0W,则数据被快照保护主要是指新数据第一次写入某个存储位置时,首先将该位置上的数据读取出来,写到另外一个位置(为快照保留的存储空间,可称之为快照空间,该空间中存储的数据则为快照数据),之后再将新数据写入到该位置上;如果实现快照的方法是R0W,则数据被快照保护主要是指新数据第一次写入某个存储位置时,新写入的数据被重新定向到新的存储位置,原数据的存储位置变成快照空间。元数据对象被快照保护也与上述数据被快照保护同理。具体实现中,本实施例中所描述元数据对象可包括:文件、目录等,如图1,其中的Filel和File2即为本发明实施例中所描述的元数据服务器节点Dir下的普通的元数据对象,图1中的FiIelOsnapl、Filel@snap3即为元数据对象Filel生成的快照元数据对象,File2isnapl> File2isnap3即为元数据对象File2生成的快照元数据对象;其中Filel和File2为元数据服务器节点Dir下的两个元数据对象,Filel@snapl和Filel@snap3为Filel生成的相同版本的不同版本号的快照元数据对象,File2isnapl和File2@snap3为File2生成的相同版本的不同版本号的快照元数据对象。具体实现中,快照元数据对象的名称空间是系统唯一的,各个快照元数据对象的名称的命名规则也是唯一确定的。在一些可行的实施方式中,快照元数据对象的名称的命名规则可为:版本名称+分界符+版本号,即快照元数据对象的名称的组成包括:版本名称+分界符+版本号,其中,分界符可为例如,在快照元数据对象FilelOsnapl中,Filel为该快照元数据对象的版本名称,@为分界符,snap I为版本号。
[0047]在一些可行的实施方式中,为了使得任一元数据服务器节点下的同一个文件(或者目录)的所有快照版本被散列到同一个元数据服务器节点,使得用户在访问该文件的快照元数据对象时,只需要在同一个元数据服务器节点查找这些快照元数据对象,无需跨节点查询,对同一个文件的所有快照元数据对象进行散列时可以以相同的名称作为元数据对象散列计算的输入值,计算各个元数据对象的散列值,再根据散列值对各个元数据对象进行散列。具体实现中,对元数据对象进行散列时可先判断元数据对象是否为快照元数据对象,如果是快照元数据对象,则以该元数据对象的名称中的版本名称作为输入值,计算该元数据对象的散列值,如果不是快照元数据对象,则可判断得知该元数据对象为普通的元数据对象,进而可将该元数据对象的名称作为输入值计算该元数据对象的散列值。具体的,判断元数据对象是否为快照元数据对象时可根据元数据对象的名称判断该元数据对象的名称中是否包含快照元数据对象的名称标识符,其中,快照元数据对象的名称标识符具体可为快照元数据对象的名称中的分界符(例如@),如果判断得知该元数据对象的名称中包含快照元数据对象的名称中的分界符,则可判断得知该元数据对象为快照元数据对象,如果该元数据对象的名称中不包含快照元数据的对象的名称中的分界符,则可判断得知该元数据对象不是快照元数据对象,而是当前的元数据对象。具体实现中,将当前的元数据对象的名称作为输入值计算该元数据对象的散列值时具体为将该元数据对象的名称作为HASH计算的输入值,对该元数据对象进行HASH计算,确定该元数据对象的散列值;计算快照元数据对象的散列值时则可将快照元数据对象的名称中的版本名称作为HASH计算的输入值,对该元数据对象进行HASH计算,确定该元数据对象的散列值。例如,对图1中的各个元数据对象进行散列时,对于当前的元数据对象Filel或者File2,计算其散列值时可直接以Filel或者File2作为HASH的输入值计算Filel或者File2的散列值;而对于快照元数据对象Filel@snapl和Filel@snap3,计算其散列值时则可以其名称中的版本名称Filel作为HASH的输入值计算FilelOsnapl和Filel@snap3的散列值。由于计算Filel、Filel@snapl以及Filel@snap3的散列值时均以Filel作为HASH的输入值,则计算得到的Filel、Filel@snap I以及Filel@snap3的散列值均为同一个值。同理,对于图1中的元数据对象File2、File2isnapl 以及 File2@snap3,由于计算 File2、File2@snapl 以及 File2@snap3 的散列值均以File2作为HASH的输入值,则计算得到的File2、File2@snapl以及File2@snap3的散列值也均为同一个值。
[0048]在一些可行的实施方式中,计算得知各个元数据对象的散列值之后则可根据元数据对象的散列值将各个元数据对象散列到相应的元数据服务节点上。具体的,可通过对各个元数据对象的散列值进行处理(例如取整)将散列值相同或者相近的元数据对象散列到同一个元数据服务器节点上,或者将散列值大小相差较大的元数据对象散列到不同的元数据服务器节点上等。例如,对图1中的各个元数据对象进行散列时,由于元数据对象Filel、Filelisnapl以及Filel@snap3的散列值均为同一个值,则根据这些元数据对象的散列值进行散列时可Filel、Filelisnapl以及Filel@snap3散列到同一个元数据服务器节点上;此外,元数据对象File2、File2isnapl以及File2@snap3的散列值也为同一个值,则可将File2、File2@snapl以及File2@snap3散列到同一个元数据服务器节点上,如图4。对比图2和图4可知,在图2中同一个文件的所有快照版本的元数据对象可能被散列到不同的元数据服务器节点上,例如,Filel的快照版本的元数据对象Filel@snapl和Filel@snap3可能分别被散列到节点Dirl和节点Dir2上,用户对快照数据进行访问时可能需要跨节点进行查询才能获取到完整的快照数据;在图4中同一个文件的所有快照版本的元数据对象都会被散列到同一个元数据服务器节点上,例如Filel的快照版本的元数据对象FilelOsnapl和FiIelisnap3均被散列到节点DirI上,用户访问某一个文件的所有快照版本时只需要在该文件的节点查找,只需要在该节点上进行查询即可获取完整的快照数据,无需跨节点,减少了元数据服务器节点之间因快照访问带来的信息交互,降低了快照访问的开销。
[0049]本发明实施例主要是以元数据对象的名称以及快照元数据对象的版本名称作为HASH计算的输入值计算元数据对象的散列值,并根据计算得到的散列值将元数据对象散列至相应的元数据服务器节点。在本发明实施例中计算元数据对象和它的各个不同版本的快照元数据对象的散列值时可得到相同的散列值,进而可将当前元数据对象和它的各个不同版本的快照元数据对象散列到同一个元数据服务器节点上,降低元数据对象被散列到不同元数据服务器节点的随机性,进而可提高快照数据的访问效率,减少了元数据服务器节点间因快照访问而增加的信息交互,提高快照的访问性能和系统的整体性能。
[0050]参见图5,是本发明实施例提供的对元数据对象进行散列的装置的实施例结构示意图。本实施例中所描述的对元数据对象进行散列的装置,包括:
[0051]判断模块10,用于判断元数据对象是否为快照元数据对象。
[0052]第一计算模块20,用于在判断模块判断结果为否时,将所述元数据对象的名称作为输入值计算所述元数据对象的散列值。
[0053]第二计算模块30,用于在判断模块判断结果为是时,将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值。
[0054]散列模块40,用于根据所述元数据对象的散列值将所述元数据对象散列到相应的元数据服务器节点。
[0055]在一些可行的实施方式中,上述判断模块在判断元数据对象是否为快照元数据对象时,具体用于:
[0056]根据所述元数据对象的名称判断所述元数据对象的名称中是否包含快照元数据对象的名称标识符,若判断结果为是,则判定所述元数据对象为快照元数据对象,若判断结果为否,则判定所述元数据对象不是快照元数据对象。
[0057]在一些可行的实施方式中,上述第一计算模块将所述元数据对象的名称作为输入值计算所述元数据对象的散列值时,具体用于:
[0058]将所述元数据对象的名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
[0059]在一些可行的实施方式中,上述第二计算模块将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值时,具体用于:
[0060]将所述元数据对象的名称中的版本名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
[0061]具体实现中,本发明实施例中所描述的快照元数据对象为元数据对象被快照保护时生成的元数据对象的快照版本,其中,一个普通元数据对象生成的快照版本可包括多个,本实施例中所描述的元数据服务器节点下的普通的元数据对象可包括:文件、目录等。如图1,其中的Filel和File2即为本发明实施例中所描述的元数据服务器节点Dir下的普通的元数据对象,图1中的FilelOsnapl、Filelisnap3即为元数据对象Filel生成的快照元数据对象,File2@snapl、File2@snap3即为元数据对象File2生成的快照元数据对象;其中Filel和File2为元数据服务器节点Dir下的两个元数据对象,Filelisnapl和FilelOsnap3为Filel生成的相同版本的不同版本号的快照元数据对象,File2isnapl和File2@snap3为File2生成的相同版本的不同版本号的快照元数据对象。具体实现中,快照元数据对象的名称空间是系统唯一的,各个快照元数据对象的名称的命名规则也是唯一确定的。在一些可行的实施方式中,快照元数据对象的名称的命名规则可为:版本名称+分界符+版本号,即快照元数据对象的名称的组成包括:版本名称+分界符+版本号,其中,分界符可为“O”。例如,在快照元数据对象FilelOsnapl中,Filel为该快照元数据对象的版本名称,@为分界符,snap I为版本号。
[0062]在一些可行的实施方式中,为了使得任一元数据服务器节点下的同一个文件(或者目录)的所有快照版本被散列到同一个元数据服务器节点,使得用户在访问该文件的快照元数据对象时,只需要在同一个元数据服务器节点查找这些快照元数据对象,无需跨节点查询,对同一个文件的所有快照元数据对象进行散列时可以以相同的名称作为元数据对象散列计算的输入值,计算各个元数据对象的散列值,再根据散列值对各个元数据对象进行散列。具体实现中,对元数据对象进行散列时可先通过判断模块10判断元数据对象是否为快照元数据对象,如果是快照元数据对象,第二计算模块30则以该元数据对象的名称中的版本名称作为输入值,计算该元数据对象的散列值,如果不是快照元数据对象,则可判断得知该元数据对象为普通的元数据对象,第一计算模块20则可将该元数据对象的名称作为输入值计算该元数据对象的散列值。具体的,判断模块10判断元数据对象是否为快照元数据对象时可根据元数据对象的名称判断该元数据对象的名称中是否包含快照元数据对象的名称标识符,其中,快照元数据对象的名称标识符具体可为快照元数据对象的名称中的分界符(例如@),如果判断得知该元数据对象的名称中包含快照元数据对象的名称中的分界符,则可判断得知该元数据对象为快照元数据对象,如果该元数据对象的名称中不包含快照元数据的对象的名称中的分界符,则可判断得知该元数据对象不是快照元数据对象,而是当前的元数据对象。具体实现中,第一计算模块20计算元数据对象的散列值时将当前的元数据对象的名称作为输入值计算该元数据对象的散列值具体为将该元数据对象的名称作为HASH计算的输入值,对该元数据对象进行HASH计算,确定该元数据对象的散列值;第二计算模块30计算快照元数据对象的散列值时则可将快照元数据对象的名称中的版本名称作为HASH计算的输入值,对该元数据对象进行HASH计算,确定该元数据对象的散列值。例如,对图1中的各个元数据对象进行散列时,对于当前的元数据对象Filel或者File2,计算其散列值时可通过第一计算模块20直接以Filel或者File2作为HASH的输入值计算Filel或者File2的散列值;而对于快照元数据对象FilelOsnapl和Filel@snap3,计算其散列值时则可通过第二计算模块30以快照元数据对象的名称中的版本名称Filel作为HASH的输入值计算FilelOsnapl和Filel@snap3的散列值。由于计算FileUFilelOsnap I以及Filel@snap3的散列值时均以Filel作为HASH的输入值,则计算得到的Filel、Filelisnapl以及Filel@snap3的散列值均为同一个值。同理,对于图1中的元数据对象File2、File2isnapl 以及 File2@snap3,由于计算 File2、File2isnapl 以及 File2@snap3的散列值均以File2作为HASH的输入值,则计算得到的File2、File2isnapl以及File2@snap3的散列值也均为同一个值。
[0063]在一些可行的实施方式中,通过第一计算模块20或者第二计算模块30计算得知各个元数据对象的散列值之后,散列模块40则可根据元数据对象的散列值将各个元数据对象散列到相应的元数据服务节点上。具体的,散列模块40可通过对各个元数据对象的散列值进行处理(例如取整)将散列值相同或者相近的元数据对象散列到同一个元数据服务器节点上,或者将散列值大小相差较大的元数据对象散列到不同的元数据服务器节点上等。例如,对图1中的各个元数据对象进行散列时,由于元数据对象Filel、Filelisnapl以及Filel@Snap3的散列值均为同一个值,则根据这些元数据对象的散列值进行散列时可FileUFilelisnapl以及Filel@snap3散列到同一个元数据服务器节点上;此外,元数据对象File2、File2isnapl以及File2@snap3的散列值也为同一个值,则可将File2、File2isnap I以及File2@snap3散列到同一个元数据服务器节点上,如图4。对比图2和图4可知,在图2中同一个文件的所有快照版本的元数据对象可能被散列到不同的元数据服务器节点上,例如,Filel的快照版本的元数据对象Filel@snapl和Filel@snap3可能分别被散列到节点Dirl和节点Dir2上,用户对快照数据进行访问时可能需要跨节点进行查询才能获取到完整的快照数据;在图4中同一个文件的所有快照版本的元数据对象都会被散列到同一个元数据服务器节点上,例如Filel的快照版本的元数据对象Filel@snapl和FilelOsnap3均被散列到节点Dirl上,用户访问某一个文件的所有快照版本时只需要在该文件的节点查找,只需要在该节点上进行查询即可获取完整的快照数据,无需跨节点,减少了元数据服务器节点之间因快照访问带来的信息交互,降低了快照访问的开销。
[0064]本发明实施例中所描述的对元数据对象进行散列的装置主要是以元数据对象的名称以及快照元数据对象的版本名称作为HASH计算的输入值计算元数据对象的散列值,并根据计算得到的散列值将元数据对象散列至相应的元数据服务器节点。本发明实施例所描述的装置计算元数据对象和它的各个不同版本的快照元数据对象的散列值时可得到相同的散列值,进而可将当前元数据对象和它的各个不同版本的快照元数据对象散列到同一个元数据服务器节点上,降低元数据对象被散列到不同元数据服务器节点的随机性,进而可提高快照数据的访问效率,减少了元数据服务器节点间因快照访问而增加的信息交互,提高快照的访问性能和系统的整体性能。
[0065]参见图6,是本发明实施例提供的终端的实施例结构示意图。本实施例中所描述的终端,包括:
[0066]存储器100,用于存储指令。
[0067]处理器200,用于从所述存储器中读取指令,并根据所述指令执行如下操作:判断元数据对象是否为快照元数据对象,若所述元数据对象不是快照元数据对象,则将所述元数据对象的名称作为输入值计算所述元数据对象的散列值,若所述元数据对象为快照元数据对象,则将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值,根据所述元数据对象的散列值将所述元数据对象散列到相应的元数据服务器节点。
[0068]在一些可行的实施方式中,所述处理器200在判断元数据对象是否为快照元数据对象时,具体用于:
[0069]根据所述元数据对象的名称判断所述元数据对象的名称中是否包含快照元数据对象的名称标识符;
[0070]若判断结果为是,则判定所述元数据对象为快照元数据对象,若判断结果为否,则判定所述元数据对象不是快照元数据对象。
[0071]在一些可行的实施方式中,所述处理器200在将所述元数据对象的名称作为输入值计算所述元数据对象的散列值时,具体用于:
[0072]将所述元数据对象的名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
[0073]在一些可行的实施方式中,所述处理器200所述将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值时,具体用于:
[0074]将所述元数据对象的名称中的版本名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
[0075]具体实现中,本发明实施例中所描述的快照元数据对象为元数据对象被快照保护时生成的元数据对象的快照版本,其中,一个普通元数据对象生成的快照版本可包括多个,本实施例中所描述的元数据服务器节点下的普通的元数据对象可包括:文件、目录等。如图1,其中的Filel和File2即为本发明实施例中所描述的元数据服务器节点Dir下的普通的元数据对象,图1中的FilelOsnapl、Filelisnap3即为元数据对象Filel生成的快照元数据对象,File2@snapl、File2@snap3即为元数据对象File2生成的快照元数据对象;其中Filel和File2为元数据服务器节点Dir下的两个元数据对象,Filelisnapl和FilelOsnap3为Filel生成的相同版本的不同版本号的快照元数据对象,File2isnapl和File2@snap3为File2生成的相同版本的不同版本号的快照元数据对象。具体实现中,快照元数据对象的名称空间是系统唯一的,各个快照元数据对象的名称的命名规则也是唯一确定的。在一些可行的实施方式中,快照元数据对象的名称的命名规则可为:版本名称+分界符+版本号,即快照元数据对象的名称的组成包括:版本名称+分界符+版本号,其中,分界符可为“O”。例如,在快照元数据对象FilelOsnapl中,Filel为该快照元数据对象的版本名称,@为分界符,snap I为版本号。
[0076]在一些可行的实施方式中,为了使得任一元数据服务器节点下的同一个文件(或者目录)的所有快照版本被散列到同一个元数据服务器节点,使得用户在访问该文件的快照元数据对象时,只需要在同一个元数据服务器节点查找这些快照元数据对象,无需跨节点查询,处理器200对同一个文件的所有快照元数据对象进行散列时可以以相同的名称作为元数据对象散列计算的输入值,计算各个元数据对象的散列值,再根据散列值对各个元数据对象进行散列。具体实现中,处理器200对元数据对象进行散列时可先判断元数据对象是否为快照元数据对象,如果是快照元数据对象,则以该元数据对象的名称中的版本名称作为输入值,计算该元数据对象的散列值,如果不是快照元数据对象,则可判断得知该元数据对象为普通的元数据对象,进而可将该元数据对象的名称作为输入值计算该元数据对象的散列值。具体的,处理器200判断元数据对象是否为快照元数据对象时可根据元数据对象的名称判断该元数据对象的名称中是否包含快照元数据对象的名称标识符,其中,快照元数据对象的名称标识符具体可为快照元数据对象的名称中的分界符(例如@),如果判断得知该元数据对象的名称中包含快照元数据对象的名称中的分界符,则可判断得知该元数据对象为快照元数据对象,如果该元数据对象的名称中不包含快照元数据的对象的名称中的分界符,则可判断得知该元数据对象不是快照元数据对象,而是当前的元数据对象。具体实现中,处理器200将当前的元数据对象的名称作为输入值计算该元数据对象的散列值时具体为将该元数据对象的名称作为HASH计算的输入值,对该元数据对象进行HASH计算,确定该元数据对象的散列值;处理器200计算快照元数据对象的散列值时则可将快照元数据对象的名称中的版本名称作为HASH计算的输入值,对该元数据对象进行HASH计算,确定该元数据对象的散列值。例如,对图1中的各个元数据对象进行散列时,对于当前的元数据对象Filel或者File2,处理器200计算其散列值时可直接以Filel或者File2作为HASH的输入值计算Filel或者File2的散列值;而对于快照元数据对象FilelOsnapl和FilelOsnap3,处理器200计算其散列值时则可以其名称中的版本名称Filel作为HASH的输入值计算FilelOsnapl和Filel@snap3的散列值。由于处理器200计算Filel、Filel@snapl以及Filel@snap3的散列值时均以Filel作为HASH的输入值,则计算得到的Filel、Filelisnap I以及Filel@snap3的散列值均为同一个值。同理,对于图1中的元数据对象File2、File2isnapl 以及 File2@snap3,由于处理器 200 计算 File2、File2@snapl 以及 File2@snap3的散列值均以File2作为HASH的输入值,则计算得到的File2、File2isnapl以及File2isnap3的散列值也均为同一个值。[0077]在一些可行的实施方式中,处理器200计算得知各个元数据对象的散列值之后则可根据元数据对象的散列值将各个元数据对象散列到相应的元数据服务节点上。具体的,处理器200可通过对各个元数据对象的散列值进行处理(例如取整)将散列值相同或者相近的元数据对象散列到同一个元数据服务器节点上,或者将散列值大小相差较大的元数据对象散列到不同的元数据服务器节点上等。例如,对图1中的各个元数据对象进行散列时,由于元数据对象Filel、Filelisnapl以及Filel@snap3的散列值均为同一个值,则根据这些元数据对象的散列值进行散列时可Filel、Filel@snapl以及Filel@snap3散列到同一个元数据服务器节点上;此外,元数据对象File2、File2@snapl以及File2@snap3的散列值也为同一个值,则可将File2、File2isnapl以及File2@snap3散列到同一个元数据服务器节点上,如图4。对比图2和图4可知,在图2中同一个文件的所有快照版本的元数据对象可能被散列到不同的元数据服务器节点上,例如,Filel的快照版本的元数据对象FilelOsnapl和Filel@snap3可能分别被散列到节点Dirl和节点Dir2上,用户对快照数据进行访问时可能需要跨节点进行查询才能获取到完整的快照数据;在图4中同一个文件的所有快照版本的元数据对象都会被散列到同一个元数据服务器节点上,例如Filel的快照版本的元数据对象Filel@snapl和Filel@snap3均被散列到节点Dirl上,用户访问某一个文件的所有快照版本时只需要在该文件的节点查找,只需要在该节点上进行查询即可获取完整的快照数据,无需跨节点,减少了元数据服务器节点之间因快照访问带来的信息交互,降低了快照访问的开销。
[0078]本发明实施例中所描述的终端可以元数据对象的名称以及快照元数据对象的版本名称作为HASH计算的输入值计算元数据对象的散列值,并根据计算得到的散列值将元数据对象散列至相应的元数据服务器节点。在本发明实施例所描述的终端中计算元数据对象和它的各个不同版本的快照元数据对象的散列值时可得到相同的散列值,进而可将当前元数据对象和它的各个不同版本的快照元数据对象散列到同一个元数据服务器节点上,降低元数据对象被散列到不同元数据服务器节点的随机性,进而可提高快照数据的访问效率,减少了元数据服务器节点间因快照访问而增加的信息交互,提高快照的访问性能和系统的整体性能。
[0079]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0080]以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【权利要求】
1.一种对元数据对象进行散列的方法,其特征在于,包括: 判断元数据对象是否为快照元数据对象; 若所述元数据对象不是快照元数据对象,则将所述元数据对象的名称作为输入值计算所述元数据对象的散列值; 若所述元数据对象为快照元数据对象,则将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值; 根据所述元数据对象的散列值将所述元数据对象散列到相应的元数据服务器节点。
2.如权利要求1所述的方法,其特征在于,所述快照元数据对象为元数据对象被快照保护时生成的元数据对象的快照版本; 所述快照元数据对象的名称的组成包括:版本名称+分界符+版本号。
3.如权利要求2所述的方法,其特征在于,所述判断元数据对象是否为快照元数据对象,包括: 判断所述元数据对象的名称中是否包含快照元数据对象的名称标识符; 若判断结果为是,则判定所述元数据对象为快照元数据对象,若判断结果为否,则判定所述元数据对象不是快照元数据对象。
4.如权利要求1-3任意一项所述的方法,其特征在于,所述将所述元数据对象的名称作为输入值计算所述元数据对象的散列值,包括: 将所述元数据对象的名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
5.如权利要求1-3任意一项所述的方法,其特征在于,所述将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值,包括: 将所述元数据对象的名称中的版本名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
6.一种对元数据对象进行散列的装置,其特征在于,包括: 判断模块,用于判断元数据对象是否为快照元数据对象; 第一计算模块,用于在判断模块判断结果为否时,将所述元数据对象的名称作为输入值计算所述元数据对象的散列值; 第二计算模块,用于在判断模块判断结果为是时,将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值; 散列模块,用于根据所述元数据对象的散列值将所述元数据对象散列到相应的元数据服务器节点。
7.如权利要求6所述的装置,其特征在于,所述快照元数据对象为元数据对象被快照保护时生成的元数据对象的快照版本; 所述快照元数据对象的名称的组成包括:版本名称+分界符+版本号。
8.如权利要求7所述的装置,其特征在于,所述判断模块在判断元数据对象是否为快照元数据对象时,具体用于: 判断所述元数据对象的名称中是否包含快照元数据对象的名称标识符,若判断结果为是,则判定所述元数据对象为快照元数据对象,若判断结果为否,则判定所述元数据对象不是快照元数据对象。
9.如权利要求6-8任意一项所述的装置,其特征在于,所述第一计算模块将所述元数据对象的名称作为输入值计算所述元数据对象的散列值时,具体用于: 将所述元数据对象的名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
10.如权利要求6-8任意一项所述的装置,其特征在于,所述第二计算模块将所述元数据对象的名称中的版本名称作为输入值计算所述元数据对象的散列值时,具体用于: 将所述元数据对象的名称中的版本名称作为HASH计算的输入值,对所述元数据对象进行HASH计算,确定所述元数据对象的散列值。
【文档编号】G06F17/30GK103559224SQ201310493842
【公开日】2014年2月5日 申请日期:2013年10月18日 优先权日:2013年10月18日
【发明者】李永健, 高峰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1