用于机群文件系统的元数据存储系统和管理方法

文档序号:6438704阅读:151来源:国知局
专利名称:用于机群文件系统的元数据存储系统和管理方法
技术领域
本发明涉及机群文件系统体系结构,尤其涉及机群文件系统中的元数据存储及相关的数据迁移机制。
背景技术
随着信息技术的发展,人类产生、保存和处理的数据越来越多。文件的数量随着数据量的增加而明显增加,这给基于传统的动态随机存储器(Dynamic Random Access Memory,DRAM) +硬盘驱动(Hard Disk Drive,HDD)存储架构的机群文件系统的元数据存储系统提出了严峻的挑战在存储规模方面,元数据的存储总量越来越大。机群文件系统中要保存的文件数量越来越多,特别是随着互联网应用的高速发展,文件以多种形式存在,如邮件、照片、视频、报表等。伴随着数据总量的增多,文件总量也以每年近两倍的速度增长,这使得机群文件系统的元数据总量迅速膨胀。在元数据操作性能方面,性能的需求也逐渐提高。高性能计算逐渐由CPU密集型向I/O密集型转变,系统的I/O效率对性能有着重要的影响,这也就要求存储系统有很高的元数据操作性能。此外互联网的高速发展也对海量存储系统的元数据操作性能有更高的要求。这些挑战使基于传统DRAM+HDD存储架构的元数据存储系统无法满足需求。这是因为由于元数据总量较大,DRAM无法满足所有元数据请求,一部分元数据I/O请求将发往 HDD,而HDD巨大的I/O时延将成为系统的性能瓶颈。相对于HDD,固态硬盘SSD (Solid-state Drive)具有高带宽、低时延的优势,但使用SSD存储元数据也面临很多问题。对于基于传统DRAM+HDD存储架构的机群文件系统的元数据存储组织方式,一般采用基于目录树存储或者将元数据保存在数据库中,这会造成元数据I/O模式以小粒度随机I/O为主,这种I/O也并不适合于SSD。因为,SSD的性能受到 I/O模式的影响,SSD的顺序I/O性能好于随机I/O性能。其次,小粒度随机写会减少SSD 的使用寿命,且会造成SSD的碎片化,对后续I/O操作造成不利影响。此外,SSD的价格比较昂贵,且单盘存储容量较小,这些都会影响SSD的使用。而对那些基于NVRAM(Non-VolatiIe Radom Access Memory,非易失性随机访问存储器)、PRAM (Phase-change RAM,相变存储器材)之类新型存储介质的元数据存储组织结构,如将元数据单独存储、压缩存储或者与小文件一起联合存储,由于上层是按字节寻址,所以访问模式还是以小粒度随机I/O为主,这也并不适合SSD。现有的针对特定负载所设计的SSD存储系统,根据SSD的I/O特性做针对性的优化,例如通过写缓冲区将小粒度随机写转化成大粒度顺序写,充分发挥SSD的性能并保证其使用寿命。但这类系统在设计实现上依赖于负载特征,并根据这些特征做了很多简化。由于机群文件系统的元数据存储系统有自己的性能需求和I/O负载特征,所以这些系统也不能直接应用到元数据存储中。现有的采用DRAM+SSD+HDD三层存储的存储系统,一般有三种设计策略SSD做HDD的缓冲、HDD作SSD的写缓冲和数据分别放置在SSD和HDD上。对于第一和第三种策略,由于SSD会接受大量小粒度随机I/O而造成快速磨损,所以SSD的使用寿命得不到保证。第二种将HDD作为SSD写缓冲的策略,对于机群文件系统的元数据存储应用来说,主要有两个问题一是数据最终放到SSD上,当数据规模很大时,需要大量SSD,这样增加了系统造价; 二是HDD作为写缓冲,有可能有部分元数据读请求会发往HDD,这样就大大提高元数据读请求时延,读操作是个同步操作,读请求时延过大会影响这个系统的性能,因此,该第二种策略也不能满足机群文件系统的元数据存储系统的需求。

发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供用于机群文件系统中元数据存储系统和管理方法,在解决HDD引起的性能瓶颈的同时,既充分发挥SSD的性能优势,又保证了 SSD的使用寿命。本发明的目的是通过以下技术方案实现的一方面,本发明提供了一种用于机群文件系统中的元数据存储系统,该系统包括 DRAM 禾口 SDD ;所述DRAM包括多个元数据缓冲区和元数据索引单元;每个元数据缓冲区中的元数据是按照写入的时间依次顺序写入的,每个元数据缓存区对应一个用于存储该缓冲区的元数据索引信息的头结构;每次将元数据缓冲区中的数据写回到SSD上时形成一个新的元数据索引单元,用于保存该元数据缓冲区的头结构所包含的元数据索引信息;所述SSD上包括元数据文件,所述元数据文件包含按照写回时间的顺序组织的多个元数据存储单元;每次将一个元数据缓冲区中的数据写回到SSD上时形成一个新的元数据存储单元,用于保存从该元数据缓冲区写入的元数据;每个元数据存储单元对应于DRAM 中的一个元数据索引单元。上述的元数据存储系统中,还包括用于保存来自SSD的元数据的HDD。上述的元数据存储系统中,所述头结构包括一个Bloom Filter和一个哈希表,所述Bloom Filter用来记录该元数据缓冲区中保存了哪些元数据项,所述哈希表用于维护元数据项的标识符以及该元数据项在元数据缓冲区中偏移量的映射。上述的元数据存储系统中,SDD上还包括用于存储元数据索引信息的元数据索引文件;DRAM中还包括读缓存模块,用于缓存从SSD读取的元数据。又一方面,本发明提供了一种用于上述的元数据存储系统的元数据管理方法,所述方法包括步骤1)将元数据按照写入的时间依次顺序写入DRAM中的元数据缓冲区中;步骤幻当一个元数据缓冲区被写满后,将其顺序写回到SSD上以形成一个新的元数据存储单元,同时将其头结构中对应的元数据索引信息以元数据索引单元的形式保存在 DRAM中,所述元数据存储单元按照写回时间的顺序组织到一个元数据文件中。上述方法中,所述头结构包括一个Bloom Filter和一个哈希表,所述Bloom Filter用来记录该元数据缓冲区中保存了哪些元数据项,所述哈希表用于维护元数据项的标识符以及该元数据项在元数据缓冲区中偏移量的映射。上述方法中,步骤2)还可以包括在将一个元数据缓冲区顺序写回到SSD的同时,将其对应的元数据索引信息也顺序写回到SSD上的元数据索引文件中。
上述方法中,步骤幻还可以包括在将一个元数据缓冲区写回到SSD时,根据其头结构中的元数据项的标识符来判断SSD上哪些数据项已经无效的步骤;以及在已经无效的元数据项所在的元数据存储单元对应的元数据索引单元中对该元数据项做无效标记的步
马聚ο上述方法中,可以以64叉树和链接结合的方式来组织的Bloom Filter,每颗64叉树的深度不超过2层,多个64叉树组成一个链表,其中每个64叉树的非叶子节点的对应的 Bloom Filter是其孩子节点的Bloom Filter的异或结果。上述方法中,还可以包括将元数据存储单元从SSD迁移到HDD的步骤,该步骤包括比较元数据存储单元的访问热度与预定阈值以判断该元数据存储单元是否需要被迁移;当元数据存储单元的访问热度小于预定阈值,则将其从SSD中迁移到HDD上,反之将该元数据存储单元中有效的元数据项写入DRAM中的元数据缓冲区中;其中所述元数据存储单元的访问热度以如下公式进行计算HEATm =ux —+ (1 -μ)χHEAT1 ;(O <Μ < 1)
NlJM其中,HEATi+1表示该元数据存储单元的当前访问热度,HEATi表示该元数据存储单元上次的访问热度,u是(0,1)上的值,用于控制上次访问热度对当前访问热度的影响,K表示该元数据存储单元在该时间段内被访问的次数,NUM表示在该时间段内所接收的从SSD 上读取元数据的请求个数;所述阈值根据元数据访问的特征来设定。上述方法中,还可以包括对于那些无效元数据项比例超过50%的元数据存储单元,不需要判定其访问热度,直接将其从SSD上迁移到HDD上的步骤。上述方法中,当SSD上可用空间与SSD总空间的比例小于一定空间阈值时,执行所述将元数据存储单元从SSD迁移到HDD的步骤,所述空间阀值在15%到20%之间。上述方法中,每个固定的时间间隔执行所述将元数据存储单元从SSD迁移到HDD 的步骤,对于元数据写负载较重的应用,所述时间间隔不能小于30分钟。又一方面,本发明提供了一种机群文件系统,所述机群文件系统包括上述的元数据存储系统。与现有技术相比,本发明的优点在于用DRAM+SSD+HDD三层架构来存储机群文件系统的元数据,采用基于追加写方式保存元数据,可以有效提高机群文件系统元数据操作的性能。而基于访问热度的数据迁移方法可以将更多经常访问的元数据留在SSD上,提高了元数据读操作的性能。


以下参照附图对本发明实施例作进一步说明,其中图1为根据本发明实施例的元数据管理系统架构示意图;图2为根据本发明一个实施例的元数据缓冲区头结构示意3为根据本发明实施例的Bloom filter组织结构示意图;图4为根据本发明实施例的基于访问热度的数据迁移方法流程图;图5为采用和未采用本发明的元数据管理方法的机群文件系统中元数据的创建操作性能比较示意图6为采用和未采用本发明的元数据管理方法的机群文件系统中元数据的查询操作性能比较示意图。
具体实施例方式为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明, 并不用于限定本发明。在本发明的一个实施例中,提供了用于机群文件系统的元数据存储系统,该系统包括用作系统内存的易失性随机存储器(例如DRAM或SRAM)、固态硬盘SDD和/或传统的硬盘驱动HDD。其中,采用DRAM来保存元数据存储结构的一些辅助信息,并缓存部分元数据,以提高性能;而元数据被持久化地存储在SSD上,或者SSD和HDD上。图1给出了根据本发明一个实施例的用于机群文件系统的元数据存储系统。该系统包括三层存储架构,即DRAM+SDD+HDD。DRAM中包括多个元数据缓冲区,每个元数据缓冲区可以保存写入的多个文件或目录的元数据信息(也可以称为元数据项)。由于每个元数据项的大小不同,为了能够在元数据缓冲区中快速定位元数据,每个元数据缓冲区还对应一个头结构,头结构中包含一个哈希表和一个Bloom fiIter (布隆过滤器,BF)结构。BF结构利用位数组表示一个集合,能够高效判定一个元素是否属于某个集合。而哈希表则可以保存该元数据在集合中的信息,例如保存元素在集合中的位置信息。图2给出了根据本发明一个实施例的头结构示意图,其中,该哈希表用于维护元数据项的标识符以及该元数据项在元数据缓冲区中偏移量的映射,而BF结构用来记录该元数据缓冲区中保存了哪些元数据项。如图2所示,头结构中包含两个数据结构=Bloom Filter和哈希表,其中bloom filter是一个有0,1组成的位数组,每个1对应于元数据缓冲区中的一个元数据项。而哈希表则维护了元数据缓冲区中每个元数据项到该元数据项在元数据缓冲区中偏移的映射关系。通过Bloom Filter,系统可以快速确定某个元数据项是否在某个元数据存储单元中,如果在,则再通过哈希表查找到该元数据项的偏移,进而读出该元数据项。因此可以通过这个头结构,迅速在元数据缓冲区中定位一个元数据项。此外,为了提高元数据读操作的性能,DRAM中还包含一个读缓存模块,它将读出的元数据以 LRU (Least Recently Used,最近最少使用)链表的方式组织起来。DRAM中还包括元数据索引单元,所述元数据索引单元主要记录已经存储到SSD上的元数据的索引信息,当将元数据缓冲区中的数据写回到SSD上时,该缓冲区的头结构所包含的bloom filter和哈希表以元数据索引单元的形式保存在DRAM中。这样,通过元数据索引单元可以快速定位SSD上的元数据。下面结合元数据的写操作以及将元数据保存到 SSD上的过程来介绍元数据索引单元的形成过程及其内容。对于元数据的写操作,写入的元数据先保存在元数据缓冲区中,以追加写的方式将元数据写入元数据缓冲区中,也就是采用类似写日志的方式,将元数据按照写入的时间依次顺序写入元数据缓冲区中,每次写操作都是从上一次写操作结束的位置开始。当一个元数据缓冲区写满后,则需要将其写回到SSD上。在写回某个元数据缓冲区的过程中,该元数据缓冲区不能响应新的元数据项写请求,新来的元数据项将会写到其它没有满的元数据缓冲区中。
在SSD上,元数据是以元数据存储单元的形式保存,当DRAM中一个元数据缓冲区被写满后将其顺序写回到SSD上,形成一个新的元数据存储单元。元数据存储单元按照写回时间的顺序组织到一个元数据文件中,即每次写回元数据缓冲区的操作也都是追加写。 当元数据写入SSD后,元数据缓冲区中的元数据要被释放,但是该缓冲区对应的头结构中的元数据索引信息(即,该头结构中所包含的bloom filter和哈希表)将会以元数据索引单元的形式保存在DRAM中。这样,SSD上每个元数据存储单元对应DRAM中的一个元数据索引单元此外元数据索引单元中还有一些其它信息,例如该元数据存储单元中无效的元数据项的标记等。这是因为元数据都是以追加写的方式写入到元数据缓冲区的,没有区分是写入新的元数据还是对已有元数据的更新。因此在将一个元数据缓冲区写回到SSD时,可以根据其头结构中的元数据项的标识符来判断是新创建的元数据还是更新的元数据。如果要写回到SSD的元数据项的标识符出现在已有的元数据索引单元中,则说明是对已有元数据的更新,以前的在SSD上与该标识符相同的其他元数据项都已经无效了,这需要在已经无效的元数据项所在的元数据存储单元对应的元数据索引单元中对该元数据项做无效标记,关于无效标记的信息也保存在元数据索引单元中。当SSD的空间不足时,释放那些无效的元数据项或者将那些不经常被访问的元数据项迁移到HDD上来进行保存。与现有技术相比,在本实施例中,对于元数据的写操作,只要将元数据项写入内存的元数据缓冲区中就可以返回,采用构建元数据缓冲池的方式来减少元数据缓冲区写回操作对性能的影响。当元数据缓冲区满的时候,则将这些元数据一次性顺序写到SSD上,形成新的元数据存储单元,这样就将多次小粒度的元数据项写操作转换成了一次大粒度的元数据存储单元顺序写操作。而对于元数据的更新操作,如果直接对SSD上的旧元数据项进行更新,由于上层选择元数据项进行更新时具有随机性且元数据项一般很小,则会引入大量小粒度的随机写,这会对SSD的性能和使用寿命造成不利影响。因为在上述实施例中将更新的元数据项当作新写入的元数据来处理,将其直接写入DRAM的元数据缓冲区中,待元数据缓冲区满后顺序写回到SSD上,并对已经无效的元数据项所在的元数据存储单元的索引单元上做标记。通过这种方式,可以将元数据更新操作带来的小粒度随机写转换成了与元数据写操作相同的大粒度顺序写操作。采用这种写操作模式可以避免SSD碎片化,充分发挥SSD的性能并保证了 SSD的使用寿命。在本发明的又一个实施例中,为了提高可靠性,当元数据缓冲区被写回时,可以将其对应的头结构中元数据索引信息也顺序写回到SSD上,保存到SSD上的元数据索引文件 (meta index file)中。每个SSD上的元数据存储单元对应DRAM中的一个元数据索引单元。为保证元数据索引信息的可靠性,内存中元数据索引单元在SSD上也可以有一份拷贝, 保存在元数据索引文件中,用以在系统出现故障或者重启时重建DRAM中的元数据索引信肩、ο在本发明的又一个实施中,提供了用于上述元数据存储系统的元数据管理方法。 该方法主要包括写入元数据的步骤、读出元数据的步骤以及在上述的三层架构中迁移元数据的步骤。更具体地,对于元数据的写操作已经在上文作了介绍,不论是写入新的元数据,还是更新已有的元数据,都是将元数据按照写入的时间依次顺序写入元数据缓冲区中,每次写操作都是从上一次写操作结束的位置开始。对于元数据的读操作,关键步骤是实际上对元数据项的查询操作,也就是通过检索DRAM中的元数据索引单元来定位要读取的元数据项在SSD上具体位置。通过元数据索引单元中的BF结构确定所需元数据项在SSD上的哪个元数据存储单元中,再通过哈希表确定元数据项在该元数据存储单元的内部偏移。当系统中元数据总量较大时,BF的个数也会变多,采用线性查找效率较低。为提高BF的查询效率,在一个实施例中,可以采用链表+64叉树的方式组织BF结构。图3根据本发明一个实施例的Bloom Filter的组织架构示意图。如图3所示。将多个BF分组,每64个BF组织成一个BF组(Bloom Filter Group),每个BF组构成1颗64叉树,每颗64叉树的深度不超过2层,含有其64个叶子节点上BF的信息。当有64个BF组时,再将这64个BF组组织成一棵BF组树(Bloom Filter Group tree),每棵BF组树中的 BF组组织成一个链表。这样每个BF组树就含有4096个BF,当BF数目进一步增加时,不增加树的深度,而是重新组织一棵BF组树,其中的各个BF组树也组织成一个链表。在查找时,首先访问BF组树链表,确定元数据项在哪棵树上,然后再在BF组树中确定在某个BF上。对于BF组织成的树,非叶子节点的BF是其孩子节点的BF的异或结果, 这样非叶子节点就含有了其孩子节点的所有信息。在查询时,如果发现要查询的元数据项没有在非叶子节点的BF中命中,则不需要再查询其孩子节点的BF,如果表明含有BF,再依次查询其孩子结点。与线性查找相比,采用树来组织BF可以将查找的时间复杂度从O(n) 降到O(IogN)。采用这种64叉树与链表相结合的方法,一方面可以加快BF的查找效率,另外也可以控制BF树的深度。对于元数据的迁移操作,即在上述的三层架构中迁移元数据的步骤如下当DRAM 中一个元数据缓冲区被写满后将其顺序写回到SSD上,形成一个新的元数据存储单元,同时将该缓冲区对应的头结构中的元数据索引信息将会以元数据索引单元的形式保存在 DRAM中。SSD上每个元数据存储单元对应DRAM中的一个元数据索引单元。其中,元数据存储单元按照写回时间的顺序组织到一个元数据文件中,即每次写回元数据缓冲区的操作也都是追加写。由于SSD存储空间有限,所以可以周期性地或者在SSD空间不足时将部分元数据从SSD上迁移到HDD上,即释放那些无效的元数据项或者将那些不经常被访问的元数据项迁移到HDD上。与SSD上的元数据文件类似,从SSD迁移出的元数据也是以日志文件的形式保存到HDD上,迁移的粒度是元数据存储单元。当删除一个元数据存储单元时,还需要对应回收其元数据索引单元占用的DRAM和SSD上元数据索引文件对应项的空间。与现有技术相比,对元数据采用追加写方式,可以消除SSD上的小粒度随机写操作,并通过Bloom Filter+哈希表的两级元数据索引机制加速元数据的查询操作,使SSD上的1/0操作满足“大粒度 顺序写,并发随机读”的特征,既充分发挥了 SSD的性能优势,又保证了 SSD的使用寿命。同时与使用数据库或者多级间接索引的方式组织元数据相比,基于追加写的元数据组织结构更加节约SSD的存储空间。在本发明的又一个实施例中,为了更充分利用SSD的存储空间以提高系统的性价比,采用了基于访问热度的迁移操作来进行元数据的迁移,即利用文件系统元数据访问具有热度的特点,将那些经常 访问(访问热度较高)的元数据保存在SSD上,而那些不经常访问的(访问热度较低)的元数据则被迁移出SSD。图4给出了根据本发明一个实施例的从SSD向HDD进行数据迁移的流程示意图。 其中,采用类似FIFO的方式进行数据迁移,通过将元数据存储单元的访问热度与设定的阈值进行比较来判定该元数据存储单元是否需要被迁移。当元数据存储单元的访问热度大于阈值,则不需要进行迁移,反之则将其从SSD中迁移到HDD上。其中,对每个元数据存储单元的访问热度按如下公式进行计算HEATm = μ χ + (1 -Μ) χ HEAT1 ; (0 < Μ < 1)其中,HEATi+1表示该元数据存储单元的当前访问热度,HEATi表示该元数据存储单元上次的访问热度,u是一个(0,1)上的值,用于控制上次访问热度对当前访问热度的影响。K表示该元数据存储单元在该时间段内被访问的次数,NUM表示在该时间段内上层总共
发出的元数据读请求个数。因此,^7表示在某时间段内该元数据存储单元的访问次数占
总体访问的比例。访问比例越高,表明在该时间段内该元数据存储单元的访问越频繁,该元数据存储单元的访问热度就越大。通过使用最近一段时间内的访问比例来计算元数据单元的访问热度,能够准确反映数据的最近一段时间的访问频度,避免很久之前的访问操作对当前访问热度的影响。而且加入了之前访问热度对当前访问热度的影响,防止了某些元数据存储单元短期内访问频度的剧烈变化所造成访问热度的波动。系统会周期性迭代计算每个元数据存储单元的访问热度,使访问热度能够反映当前元数据存储单元的访问情况。例如,可以每隔固定的时间间隔来计算访问热度,该时间间隔可以自行设置,经过测试在系统比较繁忙的时候,可以设置为30s或者更短。为保证实现简单、高效,一般将参数K取定值,参数u可以根据负载的特征进行调整。上层发出的元数据读请求都有一个序列号,且这些序列号是连续的。对于某个元数据存储单元,系统记录其最近K次访问的请求序列号,那么在该元数据被访问K次的这段时间内上层发出元数据读请求的个数NUM则可以用第K次访问和第1次访问的序列号之差获得。通过这种方法计算每个元数据存储单元的访问热度,系统只需要记录很少的数据,而且计算也比较高效。在了解了系统中每个元数据存储单元的访问热度后,采用类似于先进先出(Fisrt In First Out,FIFO)的方式(将那些访问热度较低的元数据存储单元迁移出SSD。迁移操作可以由后台的迁移线程完成。其中,迁移阈值的设定主要基于元数据访问的特征,对于元数据访问空间局部性较强的应用,可以将阈值设定的大一些。每次迁移操作都是从SSD上元数据文件的文件头开始,迁移完成后,调整元数据文件的文件头的位置。当迁移到某个元数据存储单元时,采用阈值判定的方式,如果其热度低于阈值,就需要将该元数据存储单元迁移出SSD,保存到 HDD的元数据日志文件中。如果元数据存储单元的热度超过阈值,则说明该元数据存储单元保存的元数据经常被访问,需要继续保存在SSD上,所以将该元数据存储单元读入内存, 将其中有效的元数据项写入元数据缓冲区中,而该元数据存储单元在SSD上的空间就可以重新使用。随着元数据缓冲区被写回,该元数据存储单元中经常被访问的元数据又回到了SSD上。这样,可以保证每次迁移操作得到的SSD可用空间都是连续的,从而使系统在写回元数据缓冲区时,都是大粒度的顺序写操作。上述的迁移步骤也可以由专用的迁移线程来负责执行。在又一个实 施例中,在上述迁移操作中还包括周期性回收无效元数据项占用的 SSD空间的操作。由于对于元数据的更新操作采用异地更新的策略,所以元数据存储单元中可能含有无效的元数据项,这些无效的元数据项被记录在该元数据存储单元对应的索引单元上,通过元数据存储单元对应的元数据索引单元可以计算出该元数据存储单元中含有的无效元数据的比例。迁移线程会周期性回收那些无效元数据项比例超过50 %的元数据存储单元。回收时将整个元数据存储单元读到内存,将有效的元数据项放到元数据缓冲区中,然后对该元数据存储单元做上相应标志。为防止元数据文件出现空洞,所以此时这部分空间还不能用,当迁移线程迁移到该元数据存储单元时,迁移线程不需要判定其访问热度,直接回收该元数据存储单元占用的空间。在又一个实施例中,迁移操作采用周期性启动和阈值启动相结合的方式。为保证元数据写操作的性能,SSD上应时刻保证有一定量的空间,所以迁移线程会周期性启动。迁移线程的启动周期应该基于系统的元数据写操作的负载,对于元数据写负载较重的应用, 启动周期不能小于30分钟。此外,当SSD上可用空间小于一定阈值(该阈值是一个经验值, 一般来说该阈值应该在15%到20%之间)时,也需要开始进行迁移操作,这个阈值的设定要结合上层写请求的压力和SSD数据迁移的效率。当迁移线程得到了一定的空间后,迁移线程就会停止,这样做主要是为了防止迁移操作对元数据I/O操作造成负面影响。与现有技术相比,基于访问热度的数据迁移操作可以将经常访问的元数据留在 SSD,提高SSD的空间使用效率。上述实施例中的访问热度判定算法综合了数据访问的频率和最近访问时间,判定准确且算法的时间和空间开销较小。通过基于访问热度的SSD数据迁移操作可以充分利用SSD的存储空间,提高系统性价比。而现有的基于SSD+HDD这类架构中的数据迁移机制,例如BtrFS,通过对每次I/O操作信息的统计来判定访问热度,将热度较高的数据放在SSD上,热度较低的放在HDD上。这种热度判定虽然比较准确,但它要记录每次I/O操作的相关信息,时间和空间开销较大,并不适合元数据量很大的机群文件系统的元数据存储系统。在又一个实施例中,还提供了一种机群文件系统,在该系统中采用上述的元数据存储系统和元数据管理方法来对元数据进行存储和管理。为了更好地分析其性能,发明人进行了如下的测试发明人在曙光6000的机群文件系统HVFS的基础上实现了上述元数据存储系统和管理方法,以改进HVFS的性能,将改进后的HVFS为Hybrid HVFS0将Hybrid HVFS与采用同样的元数据存储架构(即采用现有DRAM+SSD+HDD的架构来存储元数据)的HVFS进行比较以元数据的创建(create系统调用)和查找(lookup系统调用)为例,来比较每秒完成的I/O操作次数(I0PS,Input/Output Per Second)图5和图6分别为原有HVFS和改进后的Hybrid HVFS中元数据的创建操作和查询操作性能比较示意图。从图5和图6可以看出,由于Hybrid HVFS采用了上述实施例中的管理元数据的方法,其能够明显提高机群文件系统的元数据操作性能。
通过测试结果表明,采用本发明的元数据管理方法可以有效提高机群文件系统元数据操作的性能。而且基于访问热度的数据迁移策略可以将更多经常被访问的元数据留在 SSD上,提高了元数据读操作的性能。 虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所作出的各种改变以及变化。
权利要求
1.一种机群文件系统中的元数据存储系统,该系统包括DRAM和SDD ;所述DRAM包括多个元数据缓冲区和元数据索引单元;每个元数据缓冲区中的元数据是按照写入的时间依次顺序写入的,每个元数据缓存区对应一个用于存储该缓冲区的元数据索引信息的头结构;每次将元数据缓冲区中的数据写回到SSD上时形成一个新的元数据索引单元,用于保存该元数据缓冲区的头结构所包含的元数据索引信息;所述SSD上包括元数据文件,所述元数据文件包含按照写回时间的顺序组织的多个元数据存储单元;每次将一个元数据缓冲区中的数据写回到SSD上时形成一个新的元数据存储单元,用于保存从该元数据缓冲区写入的元数据;每个元数据存储单元对应于DRAM中的一个元数据索引单元。
2.根据权利要求1所述的元数据存储系统,该系统还包括用于保存来自SSD的元数据的 HDD。
3.根据权利要求1或2所述的元数据存储系统,其中,所述头结构包括一个Bloom Filter和一个哈希表,所述Bloom Filter用来记录该元数据缓冲区中保存了哪些元数据项,所述哈希表用于维护元数据项的标识符以及该元数据项在元数据缓冲区中偏移量的映射。
4.根据权利要求1或2所述的元数据存储系统,其中SDD上还包括用于存储元数据索引信息的元数据索引文件。
5.根据权利要求1或2所述的元数据存储系统,其中DRAM中还包括读缓存模块,用于缓存从SSD读取的元数据。
6.一种用于如上述权利要求1或2所述的元数据存储系统的元数据管理方法,所述方法包括步骤1)将元数据按照写入的时间依次顺序写入DRAM中的元数据缓冲区中;步骤2)当一个元数据缓冲区被写满后,将其顺序写回到SSD上以形成一个新的元数据存储单元,同时将其头结构中对应的元数据索引信息以元数据索引单元的形式保存在DRAM 中,所述元数据存储单元按照写回时间的顺序组织到一个元数据文件中。
7.根据权利要求6所述的方法,其中所述头结构包括一个BloomFilter和一个哈希表,所述Bloom Filter用来记录该元数据缓冲区中保存了哪些元数据项,所述哈希表用于维护元数据项的标识符以及该元数据项在元数据缓冲区中偏移量的映射。
8.根据权利要求6所述的方法,其中步骤幻还包括在将一个元数据缓冲区顺序写回到 SSD的同时,将其对应的元数据索引信息也顺序写回到SSD上的元数据索引文件中。
9.根据权利要求7所述的方法,其中步骤幻还包括在将一个元数据缓冲区写回到SSD 时,根据其头结构中的元数据项的标识符来判断SSD上哪些数据项已经无效的步骤;以及在已经无效的元数据项所在的元数据存储单元对应的元数据索引单元中对该元数据项做无效标记的步骤。
10.根据权利要求7所述的方法,其中以64叉树和链接结合的方式来组织的Bloom Filter,每颗64叉树的深度不超过2层,多个64叉树组成一个链表,其中每个64叉树的非叶子节点的对应的Bloom Filter是其孩子节点的Bloom Filter的异或结果。
11.根据权利要求9所述的方法,还包括将元数据存储单元从SSD迁移到HDD的步骤, 该步骤包括比较元数据存储单元的访问热度与预定阈值以判断该元数据存储单元是否需要被迁移;当元数据存储单元的访问热度小于预定阈值,则将其从SSD中迁移到HDD上,反之将该元数据存储单元中有效的元数据项写入DRAM中的元数据缓冲区中; 其中所述元数据存储单元的访问热度以如下公式进行计算HEATm =MX K +(I-U)XHEAT1-AQ <U<\)!+1 NUM1其中,HEATi+1表示该元数据存储单元的当前访问热度,HEATi表示该元数据存储单元上次的访问热度,u是(0,1)上的值,用于控制上次访问热度对当前访问热度的影响,K表示该元数据存储单元在该时间段内被访问的次数,NUM表示在该时间段内所接收的从SSD上读取元数据的请求个数;所述阈值根据元数据访问的特征来设定。
12.根据权利要求11所述的方法,还包括对于那些无效元数据项比例超过50%的元数据存储单元,不需要判定其访问热度,直接将其从SSD上迁移到HDD上的步骤。
13.根据权利要求11所述的方法,其中,当SSD上可用空间与SSD总空间的比例小于一定空间阈值时,执行所述将元数据存储单元从SSD迁移到HDD的步骤。
14.根据权利要求13所述的方法,所述空间阀值在15%到20%之间。
15.根据权利要求11所述的方法,其中,每个固定的时间间隔执行所述将元数据存储单元从SSD迁移到HDD的步骤。
16.根据权利要求15所述的方法,其中对于元数据写负载较重的应用,所述时间间隔不能小于30分钟。
17.一种机群文件系统,所述机群文件系统包括如权利要求1、2、3或4所述的元数据存储系统。
全文摘要
本发明提供用于机群文件系统中的元数据存储系统和管理方法。其中,用DRAM+SSD+HDD三层架构来存储机群文件系统的元数据,将元数据按照写入的时间依次顺序写入DRAM中的元数据缓冲区中。当一个元数据缓冲区被写满后,将其顺序写回到SSD上以形成一个新的元数据存储单元,同时将其头结构中对应的元数据索引信息以元数据索引单元的形式保存在DRAM中。采用基于追加写方式保存元数据后,可以有效提高机群文件系统元数据操作的性能。另外,还提供了基于访问热度的数据迁移策略,将更多经常访问的元数据留在SSD上,提高了元数据读操作的性能。
文档编号G06F17/30GK102364474SQ201110366559
公开日2012年2月29日 申请日期2011年11月17日 优先权日2011年11月17日
发明者熊劲, 陈卓 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1