集群文件系统文件存储的方法及集群文件系统的制作方法

文档序号:10655300阅读:400来源:国知局
集群文件系统文件存储的方法及集群文件系统的制作方法
【专利摘要】本发明公开了一种集群文件系统文件存储的方法,所述集群文件系统无中心节点和元数据服务器,所述集群文件系统文件存储的方法包括:根据集群文件系统中条带分组的组数N,将预设消息摘要算法的结果值范围划分为N个结果值范围;获取文件的目录信息,根据所述目录信息通过预设消息摘要算法计算生成摘要结果值;根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中。本发明还公开了一种集群文件系统。本发明实现了对于集群文件系统的扩展不再受中心节点和元数据服务器的限制,同时提高了数据的冗余性和鸡群文件系统性能。
【专利说明】
集群文件系统文件存储的方法及集群文件系统
技术领域
[0001]本发明涉及计算机技术领域,尤其涉及集群文件系统文件存储的方法及集群文件系统。【背景技术】
[0002]近年来,集群文件系统已经成为计算机技术发展的新趋势。集群文件系统通过将多个单一独立的主机有机的结合串联成一个系统性的整体,并依托存储区域网络,对外提供一个大容量文件系统的共享存储应用。实现了存储区域网络内的多并发用户操作和大数据传输。
[0003]随着集群存储技术的发展,集群文件系统的分布对集群的扩展能力特别重要。由于大多集群文件系统都采用中心节点、元数据服务器的方式来实现。其缺陷在于集群文件系统的扩展受到中心节点、元数据服务器的限制。
[0004]上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
【发明内容】

[0005]本发明的主要目的在于提供一种集群文件系统文件存储的方法,旨在解决集群文件系统扩展受到中心节以及元数据服务器限制导致集群文件系统难以扩展的技术问题。
[0006]为实现上述目的,本发明提供一种集群文件系统文件存储的方法,所述集群文件系统无中心节点和元数据服务器,所述集群文件系统文件存储的方法包括以下步骤:
[0007]根据集群文件系统中条带分组的组数N,将预设消息摘要算法的结果值范围划分为N个结果值范围,其中:所述条带分组的存储范围与所述N个结果值范围一一对应,所述条带分组包括多个虚拟节点,每个虚拟节点包括多个物理节点;
[0008]获取文件的目录信息,根据所述目录信息通过预设消息摘要算法计算生成摘要结果值;
[0009]根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中。
[0010]优选地,所述根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中的步骤包括:
[0011]根据所述生成的摘要结果值选择对应存储范围的条带分组;
[0012]根据所述对应存储范围的条带分组中虚拟节点的个数,对所述文件进行切片,生成多个文件片段;
[0013]将所述多个文件片段通过预设分布算法分配到所述条带分组对应的多个虚拟节点中,存储在所述虚拟节点包括的物理节点中,所述虚拟节点包括的每个物理节点均保存有所述文件片段的副本。
[0014]优选地,所述根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中的步骤之后还包括:
[0015]当所述条带分组的组数从N变化为M时,将预设消息摘要算法的结果值划分为M个结果值范围,其中:所述条带分组的存储范围与所述结果值范围一一对应;
[0016]根据预设平衡算法将存储在变化之前的N个条带分组中的文件迀移到变化之后的 M个条带分组中。
[0017]优选地,所述根据预设平衡算法将存储在变化之前的N个条带分组中的文件迀移到变化之后的M个条带分组中的步骤包括:
[0018]将存储在所述变化之前的条带分组中的文件关联到所述变化之后的条带分组中; [〇〇19]当所述集群文件系统空闲时,将存储在所述变化之前的条带分组中的所述文件迀移到所述变化后的条带分组中,同时取消与变化之前的条带分组中所述文件的关联,并删除变化之前的条带分组中的所述文件。
[0020]优选地,所述根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中的步骤之后还包括:
[0021]当接收到查找或读取指令时,根据所述生成的摘要结果值定位存储所述文件的条带分组。
[0022]此外,为实现上述目的,本发明还提供一种集群文件系统,所述集群文件系统无中心节点和元数据服务器,所述集群文件系统包括:
[0023]条带分组范围划分模块,用于根据集群文件系统中条带分组的组数N,将预设消息摘要算法的结果值范围划分为N个结果值范围,其中:所述条带分组的存储范围与所述N个结果值范围一一对应,所述条带分组包括多个虚拟节点,每个虚拟节点包括多个物理节点;
[0024]摘要结果获取模块,用于获取文件的目录信息,根据所述目录信息通过预设消息摘要算法计算生成摘要结果值;
[0025]文件存储模块,用于根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中。[〇〇26]优选地,所述文件存储模块包括:
[0027]条带分组获取单元,用于根据所述生成的摘要结果值选择对应存储范围的条带分组;
[0028]文件切片单元,用于根据所述对应存储范围的条带分组中虚拟节点的个数,对所述文件进行切片,生成多个文件片段;
[0029]文件片段存储单元,用于将所述多个文件片段通过预设分布算法分配到所述条带分组对应的多个虚拟节点中,存储在所述虚拟节点包括的物理节点中,所述虚拟节点包括的每个物理节点均保存有所述文件片段的副本。
[0030]优选地,所述集群文件系统还包括:
[0031]重划分模块,用于当所述条带分组的组数从N变化为M时,将预设消息摘要算法的结果值划分为M个结果值范围,其中:所述条带分组的存储范围与所述结果值范围一一对应;
[0032]文件迀移模块,用于根据预设平衡算法将存储在变化之前的N个条带分组中的文件迀移到变化之后的M个条带分组中。[〇〇33]优选地,所述文件迀移模块包括:
[0034]关联单元,用于将存储在所述变化之前的条带分组中的文件关联到所述变化之后的条带分组中;
[0035]迀移单元,用于当所述集群文件系统空闲时,将存储在所述变化之前的条带分组中的所述文件迀移到所述变化后的条带分组中,同时取消与变化之前的条带分组中所述文件的关联,并删除变化之前的条带分组中的所述文件。
[0036]优选地,所述集群文件系统还包括:[〇〇37]文件定位模块,用于当接收到查找或读取指令时,根据所述生成的摘要结果值定位存储所述文件的条带分组。
[0038]本发明实施例提出的一种集群文件系统文件存储的方法及集群文件系统,通过按照条带分组的组数划分条带分组的存储范围,各条带分组仅存储文件目录摘要结果值在其存储范围中的文件,使得集群文件系统中不需要中心条带分组和元数据服务器,解决了集群文件系统扩展时受到中心条带分组和元数据服务器限制的问题,进一步的,由于每个条带分组包括多个虚拟节点,每个虚拟节点包括多个物理节点,使得保存在条带分组中的数据更加安全,且文件读写速度更快。【附图说明】
[0039]图1为本发明集群文件系统文件存储的方法第一实施例的流程示意图;
[0040]图2为本发明集群文件系统文件存储的方法第二实施例的流程示意图;
[0041]图3为本发明集群文件系统文件存储的方法第三实施例的流程示意图;
[0042]图4为本发明集群文件系统文件存储的方法第四实施例的流程示意图;
[0043]图5为本发明集群文件系统文件存储的方法第五实施例的流程示意图;
[0044]图6为本发明集群文件系统第一实施例的功能模块示意图;
[0045]图7为本发明集群文件系统第二实施例的功能模块示意图;
[0046]图8为本发明集群文件系统第三实施例的功能模块示意图;
[0047]图9为本发明集群文件系统第四实施例的功能模块示意图;[〇〇48]图10为本发明集群文件系统第五实施例的功能模块示意图;
[0049]图11为集群文件系统中一种可能的条带分组存储范围示意图;
[0050]图12为一种可能的集群文件系统结构示意图。[0051 ]本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。 【具体实施方式】[〇〇52]应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0053]本发明实施例的主要解决方案是:根据集群文件系统中条带分组的组数N,将预设消息摘要算法的结果值范围划分为N个结果值范围,其中:所述条带分组的存储范围与所述N个结果值范围--对应,所述条带分组包括多个虚拟节点,每个虚拟节点包括多个物理节点;获取文件的目录信息,根据所述目录信息通过预设消息摘要算法计算生成摘要结果值; 根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中。
[0054]由于现有技术集群文件系统中设置有中心节点和元数据服务器,同时由于受到中心节点和元数据服务器的限制,使得集群文件系统在进行扩展时成本过高且难以进行。
[0055]本发明提供一种解决方案,使集群文件系统中不需要设置中心节点和元数据服务器,进一步使得集群文件扩张时不再受中心节点和元数据服务器的限制。
[0056]现对本发明涉及的消息摘要算法作简单介绍:
[0057]消息摘要算法是把任意长度的输入糅合而产生长度固定的伪随机输入的算法。 [〇〇58]消息摘要算法的主要特点有:[〇〇59]1、无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出,SHA-1 的变体可以产生192比特位和256比特位的消息摘要。一般认为,摘要的最终输出越长,该摘要算法就越安全。
[0060]2、消息摘要看起来是“随机的”。这些比特看上去是胡乱的杂凑在一起的。可以用大量的输入来检验其输出是否相同,一般,不同的输入会有不同的输出,而且输出的摘要消息可以通过随机性检验。但是,一个摘要并不是真正随机的,因为用相同的算法对相同的消息求两次摘要,其结果必然相同;而若是真正随机的,则无论如何都是无法重现的。因此消息摘要是“伪随机的”。
[0061]3、一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同; 但相同的输入必会产生相同的输出。这正是好的消息摘要算法所具有的性质:输入改变了, 输出也就改变了;两条相似的消息的摘要确不相近,甚至会大相径庭。
[0062]4、消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息。当然,可以采用强力攻击的方法,即尝试每一个可能的信息,计算其摘要,看看是否与已有的摘要相同,如果这样做,最终肯定会恢复出摘要的消息。但实际上,要得到的信息可能是无穷个消息之一,所以这种强力攻击几乎是无效的。
[0063]5、好的摘要算法,没有人能从中找到“碰撞”,虽然“碰撞”是肯定存在的。即对于给定的一个摘要,不可能找到一条信息使其摘要正好是给定的。或者说,无法找到两条消息, 是它们的摘要相同。
[0064]基于上述消息摘要算法特点,提出本发明方法各个实施例。[〇〇65]参照图1,为本发明集群文件系统文件存储的方法的第一实施例,所述集群文件系统文件存储的方法包括:
[0066]步骤S100,根据集群文件系统中条带分组的组数N,将预设消息摘要算法的结果值范围划分为N个结果值范围;[〇〇67]根据集群文件系统中条带分组的数量N,根据预设算法将预设消息摘要算法的结果值范围划分为N个结果值范围,使得所述条带分组的存储范围与所述N个结果值范围一一对应,所述每组条带分组包括多个虚拟节点,每个虚拟节点包括多个物理节点。[〇〇68] 一种可能的实现方式为:所述预设摘要结果算法为MD5算法,将MD5值按照条带分组数量N平均划分为N等分,每一个MD5值范围对应一个条带分组。
[0069]步骤S200,获取文件的目录信息,根据所述目录信息通过预设消息摘要算法计算生成摘要结果值;
[0070]根据文件信息获取文件的目录信息,根据所述目录信息通过预设消息摘要算法计算生成对应的摘要结果值。
[0071]步骤S300,根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中。
[0072]根据各条带分组的存储范围逐一判断所述生成的摘要结果值是否在对应条带分组的存储范围内,若在,则将所述文件存储到对应的条带分组中,若不在,则继续判断是否在下一个条带分组的存储范围进行判断。
[0073]具体实施时,以预设消息摘要算法为MD5算法为例,本实施例包括以下步骤:[〇〇74]1、所述集群文件系统包括4个条带分组,如图11所示,将32位的MD5值分成了 4等份,范围分别为:0x00000000?0x3FFFFFFF,0x4FFFFFFF?0x7FFFFFFF,0x8FFFFFFF? OxBFFFFFFF,OxCFFFFFFF?OxFFFFFFFF;
[0075]2、对应的条带分组的存储范围如图12所示,条带分组Str ip 1的存储范围为: 0x00000000 ?0x3FFFFFFF,条带分组 Str ip2 的存储范围为:0x4FFFFFFF ?0x7FFFFFFF,条带分组Strip3的存储范围为:0x8FFFFFFF?OxBFFFFFFF,条带分组Strip4的存储范围为: OxCFFFFFFF?OxFFFFFFFF;
[0076]3、通过MD5算法计算获得文件A的目录的MD5值为0x2FFFFFFF;[〇〇77]4、根据文件A的目录的MD5值0x2FFFFFFF,将所述文件A存放在条带分组Stripl中。
[0078]另一种可能的情况为,所述集群文件系统中每个条带分组均保存有完整的文件目录结构,具体实施步骤包括:[〇〇79]1、所述集群文件系统包括2个条带分组,如图11所示,将32位的MD5值分成2等份,范围分别为:0x00000000 ?0x7FFFFFFF,0x8FFFFFFF ?OxFFFFFFFF;[〇〇8〇]2、条带分组Str ipl的存储范围为:0x00000000?0x7FFFFFFF,条带分组Strip2的存储范围为:0x8FFFFFFF ?OxFFFFFFFF;[0081 ]3、通过MD5算法计算获得文件A的目录的MD5值为0x2FFFFFFF;[〇〇82]4、根据文件A的目录的MD5值0x2FFFFFFF,将所述文件A存放在条带分组Stripl中;[〇〇83]5、更新所有条带分组中保存的文件目录结构。
[0084]在本实施例中,通过设置无中心条带分组和元数据服务器的集群文件系统,并通过预设消息摘要算法的结果值范围划分条带分组存储范围,使得所述集群文件系统不需要中心条带分组和元数据服务器,进一步使得,所述集群文件系统扩展时不再受中心条带分组和元数据服务器的限制,同时由于每个条带分组包括多个虚拟节点,每个虚拟节点包括多个物理节点,使得所述集群文件系统存储文件时采用多副本技术和数据条带化提高了数据的冗余性和性能。
[0085]进一步的,参照图2,为本发明集群文件系统文件存储的方法的第二实施例,基于上述图1所示的实施例,所述步骤S300,根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中包括:
[0086]步骤S301,根据所述生成的摘要结果值选择对应存储范围的条带分组。
[0087]根据所述生成的摘要结果值,查找所述集群文件系统中对应存储范围包括所述生成的摘要结果值的条带分组。
[0088]步骤S302,根据所述对应存储范围的条带分组中虚拟节点的个数,对所述文件进行切片,生成多个文件片段。
[0089]根据所述对应存储范围的条带分组中的虚拟节点的个数对所述文件进行切片,根据所述虚拟节点的个数将所述文件切片生成多个文件片段,可以预见的,为提高性能,所述文件片段个数为所述虚拟节点的倍数,进一步的,对文件进行切片时,文件片段大小为对应存储设备的页大小的倍数,使得对文件片段数据进行读写时,读写速度更快。
[0090]步骤S303,将所述多个文件片段通过预设分布算法分配到所述条带分组对应的多个虚拟节点中,存储在所述虚拟节点包括的物理节点中,所述虚拟节点包括的每个物理节点均保存有所述文件片段的副本。
[0091]将所述多个文件片段通过预设分布算法分配到所述条带分组对应的多个虚拟节点中,所述预设分布算法根据虚拟节点的负载情况对文件片段的分布进行分配,将所述文件片段存储在所述虚拟节点包括的物理节点中,由于所述虚拟节点包括多个物理节点,为提高数据的安全度,增加冗余,因此在所述虚拟节点包括的每个物理节点中均保存有所述文件片段的副本。
[0092]具体实施时,本实施例的具体实施步骤包括:
[0093]1、所述集群文件系统包括2个条带分组,将32位的MD5值分成了 2等份,范围分别为:0x00000000?0x7FFFFFFF,0x8FFFFFFF?OxFFFFFFFF;
[0094]2、对应的条带分组的存储范围如图12所示,条带分组Str ip 1的存储范围为: 0x00000000 ?0x7FFFFFFF,条带分组 Strip2的存储范围为:0x8FFFFFFF ?OxFFFFFFFF;
[0095]3、通过MD5算法计算获得文件A的目录的MD5值为0x2FFFFFFF;[〇〇96] 4、根据文件A的目录的MD5值0x2FFFFFFF,将所述文件A存放在条带分组Stripl中;
[0097] 5、31:1^口61条带分组又由¥;[冰〇(161和¥;[冰〇(162两个虚拟节点组成,虚拟节点通过多副本技术将数据存储多份于物理节点上,且每个物理节点上都会有一份完整的数据。这样每个虚拟节点内的数据将形成冗余,即使用虚拟节点内有物理节点坏掉也能保证数据的安全可用;[〇〇98] 6、文件经过条带化处理(即切片处理)后分为4块,以冗余的方式存储于VirNodel 和VirN〇de2中的物理节点上,如图12所示,标号1、2、3、4的块即组成一份完整的数据,每个虚拟节点中完整数据保存两份,其中PhyNode 1,PhyNode2,PhyNode2和PhyNode4即为物理节点。
[0099]本实施例中,基于上一实施例的优点,通过根据条带分组中虚拟节点个数对文件进行分片处理,生成多个文件片段,将多个文件片段存储在多个虚拟节点中,同时每个虚拟节点中通过多个物理节点保存文件片段的多个副本使文件片段的数据冗余,使得所述集群文件系统文件存储更为安全,且通过将文件分片存储在多个物理节点中提高了文件读写的速度,进一步增加了所述结群文件系统文件存储的性能。[〇1〇〇]进一步的,参照图3,为本发明集群文件系统文件存储的方法的第三实施例,基于上述图1所示的实施例,所述步骤S300,根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中之后还包括:
[0101]步骤S400,当所述条带分组的组数从N变化为M时,将预设消息摘要算法的结果值划分为M个结果值范围,其中:所述条带分组的存储范围与所述结果值范围一一对应;
[0102]当所述集群文件系统中的条带分组数量发生变化时,重新按照新的条带分组数量M对预设消息摘要算法的结果值进行划分,生成M个结果值范围,使得条带分组的存储范围与所述N个结果值范围---对应;[〇1〇3]一种可能的实现方式为:所述预设消息摘要算法为MD5算法,根据条带分组数量M将32位的MD5值平均划分为M个MD5值范围。
[0104]步骤S500,根据预设平衡算法将存储在变化之前的N个条带分组中的文件迀移到变化之后的M个条带分组中;
[0105]由于条带分组数量增加或减少后,每个条带分组的存储范围也发生了相应变化, 因此根据文件的目录的MD5值通过预设的平衡算法将存储在变化之前的N个条带分组中的原文件迀移到变化之后的M个条带分组中去,使得条带分组中保存的文件的目录的MD5值在所述条带分组的存储范围内。
[0106]在本实施例中,基于上一实施例所述的优点,本实施例在集群文件系统中,条带分组数量发生变化时,通过重新划分条带分组的存储范围,并根据新的条带分组存储范围对文件进行迀移,使得集群文件系统扩展或收缩更加易于操作。
[0107]进一步的,参照图4,为本发明集群文件系统文件存储的方法的第四实施例,基于上述图3所示的实施例,步骤S500,根据预设平衡算法将存储在变化之前的N个条带分组中的文件迀移到变化之后的M个条带分组中包括:
[0108]步骤S501,将存储在所述变化之前的条带分组中的文件关联到所述变化之后的条带分组中;
[0109]根据集群文件系统中条带分组数量变化后新划分的条带分组存储范围,将所述变化之前的N个条带分组中保存的原文件关联到所述变化之后的M个条带分组中,所述关联可以采用文件链接的方式。[〇11〇]步骤S502,当所述集群文件系统空闲时,将存储在所述变化之前的条带分组中的所述文件迀移到所述变化后的条带分组中,同时取消与变化之前的条带分组中所述文件的关联,并删除变化之前的条带分组中的所述文件;[〇111]当所述集群文件系统空闲时,根据文件关联,将需要进行迀移的文件从所述变化之前条带分组迀移到所述变化之后的条带分组中,迀移完成后,取消所述文件关联,同时删除原文件。
[0112]在本实施例中,基于上一实施例所述的优点,集群文件系统中条带分组数量发生变化时,通过先建立文件关联,在文件系统空闲时再根据文件关联迀移文件,使得集群文件系统中条带分组数量发生变化时,能够及时作出响应,降低了对集群文件系统性能的影响。
[0113]进一步的,参照图5,为本发明集群文件系统文件存储的方法的第五实施例,基于上述图1所示的实施例,所述步骤S300,根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中之后还包括:
[0114]步骤S600,当接收到查找或读取指令时,根据所述生成的摘要结果值定位存储所述文件的条带分组;
[0115]当接收到查找指令或者读取指令时,根据条带分组的存储范围,查找所述生成的摘要结果值对应的条带分组,即可根据所述生成的摘要结果值定位存储所述文件的条带分组。
[0116]具体实施时,以预设消息摘要算法为MD5算法为例,本实施例包括以下步骤:
[0117]1、所述集群文件系统包括4个条带分组,如图11所示,将32位的MD5值分成了 4等份,范围分别为:0x00000000?0x3FFFFFFF,0x4FFFFFFF?0x7FFFFFFF,0x8FFFFFFF? OxBFFFFFFF,OxCFFFFFFF?OxFFFFFFFF;[〇118]2、对应的条带分组的存储范围如图12所示,条带分组Str ip 1的存储范围为:0x00000000 ?0x3FFFFFFF,条带分组 Str ip2 的存储范围为:0x4FFFFFFF ?0x7FFFFFFF,条带分组Strip3的存储范围为:0x8FFFFFFF?OxBFFFFFFF,条带分组Strip4的存储范围为: OxCFFFFFFF?OxFFFFFFFF;
[0119]3、通过MD5算法计算获得文件B目录的MD5值为0x5FFFFFFF;[〇12〇]4、根据文件B目录的MD5值0x5FFFFFFF,即可定位所述文件B存储在条带分组Strip2 中。
[0121]另一种可能的情况为,所述集群文件系统中每个条带分组均保存有完整的文件目录结构,具体实施步骤包括:
[0122]1、所述集群文件系统包括4个条带分组,如图11所示,将32位的MD5值分成了4等份,范围分别为:0x00000000?0x3FFFFFFF,0x4FFFFFFF?0x7FFFFFFF,0x8FFFFFFF? OxBFFFFFFF,OxCFFFFFFF?OxFFFFFFFF;
[0123]2、对应的条带分组的存储范围如图12所示,条带分组Str ip 1的存储范围为: 0x00000000 ?0x3FFFFFFF,条带分组 Str ip2 的存储范围为:0x4FFFFFFF ?0x7FFFFFFF,条带分组Strip3的存储范围为:0x8FFFFFFF?OxBFFFFFFF,条带分组Strip4的存储范围为: OxCFFFFFFF?OxFFFFFFFF;
[0124]3、通过MD5算法计算获得文件B目录的MD5值为0x5FFFFFFF;
[0125]4、根据文件B目录的MD5值0x5FFFFFFF,对条带分组中保存的文件目录结构进行查找,通过查找结果定位所述文件B存储在条带分组Str ip2中。
[0126]在本实施例中,基于上一实施例所述的优点,本实施例通过文件目录的摘要结果值,即可定位到存储所述文件的条带分组,使得用户读取所述文件时,可以更快更准确地定位到存储所述文件的条带分组。
[0127]参照图6,为本发明集群文件系统的第一实施例,所述集群文件系统包括:
[0128]条带分组范围划分模块100,用于根据集群文件系统中条带分组的组数N,将预设消息摘要算法的结果值范围划分为N个结果值范围;
[0129]根据集群文件系统中条带分组的数量N,根据预设算法将预设消息摘要算法的结果值范围划分为N个结果值范围,使得所述条带分组的存储范围与所述N个结果值范围一一对应,所述每组条带分组包括多个虚拟节点,每个虚拟节点包括多个物理节点。[〇13〇]一种可能的实现方式为:所述预设摘要结果算法为MD5算法,将MD5值按照条带分组数量N平均划分为N等分,每一个MD5值范围对应一个条带分组。[〇131]摘要结果获取模块200,用于获取文件的目录信息,根据所述目录信息通过预设消息摘要算法计算生成摘要结果值;
[0132]根据文件信息获取文件的目录信息,根据所述目录信息通过预设消息摘要算法计算生成对应的摘要结果值。
[0133]文件存储模块300,用于根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中。
[0134]根据各条带分组的存储范围逐一判断所述生成的摘要结果值是否在对应条带分组的存储范围内,若在,则将所述文件存储到对应的条带分组中,若不在,则继续判断是否在下一个条带分组的存储范围进行判断。
[0135]具体实施时,以预设消息摘要算法为MD5算法为例,本实施例包括以下步骤:
[0136]1、所述集群文件系统包括4个条带分组,如图11所示,将32位的MD5值分成了 4等份,范围分别为:0x00000000?0x3FFFFFFF,0x4FFFFFFF?0x7FFFFFFF,0x8FFFFFFF? OxBFFFFFFF,OxCFFFFFFF?OxFFFFFFFF;[〇137]2、对应的条带分组的存储范围如图12所示,条带分组Str ip 1的存储范围为:0x00000000 ?0x3FFFFFFF,条带分组 Str ip2 的存储范围为:0x4FFFFFFF ?0x7FFFFFFF,条带分组Strip3的存储范围为:0x8FFFFFFF?OxBFFFFFFF,条带分组Strip4的存储范围为: OxCFFFFFFF?OxFFFFFFFF;
[0138]3、通过MD5算法计算获得文件A的目录的MD5值为0x2FFFFFFF;
[0139]4、根据文件A的目录的MD5值0x2FFFFFFF,将所述文件A存放在条带分组Stripl中。
[0140]另一种可能的情况为,所述集群文件系统中每个条带分组均保存有完整的文件目录结构,具体实施步骤包括:
[0141]1、所述集群文件系统包括2个条带分组,如图11所示,将32位的MD5值分成2等份, 范围分别为:0x00000000 ?0x7FFFFFFF,0x8FFFFFFF ?OxFFFFFFFF;
[0142]2、条带分组Stripl的存储范围为:0x00000000?0x7FFFFFFF,条带分组Strip2的存储范围为:0x8FFFFFFF ?OxFFFFFFFF;
[0143]3、通过MD5算法计算获得文件A的目录的MD5值为0x2FFFFFFF;
[0144]4、根据文件A的目录的MD5值0x2FFFFFFF,将所述文件A存放在条带分组Stripl中;
[0145]5、更新所有条带分组中保存的文件目录结构。
[0146]在本实施例中,通过设置无中心条带分组和元数据服务器的集群文件系统,并通过预设消息摘要算法的结果值范围划分条带分组存储范围,使得所述集群文件系统不需要中心条带分组和元数据服务器,进一步使得,所述集群文件系统扩展时不再受中心条带分组和元数据服务器的限制,同时由于每个条带分组包括多个虚拟节点,每个虚拟节点包括多个物理节点,使得所述集群文件系统存储文件时采用多副本技术和数据条带化提高了数据的冗余性和性能。
[0147]进一步的,参照图7,为本发明集群文件系统的第二实施例,基于上述图6所示的实施例,所述文件存储模块300包括:
[0148]条带分组获取单元301,用于根据所述生成的摘要结果值选择对应存储范围的条带分组。
[0149]根据所述生成的摘要结果值,查找所述集群文件系统中对应存储范围包括所述生成的摘要结果值的条带分组。
[0150]文件切片单元302,用于根据所述对应存储范围的条带分组中虚拟节点的个数,对所述文件进行切片,生成多个文件片段。
[0151]根据所述对应存储范围的条带分组中的虚拟节点的个数对所述文件进行切片,根据所述虚拟节点的个数将所述文件切片生成多个文件片段,可以预见的,为提高性能,所述文件片段个数为所述虚拟节点的倍数,进一步的,对文件进行切片时,文件片段大小为对应存储设备的页大小的倍数,使得对文件片段数据进行读写时,读写速度更快。
[0152]文件片段存储单元303,用于将所述多个文件片段通过预设分布算法分配到所述条带分组对应的多个虚拟节点中,存储在所述虚拟节点包括的物理节点中,所述虚拟节点包括的每个物理节点均保存有所述文件片段的副本。
[0153]将所述多个文件片段通过预设分布算法分配到所述条带分组对应的多个虚拟节点中,所述预设分布算法根据虚拟节点的负载情况对文件片段的分布进行分配,将所述文件片段存储在所述虚拟节点包括的物理节点中,由于所述虚拟节点包括多个物理节点,为提高数据的安全度,增加冗余,因此在所述虚拟节点包括的每个物理节点中均保存有所述文件片段的副本。
[0154]具体实施时,本实施例的具体实施步骤包括:
[0155]1、所述集群文件系统包括2个条带分组,将32位的MD5值分成了 2等份,范围分别为:0x00000000?0x7FFFFFFF,0x8FFFFFFF?OxFFFFFFFF;
[0156]2、对应的条带分组的存储范围如图12所示,条带分组Str ip 1的存储范围为: 0x00000000 ?0x7FFFFFFF,条带分组 Strip2的存储范围为:0x8FFFFFFF ?OxFFFFFFFF;
[0157]3、通过MD5算法计算获得文件A的目录的MD5值为0x2FFFFFFF;
[0158]4、根据文件A的目录的MD5值0x2FFFFFFF,将所述文件A存放在条带分组Stripl中;
[0159]5、31:1^口61条带分组又由¥;[冰〇(161和¥;[冰〇(162两个虚拟节点组成,虚拟节点通过多副本技术将数据存储多份于物理节点上,且每个物理节点上都会有一份完整的数据。这样每个虚拟节点内的数据将形成冗余,即使用虚拟节点内有物理节点坏掉也能保证数据的安全可用;[〇16〇]6、文件经过条带化处理(即切片处理)后分为4块,以冗余的方式存储于VirNodel和VirN〇de2中的物理节点上,如图12所示,标号1、2、3、4的块即组成一份完整的数据,每个虚拟节点中完整数据保存两份,其中PhyNode 1,PhyNode2,PhyNode2和PhyNode4即为物理节点。[0161 ]本实施例中,基于上一实施例的优点,通过根据条带分组中虚拟节点个数对文件进行分片处理,生成多个文件片段,将多个文件片段存储在多个虚拟节点中,同时每个虚拟节点中通过多个物理节点保存文件片段的多个副本使文件片段的数据冗余,使得所述集群文件系统文件存储更为安全,且通过将文件分片存储在多个物理节点中提高了文件读写的速度,进一步增加了所述结群文件系统文件存储的性能。
[0162]进一步的,参照图8,为本发明集群文件系统的第三实施例,基于上述图7所示的实施例,所述集群文件系统还包括:
[0163]重划分模块400,用于当所述条带分组的组数从N变化为M时,将预设消息摘要算法的结果值划分为M个结果值范围,其中:所述条带分组的存储范围与所述结果值范围一一对应;
[0164]当所述集群文件系统中的条带分组数量发生变化时,重新按照新的条带分组数量M对预设消息摘要算法的结果值进行划分,生成M个结果值范围,使得条带分组的存储范围与所述N个结果值范围---对应;
[0165]—种可能的实现方式为:所述预设消息摘要算法为MD5算法,根据条带分组数量M 将32位的MD5值平均划分为M个MD5值范围。
[0166]文件迀移模块500,用于根据预设平衡算法将存储在变化之前的N个条带分组中的文件迀移到变化之后的M个条带分组中;
[0167]由于条带分组数量增加或减少后,每个条带分组的存储范围也发生了相应变化,因此根据文件的目录的MD5值通过预设的平衡算法将存储在变化之前的N个条带分组中的原文件迀移到变化之后的M个条带分组中去,使得条带分组中保存的文件的目录的MD5值在所述条带分组的存储范围内。
[0168]在本实施例中,基于上一实施例所述的优点,本实施例在集群文件系统中,条带分组数量发生变化时,通过重新划分条带分组的存储范围,并根据新的条带分组存储范围对文件进行迀移,使得集群文件系统扩展或收缩更加易于操作。
[0169]进一步的,参照图9,为本发明集群文件系统的第四实施例,基于上述图8所示的实施例,所述文件迀移模块500包括:[〇17〇]关联单元501,用于将存储在所述变化之前的条带分组中的文件关联到所述变化之后的条带分组中;[〇171]根据集群文件系统中条带分组数量变化后新划分的条带分组存储范围,将所述变化之前的N个条带分组中保存的原文件关联到所述变化之后的M个条带分组中,所述关联可以采用文件链接的方式。
[0172]迀移单元502,用于当所述集群文件系统空闲时,将存储在所述变化之前的条带分组中的所述文件迀移到所述变化后的条带分组中,同时取消与变化之前的条带分组中所述文件的关联,并删除变化之前的条带分组中的所述文件;[〇173]当所述集群文件系统空闲时,根据文件关联,将需要进行迀移的文件从所述变化之前条带分组迀移到所述变化之后的条带分组中,迀移完成后,取消所述文件关联,同时删除原文件。
[0174]在本实施例中,基于上一实施例所述的优点,集群文件系统中条带分组数量发生变化时,通过先建立文件关联,在文件系统空闲时再根据文件关联迀移文件,使得集群文件系统中条带分组数量发生变化时,能够及时作出响应,降低了对集群文件系统性能的影响。
[0175]进一步的,参照图10,为本发明集群文件系统的第五实施例,基于上述图6所示的实施例,所述集群文件系统还包括:
[0176]文件定位模块600,用于当接收到查找或读取指令时,根据所述生成的摘要结果值定位存储所述文件的条带分组;
[0177]当接收到查找指令或者读取指令时,根据条带分组的存储范围,查找所述生成的摘要结果值对应的条带分组,即可根据所述生成的摘要结果值定位存储所述文件的条带分组。
[0178]具体实施时,以预设消息摘要算法为MD5算法为例,本实施例包括以下步骤:
[0179]1、所述集群文件系统包括4个条带分组,如图11所示,将32位的MD5值分成了 4等份,范围分别为:0x00000000?0x3FFFFFFF,0x4FFFFFFF?0x7FFFFFFF,0x8FFFFFFF? OxBFFFFFFF,OxCFFFFFFF?OxFFFFFFFF;
[0180]2、对应的条带分组的存储范围如图12所示,条带分组Str ip 1的存储范围为: 0x00000000 ?0x3FFFFFFF,条带分组 Str ip2 的存储范围为:0x4FFFFFFF ?0x7FFFFFFF,条带分组Strip3的存储范围为:0x8FFFFFFF?OxBFFFFFFF,条带分组Strip4的存储范围为: OxCFFFFFFF?OxFFFFFFFF;
[0181]3、通过MD5算法计算获得文件B目录的MD5值为0x5FFFFFFF;
[0182]4、根据文件B目录的MD5值0x5FFFFFFF,即可定位所述文件B存储在条带分组Strip2 中。
[0183]另一种可能的情况为,所述集群文件系统中每个条带分组均保存有完整的文件目录结构,具体实施步骤包括:
[0184]1、所述集群文件系统包括4个条带分组,如图11所示,将32位的MD5值分成了 4等份,范围分别为:0x00000000?0x3FFFFFFF,0x4FFFFFFF?0x7FFFFFFF,0x8FFFFFFF? OxBFFFFFFF,OxCFFFFFFF?OxFFFFFFFF;
[0185]2、对应的条带分组的存储范围如图12所示,条带分组Str ip 1的存储范围为: 0x00000000 ?0x3FFFFFFF,条带分组 Str ip2 的存储范围为:0x4FFFFFFF ?0x7FFFFFFF,条带分组Strip3的存储范围为:0x8FFFFFFF?OxBFFFFFFF,条带分组Strip4的存储范围为: OxCFFFFFFF?OxFFFFFFFF;
[0186]3、通过MD5算法计算获得文件B目录的MD5值为0x5FFFFFFF;
[0187]4、根据文件B目录的MD5值0x5FFFFFFF,对条带分组中保存的文件目录结构进行查找,通过查找结果定位所述文件B存储在条带分组Str ip2中。
[0188]在本实施例中,基于上一实施例所述的优点,本实施例通过文件目录的摘要结果值,即可定位到存储所述文件的条带分组,使得用户读取所述文件时,可以更快更准确地定位到存储所述文件的条带分组。
[0189]以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
【主权项】
1.一种集群文件系统文件存储的方法,其特征在于,所述集群文件系统无中心节点和 元数据服务器,所述集群文件系统文件存储的方法包括以下步骤:根据集群文件系统中条带分组的组数N,将预设消息摘要算法的结果值范围划分为N个 结果值范围,其中:所述条带分组的存储范围与所述N个结果值范围一一对应,所述条带分 组包括多个虚拟节点,每个虚拟节点包括多个物理节点;获取文件的目录信息,根据所述目录信息通过预设消息摘要算法计算生成摘要结果 值;根据所述生成的摘要结果值将所述文件存储到对应存储范围的条带分组中。2.如权利要求1所述的方法,其特征在于,所述根据所述生成的摘要结果值将所述文件 存储到对应存储范围的条带分组中的步骤包括:根据所述生成的摘要结果值选择对应存储范围的条带分组;根据所述对应存储范围的条带分组中虚拟节点的个数,对所述文件进行切片,生成多 个文件片段;将所述多个文件片段通过预设分布算法分配到所述条带分组对应的多个虚拟节点中, 存储在所述虚拟节点包括的物理节点中,所述虚拟节点包括的每个物理节点均保存有所述 文件片段的副本。3.如权利要求2所述的方法,其特征在于,所述根据所述生成的摘要结果值将所述文件 存储到对应存储范围的条带分组中的步骤之后还包括:当所述条带分组的组数从N变化为M时,将预设消息摘要算法的结果值划分为M个结果 值范围,其中:所述条带分组的存储范围与所述结果值范围一一对应;根据预设平衡算法将存储在变化之前的N个条带分组中的文件迀移到变化之后的M个 条带分组中。4.如权利要求3所述的方法,其特征在于,所述根据预设平衡算法将存储在变化之前的 N个条带分组中的文件迀移到变化之后的M个条带分组中的步骤包括:将存储在所述变化之前的条带分组中的文件关联到所述变化之后的条带分组中;当所述集群文件系统空闲时,将存储在所述变化之前的条带分组中的所述文件迀移到 所述变化后的条带分组中,同时取消与变化之前的条带分组中所述文件的关联,并删除变 化之前的条带分组中的所述文件。5.如权利要求1-4中任一项所述的方法,其特征在于,所述根据所述生成的摘要结果值 将所述文件存储到对应存储范围的条带分组中的步骤之后还包括:当接收到查找或读取指令时,根据所述生成的摘要结果值定位存储所述文件的条带分组。6.—种集群文件系统,其特征在于,所述集群文件系统无中心节点和元数据服务器,所 述集群文件系统包括:条带分组范围划分模块,用于根据集群文件系统中条带分组的组数N,将预设消息摘要 算法的结果值范围划分为N个结果值范围,其中:所述条带分组的存储范围与所述N个结果 值范围 对应,所述条带分组包括多个虚拟节点,每个虚拟节点包括多个物理节点;摘要结果获取模块,用于获取文件的目录信息,根据所述目录信息通过预设消息摘要 算法计算生成摘要结果值;文件存储模块,用于根据所述生成的摘要结果值将所述文件存储到对应存储范围的条 带分组中。7.如权利要求6所述的系统,其特征在于,所述文件存储模块包括:条带分组获取单元,用于根据所述生成的摘要结果值选择对应存储范围的条带分组; 文件切片单元,用于根据所述对应存储范围的条带分组中虚拟节点的个数,对所述文 件进行切片,生成多个文件片段;文件片段存储单元,用于将所述多个文件片段通过预设分布算法分配到所述条带分组 对应的多个虚拟节点中,存储在所述虚拟节点包括的物理节点中,所述虚拟节点包括的每 个物理节点均保存有所述文件片段的副本。8.如权利要求7所述的系统,其特征在于,所述集群文件系统还包括:重划分模块,用于当所述条带分组的组数从N变化为M时,将预设消息摘要算法的结果 值划分为M个结果值范围,其中:所述条带分组的存储范围与所述结果值范围一一对应; 文件迀移模块,用于根据预设平衡算法将存储在变化之前的N个条带分组中的文件迀 移到变化之后的M个条带分组中。9.如权利要求8所述的系统,其特征在于,所述文件迀移模块包括:关联单元,用于将存储在所述变化之前的条带分组中的文件关联到所述变化之后的条 带分组中;迀移单元,用于当所述集群文件系统空闲时,将存储在所述变化之前的条带分组中的 所述文件迀移到所述变化后的条带分组中,同时取消与变化之前的条带分组中所述文件的 关联,并删除变化之前的条带分组中的所述文件。10.如权利要求6-9中任一项所述的系统,其特征在于,所述集群文件系统还包括: 文件定位模块,用于当接收到查找或读取指令时,根据所述生成的摘要结果值定位存储所述文件的条带分组。
【文档编号】G06F17/30GK106021462SQ201610327132
【公开日】2016年10月12日
【申请日】2016年5月17日
【发明人】张勤, 张建
【申请人】深圳市中博科创信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1