本发明属于文件系统海量元数据分布技术领域,特别是涉及一种海量元数据分片分布的方法及装置。
背景技术:
任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等。在分布式文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。用户使用文件系统过程中,文件系统元数据请求占据了所有请求50%以上的比例,诸如(readdir、getattr、open、close、setattr…)文件系统元数据对整个文件系统有着重要的影响。
大数据时代非结构化的数据成爆炸式的增长,采用文件系统管理海量数据的方式越来越广泛,但是文件数目巨大,例如,大规模传感器会产生海量的数据片段,形成数量庞大的小数据文件。通常的元数据都要加载到内存缓存,才能完成文件系统的基本功能,但是数据量巨大的元数据加载到内存缓存过程慢、冲突检测困难。传统的文件系统元数据管理方法已经不能满足数据增长的需要。例如:单目录文件个数为n,那么一个目录在存储设备的空间大小m:m=4kb*n(假设单元数据大小4kb),当n为1亿的时候,元数据数据块m大概0.4tb,以单盘性能100mb/s计算,单是加载元数据到元数据的缓存就需要1个多小时,再加上超大的缓存问题,直接导致单目录无法支持海量数量的文件。
技术实现要素:
本发明目的是提供一种海量元数据分片分布的方法及装置,本发明解决了单目录海量数目的文件,文件系统元数据管理效率低的问题。
为了实现上述目的,本发明采用以下的技术方案:
一种海量元数据分片分布的方法,包括以下步骤:
将单目录的元数据数据块划分为多个元数据分片;
元数据数据块依据预定规则分布在不同的元数据分片上;
将不同的元数据分片分别存储在多个存储设备上。
优选地,元数据数据块依据预定规则分布在不同的元数据分片上,进一步包括:
元数据数据块依据名称哈希到不同的元数据分片上;
同一个元数据分片对应具有相同哈希值的元数据数据块。
优选地,依据名称的哈希值,获得存储在不同存储设备上的元数据分片。
本发明还提供一种海量元数据分片分布的装置,包括:
单目录元数据数据块划分模块,用于将单目录的元数据数据块划分为多个元数据分片;
第一元数据数据块分布模块,用于元数据数据块依据预定规则分布在不同的元数据分片上;
元数据分片存储模块,用于将不同的元数据分片分别存储在多个存储设备上。
优选地,还包括:第二元数据数据块分布模块,用于元数据数据块依据名称哈希到不同的元数据分片上。
优选地,还包括:元数据分片对应模块,用于同一个元数据分片对应具有相同哈希值的元数据数据块。
优选地,还包括:元数据分片获取模块,用于依据名称的哈希值,获得存储在不同存储设备上的元数据分片。
与现有技术相比,本发明具有以下优点:
1.本发明将单目录的元数据数据块划分为多个元数据分片,元数据分片大小的减小,能够实现元数据缓存的加载、同步。
2.不同的元数据分片分别存储在多个存储设备上,能够实现元数据数据块的并发读写,大大提升元数据数据块的读写速度。
3.同一个元数据分片对应具有相同哈希值的元数据数据块,所有元数据分片组成整个目录的命名空间,方便元数据数据块的管理和维护。
附图说明
图1是本发明一种海量元数据分片分布的方法的流程示意图;
图2是本发明单目录的元数据数据块划分和存储元数据分片的结构示意图;
图3是本发明一种海量元数据分片分布的装置的结构示意图。
具体实施方式
为了便于理解,对本发明中出现的部分名词作以下解释说明:
哈希值,哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值成为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:
本实施例提供一种海量元数据分片分布的方法,包括:
将单目录的元数据数据块划分为多个元数据分片;
元数据数据块依据预定规则分布在不同的元数据分片上;
将不同的元数据分片分别存储在多个存储设备上。
请参考图1和图2,图1是本发明一种海量元数据分片分布的方法的流程示意图;图2是本发明单目录的元数据数据块划分和存储元数据分片的结构示意图;本实施例提供一种海量元数据分片分布的方法,包括以下步骤:
步骤s101,将单目录的元数据数据块划分为多个元数据分片;
在本实施例中,将单目录的元数据数据块划分为6个元数据分片。
步骤s102,单目录的所有元数据数据块依据名称哈希到不同的元数据分片上,上面提到的名称包括:目录名称、目录下的文件名称和子目录名称;
同一名称的元数据数据块分布在一个元数据分片上或者多个元数据分片上,但是同一个元数据分片对应具有相同哈希值的元数据数据块。
步骤s103,将不同的元数据分片分别存储在多个存储设备上;
在本实施例中,采用4台存储设备存储6个元数据分片。
步骤s104,依据名称的哈希值,获得存储在不同存储设备上的元数据分片。
在本实施例中,元数据数据块加载过程依据名称的哈希值,找到6个元数据分片,分片加载存储设备上的元数据分片。
本发明提出了海量元数据数据块采用分片分布到存储设备,通过将元数据数据块分割为一定数量的分片进行管理,使元数据数据块能够进行缓存的加载、同步,同时实现元数据数据块的并发读写,大大提升元数据数据块的读写速度。
本实施例提供一种海量元数据分片分布的装置,包括:
单目录元数据数据块划分模块,用于将单目录的元数据数据块划分为多个元数据分片;
第一元数据数据块分布模块,用于元数据数据块依据预定规则分布在不同的元数据分片上;
元数据分片存储模块,用于将不同的元数据分片分别存储在多个存储设备上。
请参考图3,图3是本发明一种海量元数据分片分布的装置的结构示意图;本实施例提供一种海量元数据分片分布的装置,包括:
单目录元数据数据块划分模块31,用于将单目录的元数据数据块划分为多个元数据分片;
第一元数据数据块分布模块32,用于元数据数据块依据预定规则分布在不同的元数据分片上;第一元数据数据块分布模块32包括第二元数据数据块分布模块34和元数据分片对应模块35;第二元数据数据块分布模块34,用于元数据数据块依据名称哈希到不同的元数据分片上;元数据分片对应模块35,用于同一个元数据分片对应具有相同哈希值的元数据数据块;
元数据分片存储模块33,用于将不同的元数据分片分别存储在多个存储设备上;
元数据分片获取模块36,用于依据名称的哈希值,获得存储在不同存储设备上的元数据分片。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。