海量小文件的分布式存储方法和系统转让专利

申请号 : CN201810918747.3

文献号 : CN109271361B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 唐鹏谢彬解维居晓清张楠侯亮

申请人 : 华东计算技术研究所(中国电子科技集团公司第三十二研究所)

摘要 :

本发明提供海量小文件的分布式存储方法和系统,包括将物理磁盘通过逻辑分区形成多个虚拟磁盘;根据海量小文件的文件命名规则进行分类,创建目录索引树;根据文件命名规则解析所存储的海量小文件的文件名,获取其在目录索引树中的存储位置,存储海量小文件,对应的存储目录记为原始目录,并对海量小文件进行冗余存储,对应的存储目录记为冗余目录;当出现所述原始目录、所述冗余目录两者中的文件数据不一致时,触发数据同步与恢复操作。本发明针对海量小文件的分布式存储,在存储大量小文件时通过建立索引及文件名定位,实现在海量数据中迅速定位信息,在可靠性上利用数据冗余来保证,机制简单,容错性强,在保证正确性的同时减少元数据存储空间。

权利要求 :

1.一种海量小文件的分布式存储方法,其特征在于,包括:

磁盘分区步骤:将物理磁盘通过逻辑分区形成多个虚拟磁盘;

建立目录索引树步骤:基于所述虚拟磁盘根据海量小文件的文件命名规则进行分类,根据所述分类创建目录索引树;

文件存储步骤:根据文件命名规则解析所存储的海量小文件的文件名,获取海量小文件在所述目录索引树中的存储位置,存储海量小文件,对应的存储目录记为原始目录,并对海量小文件进行冗余存储,对应的存储目录记为冗余目录;

数据同步与恢复步骤:当出现所述原始目录、所述冗余目录两者中的文件数据不一致的情况时,触发数据同步与恢复操作;

所述建立目录索引树步骤包括:

建立层级节点步骤:将所述分类的类别个数记为P,将第i个分类的类成员个数记为Pi,其中i取正整数,将所述目录索引树的层级定为P+1层,第0层为根节点,其他层按照所述分类的逻辑所属关系进行定义,每层的节点个数与相应的Pi大小相同;

确定原始目录存储分区步骤:根据所述海量小文件的文件命名计算存储分区编号,将所述文件命名规则定义为特征值A、特征值B、特征值C的组合,存储分区编号F按以下公式计算:F=(f(特征值A)%n+特征值B/n+特征值C/n)/P1

其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n为虚拟磁盘的个数;

确定冗余目录存储分区步骤:将所述原始目录的逻辑分区排除,将剩余的n-1个逻辑分区重新编号,存储分区编号F'按以下公式计算:F'=(f(特征值A)%(n-1)+特征值B/(n-1)+特征值C/(n-1))/P1其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n-1为去除原始目录后的虚拟磁盘的个数。

2.根据权利要求1所述的海量小文件的分布式存储方法,其特征在于,所述磁盘分区步骤包括:磁盘编号步骤:将所述物理磁盘进行编号,记为已编号物理磁盘,其中编号记为i,i=

1,2,…,N;

逻辑分区步骤:将m个已编号物理磁盘划分定义为一个虚拟磁盘,所述物理磁盘被划分为N/m向上取整个虚拟磁盘,记为n个逻辑分区。

3.根据权利要求1所述的海量小文件的分布式存储方法,其特征在于,所述特征值A为文件的数据类型,所述数据类型为第一特征值、第二特征值、第三特征值,所述特征值B是年份信息,所述特征值C是月份信息,所述存储分区编号F按以下公式计算:F=(f(类别)%n+年份/n+月份/n)/3,

所述存储分区编号F'按以下公式计算:

F'=(f(类别))%(n-1)+年份/(n-1)+月份/(n-1))/3,其中类别为第一特征值、第二特征值、第三特征值的每个字母的ASCII码值之和。

4.根据权利要求3所述的海量小文件的分布式存储方法,其特征在于,所述存储海量小文件的数据存储是首先解析海量小文件的名称,获取海量小文件的数据类型、年份信息、月份信息,在目录索引树中找到海量小文件的原始目录进行存储,并将海量小文件的副本文件存储到冗余目录;

所述存储海量小文件的数据查找是首先选择待查找文件的数据类型、日期,解析日期,获得待查找数据的年份、月份,以数据类型、日期、月份作为查询条件在目录索引树中查找待查找文件的存储目录,获取到待查找文件。

5.根据权利要求1所述的海量小文件的分布式存储方法,其特征在于,所述触发数据同步与恢复通过监控器装置执行,监控器装置定时检查冗余目录的数据与原始目录的数据是否一致,若冗余目录的数据少于原始目录的数据,则将原始目录数据同步到冗余目录下,否则,则继续定时检查冗余目录的数据与原始目录的数据是否一致;监控器装置定时检查原始目录数据是否丢失,若原始目录的数据少于冗余目录,则将冗余目录数据恢复到原始目录下,否则,则继续定时检查原始目录数据是否丢失。

6.一种海量小文件的分布式存储系统,其特征在于,包括:

磁盘分区模块:将物理磁盘通过逻辑分区形成多个虚拟磁盘;

建立目录索引树模块:基于所述虚拟磁盘根据海量小文件的文件命名规则进行分类,根据所述分类创建目录索引树;

文件存储模块:根据文件命名规则解析所存储的海量小文件的文件名,获取海量小文件在所述目录索引树中的存储位置,存储海量小文件,对应的存储目录记为原始目录,并对海量小文件进行冗余存储,对应的存储目录记为冗余目录;

数据同步与恢复模块:当出现所述原始目录、所述冗余目录两者中的文件数据不一致的情况时,触发数据同步与恢复操作;

所述建立目录索引树模块包括:

建立层级节点模块:将所述分类的类别个数记为P,将第i个分类的类成员个数记为Pi,其中i取大于0的正整数,将所述目录索引树的层级定为P+1层,第0层为根节点,其他层按照所述分类的逻辑所属关系进行定义,每层的节点个数与相应的Pi大小相同;

确定原始目录存储分区模块:根据所述海量小文件的文件命名计算存储分区编号,将所述文件命名规则定义为特征值A、特征值B、特征值C的组合,存储分区编号F按以下公式计算:F=(f(特征值A)%n+特征值B/n+特征值C/n)/P1

其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n为虚拟磁盘的个数;

确定冗余目录存储分区模块:将所述原始目录的逻辑分区排除,将剩余的n-1个逻辑分区重新编号,存储分区编号F'按以下公式计算:F'=(f(特征值A)%(n-1)+特征值B/(n-1)+特征值C/(n-1))/P1其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n-1为去除原始目录后的虚拟磁盘的个数。

7.根据权利要求6所述的海量小文件的分布式存储系统,其特征在于,所述磁盘分区模块包括:磁盘编号模块:将所述物理磁盘进行编号,记为已编号物理磁盘,其中编号记为i,i=

1,2,…N;

逻辑分区模块:将m个已编号物理磁盘划分定义为一个虚拟磁盘,所述物理磁盘被划分为N/m向上取整个虚拟磁盘,记为n个逻辑分区。

8.根据权利要求6所述的海量小文件的分布式存储系统,其特征在于,所述特征值A为文件的数据类型,所述数据类型为第一特征值、第二特征值、第三特征值,所述特征值B是年份信息,所述特征值C是月份信息,所述存储分区编号F按以下公式计算:F=(f(类别)%n+年份/n+月份/n)/3,

所述存储分区编号F'按以下公式计算:

F'=(f(类别))%(n-1)+年份/(n-1)+月份/(n-1))/3,其中类别为第一特征值、第二特征值、第三特征值的每个字母的ASCII码值之和。

9.根据权利要求8所述的海量小文件的分布式存储系统,其特征在于,所述存储海量小文件的数据存储是首先解析海量小文件的名称,获取海量小文件的数据类型、年份信息、月份信息,在目录索引树中找到海量小文件的原始目录进行存储,并将海量小文件的副本文件存储到冗余目录;

所述存储海量小文件的数据查找是首先选择待查找文件的数据类型、日期,解析日期,获得待查找数据的年份、月份,以数据类型、日期、月份作为查询条件在目录索引树中查找待查找文件的存储目录,获取到待查找文件。

10.根据权利要求6所述的海量小文件的分布式存储系统,其特征在于,所述触发数据同步与恢复通过监控器装置执行,监控器装置定时检查冗余目录的数据与原始目录的数据是否一致,若冗余目录的数据少于原始目录的数据,则将原始目录数据同步到冗余目录下,否则,则继续定时检查冗余目录的数据与原始目录的数据是否一致;监控器装置定时检查原始目录数据是否丢失,若原始目录的数据少于冗余目录,则将冗余目录数据恢复到原始目录下,否则,则继续定时检查原始目录数据是否丢失。

说明书 :

海量小文件的分布式存储方法和系统

技术领域

[0001] 本发明涉及分布式存储领域,具体地,涉及海量小文件的分布式存储方法和系统,尤其是涉及一种应用于台风分析系统中的分布式数据组织方法。

背景技术

[0002] 随着科学技术的进步,人类社会正在进入一个数字信息爆炸的时代。互联网的普及为传统行业的发展带来了新的增长点,各行各业纷纷开始向信息化转型,数据的总量正在几何级数增长。面对数据的大爆炸,需要解决的第一个问题就是如何有效存储的问题。显然传统的单机存储模式已经远远满足不了现实的要求。分布式存储成为现代信息存储的必然要求。
[0003] 气象领域也在进行着信息化的过程,台风分析作为气象领域的一个重要分支,在数据存储与分析时同样面临着如优化存储和如何快速定位信息的问题。与普通行业不同的是台风的原始数据来源于各种卫星的侦查的大量卫星云图以及经过人工统计的台风的路径信息。这些数据本身的属于小文件,通常大小小于10M,而且经过多年的累计,云图数量已经达到了上千万张,数据量已经达到T级别甚至是P级别。如何有效的存储这些数据,并且在这些数据中如何快速定位信息,成为气象领域信息化亟待解决的问题。
[0004] 气象台风系统数据的有着数据量大,数据异构和数据噪声严重的情况,在存储这些数据时,首先应该做到快速高效的存储,提高存储资源的利用率;同时,由于也应该减少数据检索的时间,保证在海量数据中可以快速的定位到具体的信息。其次由于这些数据意义非凡,对未来台风的预测和定位有着重要的价值,所以在存储系统中除了需要考虑数据存入和获取的速度,还应该保证系统的抗灾性和及时的恢复能力。常见的分布式文件系统如HDFS,GFS等在利用大量单机创建集群环境上面给出很好的示范。但是这些分布式文件系统有一个共同的问题,即在存储小文件时效率十分低下。例如,HDFS存储文件时是以块为基本单位的,默认的块的大小为64M,当存储一个文件时,如果文件的大小大于块的大小,系统会对文件进行分片操作,使得可以用多个块来存储此文件;而当一个文件的大小远远小于块的大小时,HDFS在做存储处理时也会让其占用整个块。这就导致了HDFS在存储大量小文件时会有严重的资源浪费的情况。由此可见常见的分布式文件系统并不能很好的解决台风分析系统中的数据存储与数据定位的问题。

发明内容

[0005] 针对现有技术中的缺陷,本发明的目的是提供一种海量小文件的分布式存储方法和系统。
[0006] 根据本发明提供的海量小文件的分布式存储方法,包括:
[0007] 磁盘分区步骤:将物理磁盘通过逻辑分区形成多个虚拟磁盘;
[0008] 建立目录索引树步骤:基于所述虚拟磁盘根据海量小文件的文件命名规则进行分类,根据所述分类创建目录索引树;
[0009] 文件存储步骤:根据文件命名规则解析所存储的海量小文件的文件名,获取海量小文件在所述目录索引树中的存储位置,存储海量小文件,对应的存储目录记为原始目录,并对海量小文件进行冗余存储,对应的存储目录记为冗余目录;
[0010] 数据同步与恢复步骤:当出现所述原始目录、所述冗余目录两者中的文件数据不一致的情况时,触发数据同步与恢复操作。
[0011] 优选地,所述磁盘分区步骤包括:
[0012] 磁盘编号步骤:将所述物理磁盘进行编号,记为已编号物理磁盘,其中编号记为i,i=1,2,…,N;
[0013] 逻辑分区步骤:将m个已编号物理磁盘划分定义为一个虚拟磁盘,所述物理磁盘被划分为N/m向上取整个虚拟磁盘,记为n个逻辑分区。
[0014] 优选地,所述建立目录索引树步骤包括:
[0015] 建立层级节点步骤:将所述分类的类别个数记为P,将第i个分类的类成员个数记为Pi,其中i取正整数,将所述目录索引树的层级定为P+1层,第0层为根节点,其他层按照所述分类的逻辑所属关系进行定义,每层的节点个数与相应的Pi大小相同;
[0016] 确定原始目录存储分区步骤:根据所述海量小文件的文件命名计算存储分区编号,将所述文件命名规则定义为特征值A、特征值B、特征值C的组合,存储分区编号F按以下公式计算:
[0017] F=(f(特征值A)%n+特征值B/n+特征值C/n)/P1
[0018] 其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n为虚拟磁盘的个数;
[0019] 确定冗余目录存储分区步骤:将所述原始目录的逻辑分区排除,将剩余的n-1个逻辑分区重新编号,存储分区编号F'按以下公式计算:
[0020] F'=(f(特征值A)%(n-1)+特征值B/(n-1)+特征值C/(n-1))/P1
[0021] 其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n-1为去除原始目录后的虚拟磁盘的个数。
[0022] 本发明还提供海量小文件的分布式存储系统,包括:
[0023] 磁盘分区模块:将物理磁盘通过逻辑分区形成多个虚拟磁盘;
[0024] 建立目录索引树模块:基于所述虚拟磁盘根据海量小文件的文件命名规则进行分类,根据所述分类创建目录索引树;
[0025] 文件存储模块:根据文件命名规则解析所存储的海量小文件的文件名,获取海量小文件在所述目录索引树中的存储位置,存储海量小文件,对应的存储目录记为原始目录,并对海量小文件进行冗余存储,对应的存储目录记为冗余目录;
[0026] 数据同步与恢复模块:当出现所述原始目录、所述冗余目录两者中的文件数据不一致的情况时,触发数据同步与恢复操作。
[0027] 优选地,所述磁盘分区模块包括:
[0028] 磁盘编号模块:将所述物理磁盘进行编号,记为已编号物理磁盘,其中编号记为i,i=1,2,…N;
[0029] 逻辑分区模块:将m个已编号物理磁盘划分定义为一个虚拟磁盘,所述物理磁盘被划分为N/m向上取整个虚拟磁盘,记为n个逻辑分区。
[0030] 优选地,所述建立目录索引树模块包括:
[0031] 建立层级节点模块:将所述分类的类别个数记为P,将第i个分类的类成员个数记为Pi,其中i取大于0的正整数,将所述目录索引树的层级定为P+1层,第0层为根节点,其他层按照所述分类的逻辑所属关系进行定义,每层的节点个数与相应的Pi大小相同;
[0032] 确定原始目录存储分区模块:根据所述海量小文件的文件命名计算存储分区编号,将所述文件命名规则定义为特征值A、特征值B、特征值C的组合,存储分区编号F按以下公式计算:
[0033] F=(f(特征值A)%n+特征值B/n+特征值C/n)/P1
[0034] 其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n为虚拟磁盘的个数;
[0035] 确定冗余目录存储分区模块:将所述原始目录的逻辑分区排除,将剩余的n-1个逻辑分区重新编号,存储分区编号F'按以下公式计算:
[0036] F'=(f(特征值A)%(n-1)+特征值B/(n-1)+特征值C/(n-1))/P1
[0037] 其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n-1为去除原始目录后的虚拟磁盘的个数。
[0038] 优选地,所述特征值A为文件的数据类型,所述数据类型为第一特征值、第二特征值、第三特征值,所述特征值B是年份信息,所述特征值C是月份信息,所述存储分区编号F按以下公式计算:
[0039] F=(f(类别)%n+年份/n+月份/n)/3,
[0040] 所述存储分区编号F'按以下公式计算:
[0041] F'=(f(类别))%(n-1)+年份/(n-1)+月份/(n-1))/3,
[0042] 其中类别为第一特征值、第二特征值、第三特征值的每个字母的ASCII码值之和。
[0043] 优选地,所述数据存储是首先解析海量小文件的名称,获取海量小文件的数据类型、年份信息、月份信息,在目录索引树中找到海量小文件的原始目录进行存储,并将海量小文件的副本文件存储到冗余目录;
[0044] 所述数据查找是首先选择待查找文件的数据类型、日期,解析日期,获得待查找数据的年份、月份,以数据类型、日期、月份作为查询条件在目录索引树中查找待查找文件的存储目录,获取到待查找文件。
[0045] 优选地,所述触发数据同步与恢复通过监控器装置执行,监控器装置定时检查冗余目录的数据与原始目录的数据是否一致,若冗余目录的数据少于原始目录的数据,则将原始目录数据同步到冗余目录下,否则,则继续定时检查冗余目录的数据与原始目录的数据是否一致;监控器装置定时检查原始目录数据是否丢失,若原始目录的数据少于冗余目录,则将冗余目录数据恢复到原始目录下,否则,则继续定时检查原始目录数据是否丢失。
[0046] 与现有技术相比,本发明具有如下的有益效果:
[0047] 1、利用块存储的原理建立分布式存储系统来存储数据,同时依据云图数据的文件名,通过建立索引实现在海量数据中迅速定位信息;
[0048] 2、在存储系统抗灾性方面,本发明采取多分组冗余策略,将分布式集群进行分组,在存储数据时,除了按照索引树将数据存储到指定的目录外,同时将数据另外存储在另外一个分组上,使得存储系统具有较强的容错性;
[0049] 3、为海量小文件存储提供了解决方案,直接利用文件名来获取具体文件的相关信息,在保证正确性的同时减少元数据存储空间。

附图说明

[0050] 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0051] 图1为本发明的目录索引树结构图;
[0052] 图2为本发明的系统总体构架图。
[0053] 图中示出:
[0054] root:第一层根节点;MWHS:第二层湿度数据节点;MWTS:第二层温度数据节点;VIRR:第二层红外数据节点;node1:块1;node2:块2;node3:块3;node4:块4;node5:块5;
node6:块6;node7:块7;node8:块8;node9:块9。

具体实施方式

[0055] 下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
[0056] 本发明公开了一种海量小文件的分布式存储方法,包括:磁盘分区步骤:将物理磁盘通过逻辑分区形成多个虚拟磁盘;建立目录索引树步骤:基于所述虚拟磁盘根据海量小文件的文件命名规则进行分类,根据所述分类创建目录索引树;文件存储步骤:根据文件命名规则解析所存储的海量小文件的文件名,获取海量小文件在所述目录索引树中的存储位置,存储海量小文件,对应的存储目录记为原始目录,并对海量小文件进行冗余存储,对应的存储目录记为冗余目录;数据同步与恢复步骤:当出现所述原始目录、所述冗余目录两者中的文件数据不一致的情况时,触发数据同步与恢复操作。
[0057] 具体地,所述磁盘分区步骤包括:磁盘编号步骤:将所述物理磁盘进行编号,记为已编号物理磁盘,其中编号记为i,i=1,2,…N;逻辑分区步骤:将m个已编号物理磁盘划分定义为一个虚拟磁盘,所述物理磁盘被划分为N/m向上取整个虚拟磁盘,记为n个逻辑分区;
[0058] 具体地,所述建立目录索引树步骤包括:建立层级节点步骤:将所述分类的类别个数记为P,将第i个分类的类成员个数记为Pi,其中i取大于0的正整数,将所述目录索引树的层级定为P+1层,第0层为根节点,其他层按照所述分类的逻辑所属关系进行定义,每层的节点个数与相应的Pi大小相同;确定原始目录存储分区步骤:根据所述海量小文件的文件命名计算存储分区编号,将所述文件命名规则定义为特征值A、特征值B、特征值C的组合,存储分区编号F按以下公式计算:
[0059] F=(f(特征值A)%n+特征值B/n+特征值C/n)/P1
[0060] 其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n为虚拟磁盘的个数;
[0061] 确定冗余目录存储分区步骤:将所述原始目录的逻辑分区排除,将剩余的n-1个逻辑分区重新编号,存储分区编号F'按以下公式计算:
[0062] F'=(f(特征值A)%(n-1)+特征值B/(n-1)+特征值C/(n-1))/P1
[0063] 其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n-1为去除原始目录后的虚拟磁盘的个数。
[0064] 具体地,所述特征值A为文件的数据类型,所述数据类型为第一特征值、第二特征值、第三特征值,所述特征值B是年份信息,所述特征值C是月份信息,所述存储分区编号F按以下公式计算:
[0065] F=(f(类别)%n+年份/n+月份/n)/3,
[0066] 所述存储分区编号F'按以下公式计算:
[0067] F'=(f(类别))%(n-1)+年份/(n-1)+月份/(n-1))/3,
[0068] 其中类别为第一特征值、第二特征值、第三特征值的每个字母的ASCII码值之和。
[0069] 具体地,所述数据存储是首先解析海量小文件的名称,获取海量小文件的数据类型、年份信息、月份信息,在目录索引树中找到海量小文件的原始目录进行存储,并将海量小文件的副本文件存储到冗余目录;所述数据查找是首先选择待查找文件的数据类型、日期,解析日期,获得待查找数据的年份、月份,以数据类型、日期、月份作为查询条件在目录索引树中查找待查找文件的存储目录,获取到待查找文件。所述触发数据同步与恢复通过监控器装置执行,监控器装置定时检查冗余目录的数据与原始目录的数据是否一致,若冗余目录的数据少于原始目录的数据,则将原始目录数据同步到冗余目录下,否则,则继续定时检查冗余目录的数据与原始目录的数据是否一致;监控器装置定时检查原始目录数据是否丢失,若原始目录的数据少于冗余目录,则将冗余目录数据恢复到原始目录下,否则,则继续定时检查原始目录数据是否丢失。
[0070] 本发明还公开了一种海量小文件的分布式存储系统,包括:磁盘分区模块:将物理磁盘通过逻辑分区形成多个虚拟磁盘;建立目录索引树模块:基于所述虚拟磁盘根据海量小文件的文件命名规则进行分类,根据所述分类创建目录索引树;文件存储模块:根据文件命名规则解析所存储的海量小文件的文件名,获取海量小文件在所述目录索引树中的存储位置,存储海量小文件,对应的存储目录记为原始目录,并对海量小文件进行冗余存储,对应的存储目录记为冗余目录;数据同步与恢复模块:当出现所述原始目录、所述冗余目录两者中的文件数据不一致的情况时,触发数据同步与恢复操作。
[0071] 具体地,所述磁盘分区模块包括:磁盘编号模块:将所述物理磁盘进行编号,记为已编号物理磁盘,其中编号记为i,i=1,2,…N;逻辑分区模块:将m个已编号物理磁盘划分定义为一个虚拟磁盘,所述物理磁盘被划分为N/m向上取整个虚拟磁盘,记为n个逻辑分区。
[0072] 具体地,所述建立目录索引树模块包括:建立层级节点模块:将所述分类的类别个数记为P,将第i个分类的类成员个数记为Pi,其中i取大于0的正整数,将所述目录索引树的层级定为P+1层,第0层为根节点,其他层按照所述分类的逻辑所属关系进行定义,每层的节点个数与相应的Pi大小相同;确定原始目录存储分区模块:根据所述海量小文件的文件命名计算存储分区编号,将所述文件命名规则定义为特征值A、特征值B、特征值C的组合,存储分区编号F按以下公式计算:
[0073] F=(f(特征值A)%n+特征值B/n+特征值C/n)/P1
[0074] 其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n为虚拟磁盘的个数;
[0075] 确定冗余目录存储分区模块:将所述原始目录的逻辑分区排除,将剩余的n-1个逻辑分区重新编号,存储分区编号F'按以下公式计算:
[0076] F'=(f(特征值A)%(n-1)+特征值B/(n-1)+特征值C/(n-1))/P1
[0077] 其中,f(特征值A)为特征值A类别名称的编码值之和,%为取模运算,P1为第一层的节点个数,n-1为去除原始目录后的虚拟磁盘的个数。
[0078] 本发明提供的海量小文件的分布式存储系统,可以通过海量小文件的分布式存储方法的步骤流程实现。本领域技术人员可以将海量小文件的分布式存储方法理解为所述海量小文件的分布式存储系统的优选例。
[0079] 在作台风分析台风云图时运用本发明的分布式存储方法时,台风云图的文件名包含着巨大的信息,即数据来源、具体的数据获取时间等信息,故本文在存储数据时大大减少了元数据的存储,而直接利用文件名来获取具体文件的相关信息,这样就可以在保证正确性的同时减少元数据存储空间。因此,首先根据块存储技术,将机器的磁盘组织起来,通过逻辑分区的形式形成n个对外提供服务的虚拟磁盘。利用块存技术将机器的磁盘组织起来,并对所有的磁盘进行编号1至N。将m个磁盘划分一个分区,故共有N/m向上取整个逻辑分区,假设逻辑分区的个数为n。磁盘的逻辑分区功能为后续的数据冗余提供了保障。建立目录索引树,台风云图根据拍摄卫星的不同分为三类,即湿度数据(MWHS)、温度数据(MWTS)和红外数据(VIRR)。根据这三种数据名称及其年份信息建立存储目录的索引树。如图1所示,索引树一共分为5层,第一层为根节点,第二层为三个节点,即MWHS,MWTS,VIRRN。每一个二层节点有18个子节点,即2000年到2017年的数据目录组成了第三层的节点信息。每一个三层节点有12个子节点,即12个月份的信息组成第四层节点。月份的目录下直接存储台风的云图信息的存储目录和冗余目录。其中文件目录的存储计算方法依据为:F=(f(类别)%n+年份/n+月份/n)/3,f(类别)为三个类别的每个字母的ASCII码值之和。冗余目录的分区计算方法依据为:F=(f(类别)%(n-1)+年份/(n-1)+月份/(n-1))/3,即去除原始目录的分区后,将剩余的n-1个分区重新编号,然后按照同样的方法求解。此方法保证了原始数据和冗余数据不在同一个分区上,由于不同的分区由不同的磁盘组成,也就保证了原始数据和冗余数据不在相同的磁盘上,保证了系统的抗灾性。
[0080] 台风云图的文件的存储过程为通过解析文件的名称和年份信息来将文件存储到制定的目录,同时根据一定的规则对数据进行冗余处理,在指定的目录下存储其副本。首先解析文件的名称,获得文件的数据类型,年份和月份信息,然后根据已建立好的索引树找到文件的存储位置,存入其中;同时,得到文件的副本目录,保存副本。查找过程为按照解析文件名,然后依据索引树查找定位。数据的查找条件为数据类别和日期。首先解析日期,获得所需数据的年份和月份,然后以数据类别,年份,月份为条件在目录树上面查找出数据的存储目录,获取数据。在所述系统中设置一个监控器装置,用于数据同步和数据恢复。当监控器装置发现冗余目录的数据缺少原始目录的数据时,则触发系统的同步操作,将其缺少的数据拷贝至冗余目录。当监控器发现原始目录数据丢失时,则触发系统的数据恢复功能,将冗余目录的数据拷贝至原始目录。
[0081] 在台风云图数据处理中,对于大量云图的存储可以利用本方法,先利用块存储的相关技术将不同机器的磁盘组织起来,并提供逻辑分区供存储数据使用,然后建立索引树,对数据具体的存储目录和冗余目录进行规划,实现云图数据的存储,查找,同步和恢复;:在小文件处理中,可以利用本方法存储海量的小文件。块存储提供了分布式的环境,然后根据具体的规则建立索引树,实现小文件的存储,查找,同步和恢复。
[0082] 本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
[0083] 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。