面向非易失性内存的文件系统的实现方法、系统及介质技术方案

技术编号:24353036 阅读:36 留言:0更新日期:2020-06-03 01:59
本发明专利技术提供了一种面向非易失性内存的文件系统的实现方法,包括:步骤1:在非易失性内存上划分区域,包括superblock、inodetable、data和journal区域;步骤2:在inodetable区域中,根据索引节点树进行元数据的索引;在data和journal区域中,根据数据块索引树分别进行文件数据块索引和日志块索引;步骤3:文件系统接收用户写入请求数据,构建元数据信息,通过B树组织数据,将写入请求数据和元数据信息存入非易失性内存;步骤4:文件系统接收用户的读取请求,通过多级哈希表,系统快速检索相应数据并返回给用户。本发明专利技术避免了用户态与内核态转换的上下文开销,简化了I/O操作;方便数据与元数据的访问,提高了非易失性存储设备的性能,从而提升系统的文件读写性能。

Implementation method, system and media of file system for nonvolatile memory

【技术实现步骤摘要】
面向非易失性内存的文件系统的实现方法、系统及介质
本专利技术涉及计算机系统结构
,具体地,涉及一种面向非易失性内存的文件系统的实现方法、系统及介质。
技术介绍
新型的非易失内存具有低功耗、高密度、接近DRAM的读速度和字节可寻址等特性,传统的面向磁盘的文件系统映射到该新型内存上,冗余的I/O栈引起大量的软件开销,往往无法充分利用非易失内存的诸多特性。现有的内存文件系统大多支持在内核态访问文件数据,然而,这种模式挑战和软件栈,如库和虚拟文件系统层的使用,在文件访问的过程中造成大量的上下文切换等软件开销,如果内存文件系统能够支持在用户态访问文件数据,将不需要执行用户态到内核态的状态切换,避免了用户态与内核态转换的上下文开销,简化I/O操作。因此,专门针对非易失内存设计一种用户态文件系统的实现方法是十分必要且具有积极的意义,并且现有的技术中很少有这方面的研究。非易失内存是指一种新型的计算机存储器,当系统断电后,存储器中所存储的数据不会消失,能够保留为后续的活动使用。I/O操作是指输入/输出,是计算机与外部世界之间的通信。操作系统的体系结构由用户态和内核态构成,所述内核态为一种控制计算硬件资源的软件,为上层的应用程序提供运行的环境;所述用户态则运行在上层应用程序所在的活动空间。DRAM(DynamicRandomAccessMemory)是指一种半导体存储器,其中所存储的数据会随着断电的操作而消失,是一种易失内存。inode,每一个文件都有对应的inode,其中包含了与该文件相关的属性,如文件的大小,读、写、执行权限等。专利文献CN106599096A(申请号:201611058790.4)公开了一种基于非易失性内存的高性能文件系统设计方法,包括:采用自校验数据结构保存文件系统中的元数据;使用非破坏性更新处理文件系统中的元数据、延迟数据结构的回收和重用,在关键路径中无缓存行刷回指令和内存屏障,只记录关键操作的持久化依赖性;后台线程在负责保障关键信息的持久化,以及对删除的数据结构的回收;使用数据校验和恢复算法对文件系统进行检查以及恢复。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种面向非易失性内存的文件系统的实现方法、系统及介质。根据本专利技术提供的面向非易失性内存的文件系统的实现方法,包括:步骤1:在非易失性内存上划分区域,包括superblock、inodetable、data和journal区域;步骤2:在inodetable区域中,根据索引节点树进行元数据的索引;在data和journal区域中,根据数据块索引树分别进行文件数据块索引和日志块索引;步骤3:文件系统接收用户写入请求数据,构建元数据信息,通过B树组织数据,将写入请求数据和元数据信息存入非易失性内存;步骤4:文件系统接收用户的读取请求,通过多级哈希表,系统快速检索相应数据并返回给用户。优选地,所述superblock区域存放文件系统的整体信息,包括:非易失性内存的物理地址、元数据块数量和大小、数据块数量和大小、journal区域大小;所述superblock区域在文件系统启动时完成初始化操作;所述inodetable区域存放元数据信息,所述元数据区被分割为固定大小的块;所述data区域存放数据,所述数据包括文件和目录,所述数据区支持分配不同的处理器页面大小;所述journal区域存放写入操作,包括文件系统中的元数据和数据,文件系统重启后重新执行之前未完成的操作,使元数据和文件数据保持一致。优选地,根据索引节点树组织元数据,所述索引节点树包括叶子节点和非叶子节点;所述非叶子节点存放下一级节点的地址;所述叶子节点存放元数据索引信息;所述元数据索引信息包括元数据的inode号和地址这两个域;所述元数据与元数据之间通过inode号建立一一映射关系。优选地,所述步骤2包括:在用户发起文件的访问请求时,根据文件的全路径名获取文件的各级目录,将系统根目录的元数据作为当前元数据;将下一级目录作为索引值,查询当前元数据下的表项,进行文件名匹配,若匹配成功,则获取所述下一级目录的元数据地址,并设定为当前元数据;如果文件名不匹配,则继续执行下一个表项,直到匹配到文件名。优选地,所述步骤2包括:在用户发起写入数据的请求时,根据需要写入数据的大小计算出所需数据块个数;将所需数据块个数作为索引值,从数据块索引树的最左侧的节点开始匹配,若当前节点提供的空闲数据块大于或等于索引值,则匹配成功;若当前节点提供的空闲数据块小于索引值,则继续查找下一个节点,直到匹配成功;所述数据块索引树中的每一个节点包括最小索引、最大索引和链表指针。优选地,所述B树为一种树形结构,分为叶子节点和非叶子节点;所述叶子节点与非叶子节点的大小相同;所述非叶子节点由512个地址构成,指向下一级叶子或非叶子节点;所述叶子节点存放文件数据。优选地,所述步骤3包括:步骤3.1:用户发起写入数据请求,文件系统记录写入地址、数据和数据长度;步骤3.2:根据写入地址计算要写入的数据块:要写入数据的大小为0,写入请求结束;若要写入的数据块已经存在,则写入数据,更新写入地址、数据和数据长度,继续执行步骤3.2;若要写入的数据块不存在,但要写入的数据块的父节点存在,则调用数据块索引树分配数据块,父节点记录分配的数据块的地址,写入数据,更新写入地址、数据和数据长度,继续执行步骤3.2;若要写入的数据块不存在,且要写入的数据块的父节点不存在,则调用数据块索引树分配数据块,所分配的数据块存放B树的根节点地址,使得树的高度加1,继续执行步骤3.2。优选地,所述步骤4包括:采用多个级别的哈希表,不同级别的哈希表具有不同的高度,包含的元素个数也不同;同一个哈希表,表中包含的元素个数是固定的;所述面向非易失性内存的文件系统将文件所在目录与哈希表对应起来,当在第i层目录所在的哈希表插入一个文件时,系统首先计算当前哈希表是否已经填满,如果没有填满,则计算能够插入文件的空闲位置,尝试插入文件;如果所述哈希表已经填满,则尝试下一级存放更多文件的哈希表重复尝试插入文件,直至文件插入成功。根据本专利技术提供的面向非易失性内存的文件系统的实现系统,包括:模块M1:在非易失性内存上划分区域,包括superblock、inodetable、data和journal区域;模块M2:在inodetable区域中,根据索引节点树进行元数据的索引;在data和journal区域中,根据数据块索引树分别进行文件数据块索引和日志块索引;模块M3:文件系统接收用户写入请求数据,构建元数据信息,通过B树组织数据,将写入请求数据和元数据信息存入非易失性内存;模块M4:文件系统接收用本文档来自技高网
...

【技术保护点】
1.一种面向非易失性内存的文件系统的实现方法,其特征在于,包括:/n步骤1:在非易失性内存上划分区域,包括superblock、inodetable、data和journal区域;/n步骤2:在inodetable区域中,根据索引节点树进行元数据的索引;/n在data和journal区域中,根据数据块索引树分别进行文件数据块索引和日志块索引;/n步骤3:文件系统接收用户写入请求数据,构建元数据信息,通过B树组织数据,将写入请求数据和元数据信息存入非易失性内存;/n步骤4:文件系统接收用户的读取请求,通过多级哈希表,系统快速检索相应数据并返回给用户。/n

【技术特征摘要】
1.一种面向非易失性内存的文件系统的实现方法,其特征在于,包括:
步骤1:在非易失性内存上划分区域,包括superblock、inodetable、data和journal区域;
步骤2:在inodetable区域中,根据索引节点树进行元数据的索引;
在data和journal区域中,根据数据块索引树分别进行文件数据块索引和日志块索引;
步骤3:文件系统接收用户写入请求数据,构建元数据信息,通过B树组织数据,将写入请求数据和元数据信息存入非易失性内存;
步骤4:文件系统接收用户的读取请求,通过多级哈希表,系统快速检索相应数据并返回给用户。


2.根据权利要求1所述的面向非易失性内存的文件系统的实现方法,其特征在于,所述superblock区域存放文件系统的整体信息,包括:非易失性内存的物理地址、元数据块数量和大小、数据块数量和大小、journal区域大小;
所述superblock区域在文件系统启动时完成初始化操作;
所述inodetable区域存放元数据信息,所述元数据区被分割为固定大小的块;
所述data区域存放数据,所述数据包括文件和目录,所述数据区支持分配不同的处理器页面大小;
所述journal区域存放写入操作,包括文件系统中的元数据和数据,文件系统重启后重新执行之前未完成的操作,使元数据和文件数据保持一致。


3.根据权利要求1所述的面向非易失性内存的文件系统的实现方法,其特征在于,根据索引节点树组织元数据,所述索引节点树包括叶子节点和非叶子节点;
所述非叶子节点存放下一级节点的地址;
所述叶子节点存放元数据索引信息;
所述元数据索引信息包括元数据的inode号和地址这两个域;
所述元数据与元数据之间通过inode号建立一一映射关系。


4.根据权利要求1所述的面向非易失性内存的文件系统的实现方法,其特征在于,所述步骤2包括:
在用户发起文件的访问请求时,根据文件的全路径名获取文件的各级目录,将系统根目录的元数据作为当前元数据;
将下一级目录作为索引值,查询当前元数据下的表项,进行文件名匹配,若匹配成功,则获取所述下一级目录的元数据地址,并设定为当前元数据;
如果文件名不匹配,则继续执行下一个表项,直到匹配到文件名。


5.根据权利要求1所述的面向非易失性内存的文件系统的实现方法,其特征在于,所述步骤2包括:
在用户发起写入数据的请求时,根据需要写入数据的大小计算出所需数据块个数;
将所需数据块个数作为索引值,从数据块索引树的最左侧的节点开始匹配,若当前节点提供的空闲数据块大于或等于索引值,则匹配成功;
若当前节点提供的空闲数据块小于索引值,则继续查找下一个节点,直到...

【专利技术属性】
技术研发人员:黄林鹏郑圣安沈艳艳陈雨亭晏艳
申请(专利权)人:上海交通大学清华大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1