一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于非易失内存的文件元数据存储方法与系统与流程

2022-11-30 08:36:52 来源:中国专利 TAG:


1.本发明涉及文件系统技术领域,特别涉及一种基于非易失内存的文件元数据的存储方法与系统。


背景技术:

2.文件是当前数据存储的主要逻辑载体,文件系统的设计对数据密集型应用的性能起到关键性作用。元数据系统作为文件系统的控制管理模块,其工作效率决定了文件系统的总体性能。传统的文件系统如ext4,xfs等,使用分层结构进行元数据的存储和管理,活跃的元数据存储在高性能的dram内存缓存中,非活跃的元数据持久化存储在大容量的固态盘ssd存储设备中。分层元数据存储结构有助于发挥不同存储介质的优点,获得较高的性价比,但是已经无法满足大数据时代对文件数据处理能力需求的爆发性增长。应用需求和现有文件系统的矛盾主要体现在:
3.1、高性能计算,大数据,人工智能应用要求微秒级别文件访问延迟和每秒百万次的并发访问频率,以块设备为主的元数据存储结构无法满足应用的高带宽,低延迟要求;
4.2、海量小文件访问的应用场景,如机器学习,数字媒体等,产生大量活跃的文件元数据。dram内存容量有限,无法加载全部的活跃元数据,导致元数据在内存和慢速设备之间频繁交换,降低了访问的性能;
5.3、在大规模存储机群中,部分节点失效是大概率事件,文件数据的高可靠性和故障恢复能力是必要功能。内存是易失性介质,为保证元数据信息的完整性和一致性必须引入日志等复杂的信息故障恢复机制,进一步降低了系统的性能;
6.4、由于磁盘块设备内存在随机访问性能方面的差距巨大(100倍以上),内存设备作为缓存可以达到有效加速效果的前提条件是缓存访问必须具有极高的命中率(95%以上)。文件系统元数据访问以小粒度随机访问为主,客观上无法支持高命中率的要求,很大程度上弱化了缓存层次结构的对于性能优化效果。
7.为解决上述矛盾,需要使用新型存储系统替代现有的文件系统元数据模块的原有存储结构,从根本上解决元数据访问在性能和可靠性的方面的问题,以适应应用的需求。近年来存储器件技术的进展,使非易失性内存(non-volatile memory,nvm)已经形成可以批量使用的产品,为新型存储结构提供了技术基础。非易失性内存(nvm)介质的主要特点是:
8.1、随机访问性能高。经过实际测试,nvm的随机访问性能是固态盘(ssd)的30倍以上,可以达到dram内存随机访问性能的40%;
9.2、以字节为单位进行寻址访问。nvm访问模式基本和内存相同,应用程序不经修改可以直接运行在nvm环境中,不需要做寻址模式的转换;
10.3、容量大,单位容量成本低,只有内存的1/3;
11.4、支持数据持久化存储,设备关闭后信息不丢失;
12.5、nvm设备的访问性能很高,接近dram设备,但是需要通过文件映射的方式进行初始化,才能被应用程序使用。nvm映射的时间开销在50us以上,远高于nvm元数据写入和持久
化的时延(约3us)。对于海量文件创建等元数据频繁分配的应用场景,nvm初始化延迟严重制约应用性能。
13.上述特点决定了非易失性内存可以作为内存设备的低成本容量扩充和数据持久存储功能扩展。在增加有限成本的前提下,引入非易失性内存设备,可以在文件系统元数据模块中替代内存缓存和持久化存储设备的功能。针对nvm设备的功能特点和性能优势,进行性能优化设计,可以在保证数据高可靠性的前提下,显著提升文件系统元数据访问性能,满足大数据应用高性能文件访问的需求。


技术实现要素:

14.本技术面向高性能计算和大数据应用在文件访问性能方面的技术挑战,在文件系统设计中引入非易失性内存nvm设备,提出文件系统元数据模块优化设计方案相关元数据访问方法。使用本技术提出的设计结构和相关方法,可以显著提升文件系统元数据访问性能,有效地解决大数据应用环境下文件系统并发访问性能不足的问题。
15.针对现有技术的不足,本发明提出一种基于非易失内存的文件元数据存储方法,其中包括:
16.步骤1、在非易失内存中初始化由目录、目录子集、元数据块和元数据项构成的元数据存储结构,其中所有元数据块集中存储于该非易失内存的元数据存储池文件;
17.步骤2、获取待存储的文件元数据,选取目录中未饱和的目录子集作为目标子集,继续选择目标子集中未饱和的元数据块作为目标数据块,选定该目标数据块中空闲元数据项作为目标项;
18.步骤3、设置该目标项的状态为已分配,对该目标项进行初始化,并将该待存储的文件元数据写入该目标项并持久化。
19.所述的基于非易失内存的文件元数据存储方法,其中该元数据块的存储空间中包含用于存储元数据项的存储单元,该元数据存储池文件在系统初始化阶段进行一次性的文件创建和映射。
20.所述的基于非易失内存的文件元数据存储方法,其中在该元数据存储结构中,该目录和其目录子集均以该非易失内存上的nvm文件形式独立存储;将目录的nvm文件映射到当前进程地址空间,并将映射地址记录到全局目录哈希表;将目录子集的nvm文件映射到当前进程地址空间,并将映射地址记录到全局目录子集哈希表。
21.所述的基于非易失内存的文件元数据存储方法,其中该步骤2包括:
22.步骤21、判断目录中是否存在未饱和的目录子集,若存在,则将该未饱和的目录子集作为目标子集,否则新创目录子集的nvm文件,并将其映射到当前进程地址空间,将映射地址记录到全局目录子集哈希表,将该新创目录子集作为目标子集;
23.步骤22、判断目标子集中是否存在未饱和的元数据块,若存在,则将该未饱和的元数据块作为目标数据块,否则从该元数据存储池中分配元数据块至该目标子集,并将分配的元数据块作为目标数据块。
24.本发明还提出了一种基于非易失内存的文件元数据存储系统,其中包括:
25.初始模块,用于在非易失内存中初始化由目录、目录子集、元数据块和元数据项构成的元数据存储结构,其中所有元数据块集中存储于该非易失内存的元数据存储池文件;
26.选择模块,用于获取待存储的文件元数据,选取目录中未饱和的目录子集作为目标子集,继续选择目标子集中未饱和的元数据块作为目标数据块,选定该目标数据块中空闲元数据项作为目标项;
27.存储模块,用于设置该目标项的状态为已分配,对该目标项进行初始化,并将该待存储的文件元数据写入该目标项并持久化。
28.所述的基于非易失内存的文件元数据存储系统,其中该元数据块的存储空间中包含用于存储元数据项的存储单元,该元数据存储池文件在系统初始化阶段进行一次性的文件创建和映射。
29.所述的基于非易失内存的文件元数据存储系统,其中在该元数据存储结构中,该目录和其目录子集均以该非易失内存上的nvm文件形式独立存储;将目录的nvm文件映射到当前进程地址空间,并将映射地址记录到全局目录哈希表;将目录子集的nvm文件映射到当前进程地址空间,并将映射地址记录到全局目录子集哈希表。
30.所述的基于非易失内存的文件元数据存储系统,其中该选择模块包括:
31.第一判断模块,用于判断目录中是否存在未饱和的目录子集,若存在,则将该未饱和的目录子集作为目标子集,否则新创目录子集的nvm文件,并将其映射到当前进程地址空间,将映射地址记录到全局目录子集哈希表,将该新创目录子集作为目标子集;
32.第二判断模块,用于判断目标子集中是否存在未饱和的元数据块,若存在,则将该未饱和的元数据块作为目标数据块,否则从该元数据存储池中分配元数据块至该目标子集,并将分配的元数据块作为目标数据块。
33.本发明还提出了一种存储介质,用于存储执行所述任意一种非易失内存的文件元数据存储方法的程序。
34.本发明还提出了一种客户端,用于所述任意一种非易失内存的文件元数据存储系统。
35.由以上方案可知,本发明的优点在于:
36.本发明提出了一种基于非易失性内存nvm设备的文件系统元数据存储结构和方法。利用非易失性内存设备的性能优势,提出了单层无缓存结构的元数据存储结构,优化了元数据访问流程。针对引入nvm设备后的小粒度资源分配的延迟问题,提出了高效元数据存储空间分配和初始化方法。优化后的元数据系统可以在保证高可靠性的前提下,显著提升文件系统元数据访问性能。实际测试中元数据访问性能可以提升5倍以上。
附图说明
37.图1a为采用的dram内存和ssd固态硬盘的混合结构图;
38.图1b为基于nvm的单层结构无缓存文件系统元数据存储结构图;
39.图2为基于nvm的元数据分级可扩展存储结构图;
40.图3为基于nvm的大规模文件初始化创建流程图。
具体实施方式
41.本发明主要包括以下关键技术点:
42.关键点1,建立基于nvm的无缓存单层元数据存储结构。利用nvm设备的性能优势和
容量优势,将文件系统中所有元数据直接通过nvm进行存取,避免内存到硬盘之间频繁的数据交换,大幅度降低了文件元数据访问的延迟,提升了聚合访问性能。
43.关键点2,使用分级的元数据存储结构,针对不同层级的元数据存储单元的访问特点特点设计优化的元数据分配和初始化方法。在保证元数据存储动态扩展的前提下,降低了使用nvm设备引入的元数据存储管理时间开销,提升元数据访问的总体性能。
44.为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
45.目前主流文件系统的元数据存储结构都采用dram内存和ssd固态硬盘的混合结构,如图1a所示。在混合结构中,以内存为缓存,存储经常访问的热点元数据,ssd持久化存储所有元数据。这样的结构设计目标是结合dram内存随机访问性能高的优势和ssd设备容量大的优势,对应用提供近似dram内存的元数据访问性能。但是,在实际设计中,任何缓存结构的系统的总体性能受限于缓存命中率以及系统中快速/慢速设备的性能比值。根据公式:ta=h*ta1 (1-h)*ta2,式中h为命中率,ta为总体访问时延,ta1为缓存设备访问时间,ta2为慢速设备访问时延。
46.通过性能分析可知,系统中慢速设备的访问时延和缓存设备访问时延差距较大时,要使总体性能接近缓存设备的性能,就需要有很高的缓存命中率。实际测试中,ssd的随机访问时延是dram内存的100倍以上(ta2》=100ta1)。即使仅要求总体性能达到缓存设备dram的1/3(ta《=3ta1),命中率也需要达到98%。在海量文件的实际应用场景下,文件系统元数据访问模式以高频率小粒度随机访问为主,元数据访问缓存命中率低于90%,导致了在实际应用中,缓存结构的元数据访问的总体性能低于dram设备性能的10%无法满足应用的高性能低延迟需求。
47.为解决随机访问性能,数据可靠性和数据一致性的问题,提升元数据访问性能,本发明方案提出了以下结构和方法。
48.基于nvm的单层结构无缓存的文件系统元数据存储结构。其结构如附图1b所示。相对于两层(多层)的缓存结构,单层存储结构简单,命中率是100%,元数据不需要在缓存设备和慢速持久设备之间交互,只需要在写入时通过cpu指令进行持久化就可以保证元数据的可靠性。因此,基于nvm的元数据存储结构下,访问性能只受限于介质的性能。根据实际测试,nvm的随机访问总体性能可以达到dram的40%,可以满足应用的需求。
49.分级的可扩展元数据存储结构和优化的存储资源分配方法。为解决nvm内存分配产生的初始化时间开销,本发明提出了分层的可扩展元数据存储结构,如图2所示。系统中的元数据存储结构按照目录(directory)-》目录子集(subset)-》元数据块(bucket)-》元数据(元数据项,meta)四级结构单元进行存储,每一级结构和上一级结构之间在逻辑上是从属关系。在存储结构上,目录子集和它所属的目录是以nvm设备上的文件形式独立存储的,没有包含关系。所有的元数据块集中存储在一个nvm元数据存储池文件中。元数据块存储空间中包含元数据存储单元。元数据存储池文件在系统初始化阶段进行一次性的文件创建和映射。目录和目录子集创建后,需要将对应nvm文件映射到当前进程地址空间,并将对应地址记录到全局哈希表中,才可以供应用程序访问。元数据块和元数据的映射过程已经在文件系统初始化阶段完成,分配后,只需要持久化记录其状态为“已分配”,就可以进行访问。元数据在nvm中分级存储的优势在于:1)针对目录和目录子集具有内部元数据容量大,数量
少,创建频率低,需要动态扩容等特点,采用独立文件存储和映射的方法进行分配,可以在增加少量平均时延的情况下,实现系统动态扩容。2)针对元数据块和元数据具有容量小,创建频率高,结构单一等特点,使用集中存储,统一映射的方法进行分配和管理,可以明显减少元数据分配和初始化的时间成本。
50.图3举例说明一个大数据应用中常见一个扁平结构大容量目录批量文件创建过程。创建100万个正规文件,过程中建立了64个目录子集,每个目录子集创建(分配)512个元数据块,每个元数据块包含固定32个元数据。因此在图3中,分支1执行了64次,每次约50us,用于创建目录子集。分支2执行了64*512=32768次,每次约3us,用于分配元数据块。分支3执行了100万次,用于分配nvm元数据空间。过程中元数据分配和初始化时间3.24秒,平均每个元数据用于分配和初始化的时间约3us,与dram分配内存的时间接近,达到预期优化效果。
51.以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
52.本发明还提出了一种基于非易失内存的文件元数据存储系统,其中包括:
53.初始模块,用于在非易失内存中初始化由目录、目录子集、元数据块和元数据项构成的元数据存储结构,其中所有元数据块集中存储于该非易失内存的元数据存储池文件;
54.选择模块,用于获取待存储的文件元数据,选取目录中未饱和的目录子集作为目标子集,继续选择目标子集中未饱和的元数据块作为目标数据块,选定该目标数据块中空闲元数据项作为目标项;
55.存储模块,用于设置该目标项的状态为已分配,对该目标项进行初始化,并将该待存储的文件元数据写入该目标项并持久化。
56.所述的基于非易失内存的文件元数据存储系统,其中该元数据块的存储空间中包含用于存储元数据项的存储单元,该元数据存储池文件在系统初始化阶段进行一次性的文件创建和映射。
57.所述的基于非易失内存的文件元数据存储系统,其中在该元数据存储结构中,该目录和其目录子集均以该非易失内存上的nvm文件形式独立存储;将目录的nvm文件映射到当前进程地址空间,并将映射地址记录到全局目录哈希表;将目录子集的nvm文件映射到当前进程地址空间,并将映射地址记录到全局目录子集哈希表。
58.所述的基于非易失内存的文件元数据存储系统,其中该选择模块包括:
59.第一判断模块,用于判断目录中是否存在未饱和的目录子集,若存在,则将该未饱和的目录子集作为目标子集,否则新创目录子集的nvm文件,并将其映射到当前进程地址空间,将映射地址记录到全局目录子集哈希表,将该新创目录子集作为目标子集;
60.第二判断模块,用于判断目标子集中是否存在未饱和的元数据块,若存在,则将该未饱和的元数据块作为目标数据块,否则从该元数据存储池中分配元数据块至该目标子集,并将分配的元数据块作为目标数据块。
61.本发明还提出了一种存储介质,用于存储执行所述任意一种非易失内存的文件元数据存储方法的程序。
62.本发明还提出了一种客户端,用于所述任意一种非易失内存的文件元数据存储系统。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献