分布式文件存储系统及文件存储方法

文档序号:7815335阅读:393来源:国知局
分布式文件存储系统及文件存储方法
【专利摘要】本发明提供了一种分布式文件存储系统以及文件存储方法。其中存储的文件的文件名为文件的SHA1值。该系统包括:多个存储节点;管理节点,其与所述多个存储节点通信耦合,并且管理所述多个存储节点;其中,所述存储节点以一级目录表达最小存储管理单元,所述存储节点的存储容量按最小存储管理单元划分为一个或多个存储单元并将其按优先级顺序编号,以及所述存储节点的次级目录的名称以其存储的文件的文件名中的预定位置的一个或多个字母来表示。根据本发明的存储系统可以加快文件的检索定位。
【专利说明】分布式文件存储系统及文件存储方法

【技术领域】
[0001]本发明涉及文件存储领域,更具体地,涉及一种分布式文件存储系统及用于所述分布式文件存储系统的文件存储方法。

【背景技术】
[0002]随着数字技术的发展,需要存储的文件量越来越大。对于多年积累的海量的样本文件,如果使用单台存储设备,则该单台存储设备一方面很难具备足够大的存储容量,另一方面还会成为整个数据存取的单点瓶颈。
[0003]一种有效的存储海量样本文件的方式是将样本文件存储到分布式存储系统中。在分布式存储系统中,一方面可以通过增加计算机来加大系统的总存储容量,满足对大容量存储的需求;另一方面网络中的各台计算机可以分别处理存储在当前计算机上的文件,使得在满足存储需求的同时,具有最大化的计算能力。
[0004]但是网络中的不同计算机的存储容量有大有小,通常存在较大的差别,此时需要一种有效机制能够统一利用网络中所有计算机上的存储容量。这种机制还需要具备可扩展性,对于新加入到网络中的计算机,可以平滑的将此计算机上的存储容量纳入到整个存储系统中。


【发明内容】

[0005]为了实现上述目的,本发明提出了一种分布式文件存储系统以及用于所述分布式文件存储系统的文件存储方法。本发明提出可以根据网络中的存储容量最小的计算机来确定最小存储管理单元。于是,网络中的每台计算机的存储容量可以统一按最小存储管理单元划分为一个或多个存储单元,并且每个存储单元可被指定对应的优先级。本发明还提出,以目录表达最小存储管理单元。于是网络中的每台计算机至少包括一个一级目录,其中每个一级目录可以表示一个存储单元。本发明还提出在一级目录下可以增设二级甚至三级或更多的次级目录,这些目录的名称可以与其中存储的文件名相关联。这样可以加快文件的检索定位。
[0006]根据本发明的一方面,提供了一种分布式文件存储系统,其中存储的文件的文件名为文件的SHAl值,所述系统包括:多个存储节点;管理节点,其与所述多个存储节点通信耦合,并且管理所述多个存储节点;其中,所述存储节点以一级目录表达最小存储管理单元,所述存储节点的存储容量按最小存储管理单元划分为一个或多个存储单元并将其按优先级顺序编号,以及所述存储节点的次级目录的名称以其存储的文件的文件名中的预定位置的一个或多个字母来表示。
[0007]在本发明的一些实施例中,次级目录可以包括二级目录和三级目录,所述二级目录和三级目录的名称分别以存储的文件的文件名的前m个和次m个字母表示,所述m是大于或等于I的正整数。
[0008]在本发明的一些实施例中,所述分布式文件存储系统还包括存储单元选择模块,配置为:针对要存储的或要移动的文件,选择具有指定的优先级的存储单元中的与其文件名相符的目录作为目标存储位置。
[0009]在本发明的一些实施例中,所述分布式文件存储系统还包括存储容量均衡模块,配置为:在特定存储节点的特定优先级的存储单元的容量占用率超过第一预定阈值时,触发数据均衡进行数据下移或上移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件下移到次一优先级的存储单元或上移到上一优先级的存储单元,直到所述特定存储节点的所述特定优先级的存储单元的容量占用率降到第二预设阈值。
[0010]在本发明的一些实施例中,所述存储容量均衡模块进一步配置为:在所述特定存储节点的特定优先级的存储单元的容量占用率超过第一预设阈值并且无上一优先级或上一优先级的存储单元的容量占用率大于第三预设阈值时,触发数据均衡进行数据下移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件下移到次一优先级的存储单元。
[0011 ] 优选地,所述存储容量均衡模块进一步配置为:当数据下移过程中,所述次一优先级的存储单元中的容量占用率达到第五预设阈值的存储单元不再参与数据均衡。
[0012]在本发明的一些实施例中,所述存储容量均衡模块进一步配置为:在所述特定存储节点的特定优先级的存储单元的容量占用率超过第一预设阈值并且上一优先级的存储单元的容量占用率小于第四预设阈值时,触发数据均衡进行数据上移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件上移到上一优先级的存储单元。
[0013]优选地,所述存储容量均衡模块还配置为:当在数据上移过程中,所述上一优先级的存储单元中的容量占用率达到第六预设阈值的存储单元不再参与数据均衡。
[0014]在本发明的一些实施例中,所述管理节点以数据库的形式来维护各个存储节点的配置信息、存储容量信息等,并且负责发布调度指令。
[0015]根据本发明的另一方面,提供了一种在上述分布式文件存储系统中存储文件的方法,包括:选择具有足够空闲容量的第一优先级的存储单元;在所选择的存储单元中选择或创建与要存储的文件的文件名相符的目录作为目标存储位置;以及,在所述目标存储位置存储文件,并且更新管理节点的数据库中的对应记录。
[0016]在本发明的一些实施例中,所述方法还包括:在特定的存储节点的容量占用率超过第一预定阈值时,触发数据均衡进行数据下移或下移以将所述特定优先级的存储单元中的部分文件转移到次一优先级或上移优先级的存储单元,直到所述特定优先级的存储单元的容量占用率降到第二预设阈值。
[0017]在本发明的一些实施例中,所述触发数据均衡的步骤包括:在所述特定存储节点的特定优先级的存储单元的容量占用率超过第一预设阈值并且无上一优先级或上一优先级的存储单元的容量占用率大于第三预设阈值时,触发数据均衡进行数据下移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件下移到次一优先级的存储单元。优选地,当数据下移过程中,所述次一优先级的存储单元中的容量占用率达到第五预设阈值的存储单元不再参与数据均衡。
[0018]在本发明的一些实施例中,所述触发数据均衡的步骤包括:在所述特定存储节点的特定优先级的存储单元的容量占用率超过第一预设阈值并且上一优先级的存储单元的容量占用率小于第四预设阈值时,触发数据均衡进行数据上移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件上移到上一优先级的存储单元。优选地,当在数据上移过程中,所述上一优先级的存储单元中的容量占用率达到第六预设阈值的存储单元不再参与数据均衡。
[0019]根据本发明实施例的分布式存储系统能够以统一的方式利用网络中所有计算机上的存储容量,并且通过均衡策略实现了各节点的存储均衡。根据本发明的分布式存储系统还具备良好的可扩展性,可以平滑地将新加入到网络中的计算机上的存储容量纳入到整个存储系统中。此外,本发明实施例通过将存储节点的目录名称与所述目录下存储的文件名相关联,可以加快文件的检索定位。

【专利附图】

【附图说明】
[0020]通过下面结合【专利附图】
附图
【附图说明】本发明的优选实施例,将使本发明的上述及其它目的、特征和优点更加清楚,其中:
[0021]图1示意性地示出了根据本发明实施例的分布式存储系统的示意图;
[0022]图2示意性地示出了根据本发明实施例的管理节点的框图;
[0023]图3示意性地示出了根据本发明实施例的存储文件的方法的流程图。
[0024]在本发明的所有附图中,相同或相似的结构均以相同或相似的附图标记进行标识。

【具体实施方式】
[0025]现在将参考附图来详细描述本发明,附图中示出了本发明的说明性实施例,以使得本领域技术人员能够实现本发明。应该注意:以下附图和示例不意味着将本发明的范围限制为单一实施例,相反通过互换和组合不同实施例的一些或全部所述或所示元素形成其他实施例也是可能的。此外,在可以使用已知组件来部分或完全实现本发明的特定元素的情况下,将仅描述这些已知组件中为了理解本发明所必需的那部分组件,且将省略对这些已知组件中其他部分的详细描述,以使得本发明更突出。除非本文中另行指出,否则本领域技术人员应该理解:尽管本发明的一些实施例描述为用软件实形式现,但是本发明不受限于此,而是也可以用硬件、软件和硬件的组合来实现,且反之亦然。除非本文中另行明确声明,否则在本说明书中,不应将示出了单一组件的实施例视为是限制性的,而是本发明意在包含包括多个相同组件在内的其他实施例,且反之亦然。此外,本发明包含本文中作为示意所引用的已知组件的当前和将来开发的等价物。
[0026]图1示意性地示出了根据本发明实施例的分布式存储系统100的示意图。如图1所示,分布式存储系统100可以包括管理节点110和一组计算机。各台计算机均提供一定的存储容量,也称为存储节点。如图所示,各台计算机可以分别标记为节点120-1、节点120-2、…、节点120-N。为了便于说明,在下文中这些计算机可以统称为120。应该理解,尽管图中仅示出了三个存储节点,但是系统100可以包括更多或更少的存储节点。这些存储节点可以通过网络设备来相互连接。管理节点110负责保存各存储节点的配置信息、存储容量信息,并且还负责发布调度指令等。管理节点110也通过网络设备130与各个存储节点相互通信。应该理解,此处的网络设备可以包括各种有线的或者无线的联网设备,如局域网设备、互联网设备等等。本发明在这方面不受限制。
[0027]在每个存储节点120上,可以按预定的最小存储管理单元(例如1000G)来划分整个可用存储容量。为了充分利用网络中的计算机上的,可以根据存储容量最小的计算机来决定最小存储管理单元。例如,如果容量最小的计算机提供IT的存储容量,则最小存储单元可以规定为1T。应该理解,最小存储单元也可以小于容量最小的计算机提供的存储容量,例如在上述例子中最小存储单元也可以规定为500G。根据上述最小存储管理单元的规定,具有最小存储容量的计算机也至少包含一个存储单元(每个存储单元对应一个最小存储管理单元),而提供较大存储容量的计算机可以包含多个存储单元。
[0028]在本发明中,最小存储管理单元可以以一级目录来表达。于是,各个存储节点上的各个存储单元可以例如标示为Tl,T2,……Tn等等。在一些示例实现中,这些目录是在各自的存储节点上唯一标示的。于是,可以根据存储节点的节点标识和目录标识一起来在系统100中唯一地标示每个存储单元。备选地,这些目录也可以是在整个系统100中唯一标示的。目录与物理存储设备上的存储容量的关联可以通过各种现有的或者将来开发的技术来实现。例如,对于使用Linux文件系统的计算机,针对专用磁盘,可以直接通过mount向目录提供存储容量,而对于共用磁盘,可以利用软链接来关联目录和存储容量。
[0029]每个存储节点的本地目录结构可以设计如下:
[0030]1、存储节点包含的一个或多个存储单元可以按一级目录顺序标示(如T1,T2,...,Tn);
[0031]2、样本文件的文件名为文件的SHAl值,该SHAl值是16进制字符串;3、一级目录(如Tl,Τ2,…,Tn)下可以增设次级目录,并且次级目录的名称以其存储的文件的文件名中的预定位置的一个或多个字母来表示。在一个实施例中,一级目录下可以增设二级、三级子目录以加快样本文件的检索定位。二级子目录和三级子目录的名称可以分别以存储的文件的文件名的前m个和次m个字母表示,所述m可以是大于或等于I的正整数。例如,样本文件的定位方法可以如下:取文件名(SHA1值)的前2个字母来表示二级目录的名称,取文件名的次2个字母来表示三级目录的名称。于是二级目录最多可分为256个子目录(00?FF),三级目录也最多可分为256个子目录(00?FF)。
[0032]在本发明的一些实施例中,每个存储单元还划分优先级。如果一个存储节点只包含一个存储单元,则该存储单元具有第一优先级(即最高优先级)。如果一个存储节点包含多个存储单元,则可以对这些存储单元从高到低指定优先级。优选地,可以规定每个存储单元具有不同的优先级,一个节点的多个存储单元可以编号并且按编号分为I级、2级、…、η级,其中η是该存储节点的存储单元的数目。
[0033]图2示意性地示出了根据本发明实施例的管理节点110的框图。管理节点110负责保存各存储节点的配置信息、存储容量信息,并且还负责发布调度指令等。如果所示,管理节点I1可以包括数据库112、存储单元选择模块114和存储容量均衡模块116。
[0034]存储单元选择模块114配置为:针对要存储的或要移动的文件,选择具有指定的优先级的存储单元中的与其文件名相符的目录作为目标存储位置。
[0035]下面通过样本文件的存储单元选择算法的示例来介绍存储单元选择模块114的操作。该示例既适用于要存储的样本文件,也适用于数据均衡中的要移动的样本文件。
[0036]在该示例中,如前所述,各个存储节点的存储单元可以按优先级分级。如果存储节点只有唯一存储单元时,此存储单元设为I级。如果存储节点拥有多个存储单元,则各存储单元可以进行编号,并且按编号分为I级、2级、…、η级。
[0037]任意给定一个样本文件,指定要求的存储单元优先级级别,则最终的目标存储位置按可以按照如下规则进行选定:
[0038]I)选定目标存储节点和存储单元:
[0039]查询管理节点数据库112中各存储单元的信息。如果存在具有所要求的优先级且未使用的存储单元,则优先选择该存储单元作为目标存储单元。如果存在多个上述未使用的存储单元,则可以随机选择其中之一作为目标存储节点。如果具有所要求的优先级的存储单元都已经被使用,则可以选择剩余存储空间较大的存储单元作为目标存储单元。显然,在目标存储单元确定的情况下,其所在的存储节点即目标存储节点。于是,可以选定目标存储位置中的目标存储节点和目标一级目录(对应于目标存储单元)。
[0040]在该实施例中,如果样本文件是要存储的文件,则所要求的存储单元的优先级总是第一级。而在数据均衡中,在执行数据上移时,所要求的存储单元优先级是文件当前所在存储单元的优先级的上一优先级,而在执行数据下移时,所要求的存储单元优先级则是文件当前所在存储单元的优先级的次一优先级。
[0041]2)选定目标存储子目录:
[0042]可以按照上文所述的次级目录生成规则,根据样本文件的文件名生成次级目录名称。如果在目标存储节点的目标一级目录之下已经存在该次级目录名称,则选择该次级目录作为目标存储子目录,否则可以在该目标一级目录之下创建所生成的次级目录以作为目标存储子目录。应该理解,此处的次级目录可以是单级目录,也可以是多级目录,例如包括二级目录和三级目录,甚至更多级目录。
[0043]3)存储样本文件,并更新数据库中的对应记录:
[0044]可以在选定的目标存储位置下存储该样本文件。该样本文件的存储(或移动)将改变文件的存储位置,并且使得存储单元的存储容量信息发生变化。于是,可以在数据库(或者具体地,数据库中的文件存储位置表以及存储节点存储单元信息表)中添加或更新对应的记录。
[0045]存储容量均衡模块116可以配置为:在特定存储节点的特定优先级的存储单元的容量占用率超过第一预定阈值时,触发数据均衡进行数据下移或上移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件下移到次一优先级的存储单元或上移到上一优先级的存储单元,直到所述特定存储节点的所述特定优先级的存储单元的容量占用率降到第二预设阈值。
[0046]具体地,存储容量均衡模块可以包括下移模块和上移模块。下移模块可以配置为:在所述特定存储节点的特定优先级的存储单元的容量占用率超过第一预设阈值并且无上一优先级或上一优先级的存储单元的容量占用率大于第三预设阈值时,触发数据均衡进行数据下移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件下移到次一优先级的存储单元。优选地,当数据下移过程中,所述次一优先级的存储单元中的容量占用率达到第五预设阈值的存储单元不再参与数据均衡。
[0047]上移模块可以配置为:在所述特定存储节点的特定优先级的存储单元的容量占用率超过第一预设阈值并且上一优先级的存储单元的容量占用率小于第四预设阈值时,触发数据均衡进行数据上移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件上移到上一优先级的存储单元。优选地,当在数据上移过程中,所述上一优先级的存储单元中的容量占用率达到第六预设阈值的存储单元不再参与数据均衡。
[0048]下面将通过示例详述存储容量均衡模块执行的存储单元数据均衡策略:
[0049]I)下移策略:
[0050]当某个存储节点的I级存储单元容量占用率超过预设容量阈值Thl (如60% )时,触发存储容量均衡程序进行数据下移,即把此I级存储单元中的样本文件转移到其他2级存储单元中。
[0051]被转移的样本文件可以在此I级存储单元中随机选择。
[0052]当此I级存储单元中的容量占用率降低到预设容量阈值Th2(如30%)时,结束均衡操作。
[0053]在均衡过程中,当某个2级存储单元容量占用率超过预设容量阈值Th3 (如90% )时,可以标记为下移存储单元容量满,于是此2级存储单元不再参与数据下移均衡。
[0054]2级存储单元数据下移到3级存储单元时,下移策略与上面所述的I级存储单元的数据下移到2级存储单元时的情形相同。
[0055]各级存储单元数据下移策略可以依次类推。
[0056]2)上移策略
[0057]当2级存储单元容量占用超预设容量阈值Th4(如90% )同时I级存储单元容量小于预设容量阈值Th5(如30% )时,可以触发容量均衡程序进行数据上移。
[0058]当2级存储单元容量占用降低到预设容量阈值Th6(如60% )时,可以结束均衡操作。
[0059]当某个I级存储单元容量占用率超预设容量阈值Th7 (如60% )时,可以标记为上移存储单元满,于是此存储单元不再参与数据上移均衡。
[0060]3级存储单元数据上移到2级存储单元时,上移策略与上面所述的2级存储单元的数据上移到I级存储单元时的情形相同。
[0061]各级存储单元数据上移策略可以依次类推。
[0062]3)容量均衡检查的触发
[0063]容量均衡的执行频率可以根据数据增速来设定。例如,可以设定固定时间间隔(如每周/每月)执行一次均衡。
[0064]此外,还可以根据系统100中的存储节点的数量来改变均衡周期。例如,随着机器数量增大,可以适当增大均衡周期。
[0065]4)均衡文件的选择:
[0066]在数据均衡中,要移动的文件可以在本地文件中随机选择
[0067]要移动的文件的目标存储位置可以根据上述的存储单元选择算法来确定。
[0068]在文件移动成功完成后,可以删除本地文件,从而降低本地的容量占用率。
[0069]5)为了提高均衡效率,还可以考虑存储单元之间的定向均衡。
[0070]数据库112可以存储各存储节点的配置信息、存储容量信息等等。例如,数据库112可以包括节点基本存储单元信息表,文件存储位置表等等。下面的表I和表2示出了根据本发明的数据库的示例。
[0071]表I节点基本存储单元信息表的示例
[0072]

【权利要求】
1.一种分布式文件存储系统,其中存储的文件的文件名为文件的SHAl值,所述系统包括: 多个存储节点; 管理节点,其与所述多个存储节点通信耦合,并且管理所述多个存储节点; 其中,所述存储节点以一级目录表达最小存储管理单元,所述存储节点的存储容量按最小存储管理单元划分为一个或多个存储单元并将其按优先级顺序编号,以及所述存储节点的次级目录的名称以其存储的文件的文件名中的预定位置的一个或多个字母来表示。
2.根据权利要求1所述的系统,其中所述次级目录包括二级目录和三级目录,所述二级目录和三级目录的名称分别以存储的文件的文件名的前m个和次m个字母表示,所述m是大于或等于I的正整数。
3.根据权利要求1所述的系统,还包括存储单元选择模块,配置为:针对要存储的或要移动的文件,选择具有指定的优先级的存储单元中的与其文件名相符的目录作为目标存储位置。
4.根据权利要求1所述的系统,还包括存储容量均衡模块,配置为:在特定存储节点的特定优先级的存储单元的容量占用率超过第一预定阈值时,触发数据均衡进行数据下移或上移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件下移到次一优先级的存储单元或上移到上一优先级的存储单元,直到所述特定存储节点的所述特定优先级的存储单元的容量占用率降到第二预设阈值。
5.根据权利要求4所述的系统,其中所述存储容量均衡模块进一步配置为:在所述特定存储节点的特定优先级的存储单元的容量占用率超过第一预设阈值并且无上一优先级或上一优先级的存储单元的容量占用率大于第三预设阈值时,触发数据均衡进行数据下移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件下移到次一优先级的存储单兀。
6.根据权利要求5所述的系统,其中所述存储容量均衡模块进一步配置为:当数据下移过程中,所述次一优先级的存储单元中的容量占用率达到第五预设阈值的存储单元不再参与数据均衡。
7.根据权利要求4所述的系统,其中所述存储容量均衡模块进一步配置为:在所述特定存储节点的特定优先级的存储单元的容量占用率超过第一预设阈值并且上一优先级的存储单元的容量占用率小于第四预设阈值时,触发数据均衡进行数据上移以将所述特定存储节点的所述特定优先级的存储单元中的部分文件上移到上一优先级的存储单元。
8.根据权利要求6所述的系统,其中所述存储容量均衡模块还配置为:当在数据上移过程中,所述上一优先级的存储单元中的容量占用率达到第六预设阈值的存储单元不再参与数据均衡。
9.一种在如权利要求1所述的分布式文件存储系统中存储文件的方法,包括: 选择具有足够空闲容量的第一优先级的存储单元; 在所选择的存储单元中选择或创建与要存储的文件的文件名相符的目录作为目标存储位置;以及 在所述目标存储位置存储文件,并且更新管理节点的数据库中的对应记录。
10.根据权利要求9所述的方法,还包括:在特定的存储节点的容量占用率超过第一预定阈值时,触发数据均衡进行数据下移或下移以将所述特定优先级的存储单元中的部分文件转移到次一优先级或上移优先级的存储单元,直到所述特定优先级的存储单元的容量占用率降到第二预设阈值。
【文档编号】H04L29/08GK104202428SQ201410497559
【公开日】2014年12月10日 申请日期:2014年9月25日 优先权日:2014年9月25日
【发明者】郑辉 申请人:北京网秦天下科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1