CN111221776A - 面向非易失性内存的文件系统的实现方法、系统及介质 - Google Patents
面向非易失性内存的文件系统的实现方法、系统及介质 Download PDFInfo
- Publication number
- CN111221776A CN111221776A CN201911426210.6A CN201911426210A CN111221776A CN 111221776 A CN111221776 A CN 111221776A CN 201911426210 A CN201911426210 A CN 201911426210A CN 111221776 A CN111221776 A CN 111221776A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- metadata
- tree
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种面向非易失性内存的文件系统的实现方法,包括:步骤1:在非易失性内存上划分区域,包括superblock、inodetable、data和journal区域;步骤2:在inodetable区域中,根据索引节点树进行元数据的索引;在data和journal区域中,根据数据块索引树分别进行文件数据块索引和日志块索引;步骤3:文件系统接收用户写入请求数据,构建元数据信息,通过B树组织数据,将写入请求数据和元数据信息存入非易失性内存;步骤4:文件系统接收用户的读取请求,通过多级哈希表,系统快速检索相应数据并返回给用户。本发明避免了用户态与内核态转换的上下文开销,简化了I/O操作;方便数据与元数据的访问,提高了非易失性存储设备的性能,从而提升系统的文件读写性能。
Description
技术领域
本发明涉及计算机系统结构技术领域,具体地,涉及一种面向非易失性内存的文件系统的实现方法、系统及介质。
背景技术
新型的非易失内存具有低功耗、高密度、接近DRAM的读速度和字节可寻址等特性,传统的面向磁盘的文件系统映射到该新型内存上,冗余的I/O栈引起大量的软件开销,往往无法充分利用非易失内存的诸多特性。
现有的内存文件系统大多支持在内核态访问文件数据,然而,这种模式挑战和软件栈,如库和虚拟文件系统层的使用,在文件访问的过程中造成大量的上下文切换等软件开销,如果内存文件系统能够支持在用户态访问文件数据,将不需要执行用户态到内核态的状态切换,避免了用户态与内核态转换的上下文开销,简化I/O操作。因此,专门针对非易失内存设计一种用户态文件系统的实现方法是十分必要且具有积极的意义,并且现有的技术中很少有这方面的研究。
非易失内存是指一种新型的计算机存储器,当系统断电后,存储器中所存储的数据不会消失,能够保留为后续的活动使用。
I/O操作是指输入/输出,是计算机与外部世界之间的通信。
操作系统的体系结构由用户态和内核态构成,所述内核态为一种控制计算硬件资源的软件,为上层的应用程序提供运行的环境;所述用户态则运行在上层应用程序所在的活动空间。
DRAM(Dynamic Random Access Memory)是指一种半导体存储器,其中所存储的数据会随着断电的操作而消失,是一种易失内存。
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、根据本发明实施例的面向非易失内存的用户态文件系统,在分布式内存文件系统中,当远程系统想要存取本地数据时,不需要执行用户态到内核态的状态切换,避免了用户态与内核态转换的上下文开销,简化了I/O操作。
2、在数据存取的过程中,用户态文件系统所构建的组织布局将数据与元数据存放在非易失内存存储设备上,方便数据与元数据的访问,提高了非易失性存储设备的性能,从而提升系统的文件读写性能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为面向非易失性内存的用户态文件系统实现方法的执行动作流程图;
图2为非易失内存的区域划分示意图;
图3为节点索引树结构示意图;
图4位数据块索引树索引结构示意图;
图5为B树组织文件数据结构示意图;
图6为多级哈希表结构示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
图1是本发明实施例的一种面向非易失内存的用户态文件系统实现方法的执行动作流程图。如图1所示,
S1:在所述用户态文件系统初始化阶段,所述系统在非易失内存上的组织布局,如图2所示,划分为superblock、inodetable、data、journal这四个不同的区域;
S2:在所述inode table区域,通过节点索引树进行元数据的索引,在所述data和journal区域,通过数据块索引树分别进行文件数据块索引和日志块的索引;
S3:所述用户态文件系统接收用户写入请求,构建相应的元数据信息,通过B树组织数据,将写入数据和元数据信息存入非易失内存;
S4:所述用户态文件系统接收用户的读请求,通过多级哈希表,系统快速检索相应数据并返回给用户。
在本发明方法的一个实施例中,所述superblock用于存放非易失内存的物理地址、元数据块数量和大小、数据块数量和大小、journal区域的大小等文件系统的整体信息,该区域在所述用户态文件系统启动时完成初始化操作,用于统计和地址映射,位于文件系统的起始位置。
在本发明方法的一个实施例中,inodetable区域用于存放元数据信息,该区域被分割为固定大小的块,并组织为节点索引树。
在本发明方法的一个实施例中,data区域用于存放数据,所述数据包括文件和目录,该区域支持分配不同的处理器页面大小,具体地,内存分配器分别支持4KB、2MB和1GB单位大小的数据块分配。
具体地,假设要写1GB的文件数据,若以4KB为分配单位,则需要分配262144(1GB/4KB)块数据块才能够存放1GB的数据;若以2MB为分配单位,则需要分配512(1GB/2MB)个数据块才能够存放1GB的数据;若以1GB为分配单位,则只需要分配1(1GB/1GB)个数据块就可以存放1GB的数据。
在本发明方法的一个实施例中,journal区域用于存放写操作,包括文件系统中的元数据和数据,从而避免因为异常关机、掉电等造成文件系统中元数据和文件数据的不一致,文件系统重启后能通过重放之前未完成的操作来实现一致性。
在本发明方法的一个实施例中,利用元数据索引节点树组织元数据。所述索引节点树包含两类节点,叶子节点和非叶子结点。所述非叶子节点用于存放下一级节点的地址,所述叶子节点用于存放元数据信息,所述元数据信息包含元数据的inode号和地址这两个域。
具体地,如图3所示,元数据索引节点树在用户态文件系统初始化阶段创建,在superblock中保存根节点(非叶子节点)的地址,设置树的高度为4,每个非叶子节点中能够存放512个叶子节点或非叶子节点地址,最后一层叶子节点存放inode号和对应的物理地址。
具体地,如图3所示,元数据的查找步骤如下:
假设nid是要查找的inode号,首先执行(nid>>27)&511得到根节点(也是第一层树)的下标索引,然后执行(nid>>18)&511获取第二层树节点的下标索引,最后执行(nid>>9)&511获取第三层树节点的下标索引,最后(nid)&512获取叶子结点中的下标索引,从而获取该inode号的物理地址,访问该inode的元数据信息。
在本发明方法的一个实施例中,通过数据块索引树分别进行文件数据块索引和日志块的索引,所述数据块索引树中的每一个节点由最小可用索引、最大可用索引、链表指针这三个域组成,如图4所示。
在本发明方法的一个实施例中,所述数据块索引树索引数据块的步骤包括(索引日志块的方法相同):在用户端发起写数据的请求时,首先根据要写入数据的大小计算出所需数据块的个数;将所述所需的数据块个数作为索引值,从所述节点索引树的最左侧的节点开始匹配,如果当前节点所能提供的空闲数据块大于或等于索引值,则匹配成功;如果当前节点所提供的空闲数据块小于索引值,则继续查找下一个节点,直到所述节点所提供的空闲数据块大于或者等于索引值。
具体地,以文件数据块索引为例,假设当前需要分配10个数据块,首先获取数据块索引树最左侧的节点,发现该节点的最小可用索引为9,最大可用索引为15,即可分配的数据块为7个,无法满足系统的需求;根据该节点的链表指针获取下一个节点,发现该节点的最小可用索引为20,最大可用索引为35,即可分配的数据块为16,大于10,那么可以从20索引处开始分配10个数据块,返回给系统索引地址,同时修改该节点的最小可用索引为30。
在本发明方法的一个实施例中,B树为一种树形结构,分为叶子节点和非叶子节点,如图5所示;所述叶子节点与非叶子节点的大小相同;所述非叶子节点由512个地址构成,指向下一级叶子或非叶子节点;所述叶子节点用于存放文件数据,
在本发明方法的一个实施例中,B树组织数据的步骤包括:
步骤A:用户发起写入数据请求,所述用户态文件系统记录写入地址、数据和数据长度;
步骤B:根据写入地址计算所述数据要写入的数据块,分为以下3种可能:
数据全部写入数据块中,写入请求结束;
B1,所述数据块已经存在,则写入数据,更新写入地址、数据和数据长度,继续执行步骤B;
B2,所述数据块不存在,但所述数据块的父亲节点存在,则调用数据块索引树分配数据块,父亲节点记录已分配数据块的地址,写入数据,更新写入地址、数据和数据长度,继续执行步骤B;
B3,所述数据块不存在,且所述数据块的父亲节点不存在,此时需要调用数据块索引树分配数据块,所分配的数据块用于存放B树的根节点地址,使得树的高度加1,继续执行步骤B。
具体地,假设用户要从文件的0位置写入3MB的数据,选择4KB为分配单位。首先获取文件的根节点,当前根节点为0,则调用数据块索引树分配数据块,分配一块4KB的数据块,作为根节点的地址,设置当前B树的高度为1,然后写入4KB数据,还剩下的数据无法写入且当前树已经写满,则继续调用数据块索引树分配数据块,分配一块4KB的数据块,该数据块重新作为根节点,并记录旧的根节点地址在数据块的起始处,更新B树的高度为2,此时树尚未填满,依次分配511个数据块写入数据,到该B树填满后,则已经写入512*4KB即2MB的数据,还剩下1MB的数据没有写入;继续调用数据块索引树分配数据块,增高B树的高度,将旧的根节点地址写入新分配数据块的首地址,更新文件根节点为新分配的数据块,更新树的高度为3,此时树未满,则继续调用数据块索引树分配1MB/4KB=256个数据块,写入剩下的1MB数据,至此,3MB的数据全部写入文件的B树结构,此时树的高度为3。
在本发明方法的一个实施例中,所述多级哈希表构建步骤包括:采用多个级别的哈希表,不同级别的哈希表具有不同的高度,所包含的元素个数也不同;针对同一个哈希表,表中所包含的元素个数是固定的;所述面向非易失内存的用户态文件系统将文件所在目录与哈希表对应起来,当在第i层目录所在的哈希表插入一个文件时,系统首先计算当前哈希表是否已经填满,如果所述哈希表没有填满,则统计能够插入文件的空闲位置,尝试插入文件;如果所述哈希表已经填满,则尝试i+1、能够存放更多文件的哈希表重复尝试插入文件,直至文件插入成功。
具体地,每一个目录项对应一个bucket,每一级都有一个使用专用数字的哈希bucket的哈希表。哈希表的组织如图6所示,第0级有1个bucket(1个块),第1级有2个buckets(2个块),第2级有4个buckets(4个块),8个buckets(8个块),16个buckets(16个块),……。但是buckets的个数不是一直如此增长下去,确定buckets个数的方法见公式:
其中,N表示哈希级数,n为当前哈希级的bucket的个数,MAX_DIR_HASH_DEPTH表示最大的目录哈希深度。
在某个目录下查找文件名时,首先调用哈希函数,计算文件名的哈希值hash_vlue,接着在level#0中扫描哈希值查找包含文件名的目录项。如果level#0中没有查找到,接着扫描level#1,level#2,……,直到扫描到包含文件名的目录项,或者扫描到最后一个目录项也没有找到包含文件名的目录条目。在每一级中,仅需要扫描一个bucket,至于如何确定扫描bucket号,是由下面的公式计算得出:
bucket number#n=(hash_value)%(n in current level)
在添加文件名时,也是从level#0开始,level#1,level#2,……,利用上述公式确定bucket号,然后扫描目录项块,搜索空闲的槽位,将文件名的相关信息添加到目录项中。
可以看出,哈希表的最终结果要线性搜索目录项,搜索长度随着目录数据总目录项的个数增加呈对数级增长(时间复杂度为O(log2(n))),很容易扩展,比完全的线性搜索算法要好(完全的线性搜索算法即顺序查找,时间复杂度为O(n)),保证了每次添加或删除文件名的时候,仅更新一个数据块,不会移动目录项,相对稳定。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
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包括:
在用户发起写入数据的请求时,根据需要写入数据的大小计算出所需数据块个数;
将所需数据块个数作为索引值,从数据块索引树的最左侧的节点开始匹配,若当前节点提供的空闲数据块大于或等于索引值,则匹配成功;
若当前节点提供的空闲数据块小于索引值,则继续查找下一个节点,直到匹配成功;
所述数据块索引树中的每一个节点包括最小索引、最大索引和链表指针。
6.根据权利要求1所述的面向非易失性内存的文件系统的实现方法,其特征在于,所述B树为一种树形结构,分为叶子节点和非叶子节点;
所述叶子节点与非叶子节点的大小相同;
所述非叶子节点由512个地址构成,指向下一级叶子或非叶子节点;
所述叶子节点存放文件数据。
7.根据权利要求1所述的面向非易失性内存的文件系统的实现方法,其特征在于,所述步骤3包括:
步骤3.1:用户发起写入数据请求,文件系统记录写入地址、数据和数据长度;
步骤3.2:根据写入地址计算要写入的数据块:
要写入数据的大小为0,写入请求结束;
若要写入的数据块已经存在,则写入数据,更新写入地址、数据和数据长度,继续执行步骤3.2;
若要写入的数据块不存在,但要写入的数据块的父节点存在,则调用数据块索引树分配数据块,父节点记录分配的数据块的地址,写入数据,更新写入地址、数据和数据长度,继续执行步骤3.2;
若要写入的数据块不存在,且要写入的数据块的父节点不存在,则调用数据块索引树分配数据块,所分配的数据块存放B树的根节点地址,使得树的高度加1,继续执行步骤3.2。
8.根据权利要求1所述的面向非易失性内存的文件系统的实现方法,其特征在于,所述步骤4包括:
采用多个级别的哈希表,不同级别的哈希表具有不同的高度,包含的元素个数也不同;同一个哈希表,表中包含的元素个数是固定的;
所述面向非易失性内存的文件系统将文件所在目录与哈希表对应起来,当在第i层目录所在的哈希表插入一个文件时,系统首先计算当前哈希表是否已经填满,如果没有填满,则计算能够插入文件的空闲位置,尝试插入文件;如果所述哈希表已经填满,则尝试下一级存放更多文件的哈希表重复尝试插入文件,直至文件插入成功。
9.一种面向非易失性内存的文件系统的实现系统,其特征在于,包括:
模块M1:在非易失性内存上划分区域,包括superblock、inodetable、data和journal区域;
模块M2:在inodetable区域中,根据索引节点树进行元数据的索引;
在data和journal区域中,根据数据块索引树分别进行文件数据块索引和日志块索引;
模块M3:文件系统接收用户写入请求数据,构建元数据信息,通过B树组织数据,将写入请求数据和元数据信息存入非易失性内存;
模块M4:文件系统接收用户的读取请求,通过多级哈希表,系统快速检索相应数据并返回给用户。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911426210.6A CN111221776B (zh) | 2019-12-30 | 2019-12-30 | 面向非易失性内存的文件系统的实现方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911426210.6A CN111221776B (zh) | 2019-12-30 | 2019-12-30 | 面向非易失性内存的文件系统的实现方法、系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111221776A true CN111221776A (zh) | 2020-06-02 |
CN111221776B CN111221776B (zh) | 2023-06-23 |
Family
ID=70828084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911426210.6A Active CN111221776B (zh) | 2019-12-30 | 2019-12-30 | 面向非易失性内存的文件系统的实现方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111221776B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181288A (zh) * | 2020-08-17 | 2021-01-05 | 厦门大学 | 一种非易失性存储介质的数据处理方法和计算机存储介质 |
CN112579528A (zh) * | 2020-11-28 | 2021-03-30 | 中国航空工业集团公司洛阳电光设备研究所 | 嵌入式网络文件系统服务器端高效率文件访问的方法 |
CN113031880A (zh) * | 2021-05-27 | 2021-06-25 | 湖南博匠信息科技有限公司 | 适用于多型号存储设备的上位机通讯方法及系统 |
CN113076292A (zh) * | 2021-03-30 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种文件缓存方法、系统、存储介质及设备 |
CN113296700A (zh) * | 2021-04-20 | 2021-08-24 | 新华三信息技术有限公司 | 一种存储空间的管理方法、装置以及服务器 |
CN113609076A (zh) * | 2021-08-04 | 2021-11-05 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法和文件读取方法 |
CN114115711A (zh) * | 2021-08-24 | 2022-03-01 | 上海交通大学 | 基于非易失内存文件系统的快速缓存系统 |
CN114116612A (zh) * | 2021-11-15 | 2022-03-01 | 长沙理工大学 | 一种基于b+树索引归档文件的存取方法 |
CN114327290A (zh) * | 2021-12-31 | 2022-04-12 | 科东(广州)软件科技有限公司 | 一种磁盘分区的结构、格式化方法和访问方法 |
WO2022089560A1 (zh) * | 2020-10-29 | 2022-05-05 | 第四范式(北京)技术有限公司 | 一种模型参数的存储方法和系统以及一种参数服务器集群 |
WO2022199400A1 (zh) * | 2021-03-23 | 2022-09-29 | 中兴通讯股份有限公司 | 持久内存文件系统元数据的检索方法和装置、存储结构 |
CN115374127A (zh) * | 2022-10-21 | 2022-11-22 | 北京奥星贝斯科技有限公司 | 数据存储方法及装置 |
WO2024051109A1 (zh) * | 2022-09-06 | 2024-03-14 | 浪潮电子信息产业股份有限公司 | 一种数据存储方法、装置、系统、设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425435A (zh) * | 2012-05-15 | 2013-12-04 | 深圳市腾讯计算机系统有限公司 | 磁盘存储方法及磁盘存储系统 |
US20150347477A1 (en) * | 2014-05-30 | 2015-12-03 | John Esmet | Streaming File System |
CN107862064A (zh) * | 2017-11-16 | 2018-03-30 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件系统 |
CN109213772A (zh) * | 2018-09-12 | 2019-01-15 | 华东师范大学 | 数据存储方法及NVMe存储系统 |
CN109271110A (zh) * | 2018-09-25 | 2019-01-25 | 郑州云海信息技术有限公司 | 存储系统中存储数据的写入方法、写入系统及相关装置 |
CN110221782A (zh) * | 2019-06-06 | 2019-09-10 | 重庆紫光华山智安科技有限公司 | 视频文件处理方法及装置 |
-
2019
- 2019-12-30 CN CN201911426210.6A patent/CN111221776B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425435A (zh) * | 2012-05-15 | 2013-12-04 | 深圳市腾讯计算机系统有限公司 | 磁盘存储方法及磁盘存储系统 |
US20150347477A1 (en) * | 2014-05-30 | 2015-12-03 | John Esmet | Streaming File System |
CN107862064A (zh) * | 2017-11-16 | 2018-03-30 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件系统 |
CN109213772A (zh) * | 2018-09-12 | 2019-01-15 | 华东师范大学 | 数据存储方法及NVMe存储系统 |
CN109271110A (zh) * | 2018-09-25 | 2019-01-25 | 郑州云海信息技术有限公司 | 存储系统中存储数据的写入方法、写入系统及相关装置 |
CN110221782A (zh) * | 2019-06-06 | 2019-09-10 | 重庆紫光华山智安科技有限公司 | 视频文件处理方法及装置 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181288B (zh) * | 2020-08-17 | 2022-03-04 | 厦门大学 | 一种非易失性存储介质的数据处理方法和计算机存储介质 |
CN112181288A (zh) * | 2020-08-17 | 2021-01-05 | 厦门大学 | 一种非易失性存储介质的数据处理方法和计算机存储介质 |
WO2022089560A1 (zh) * | 2020-10-29 | 2022-05-05 | 第四范式(北京)技术有限公司 | 一种模型参数的存储方法和系统以及一种参数服务器集群 |
CN112579528A (zh) * | 2020-11-28 | 2021-03-30 | 中国航空工业集团公司洛阳电光设备研究所 | 嵌入式网络文件系统服务器端高效率文件访问的方法 |
CN112579528B (zh) * | 2020-11-28 | 2022-09-02 | 中国航空工业集团公司洛阳电光设备研究所 | 嵌入式网络文件系统服务器端高效率文件访问的方法 |
WO2022199400A1 (zh) * | 2021-03-23 | 2022-09-29 | 中兴通讯股份有限公司 | 持久内存文件系统元数据的检索方法和装置、存储结构 |
CN113076292B (zh) * | 2021-03-30 | 2023-03-14 | 山东英信计算机技术有限公司 | 一种文件缓存方法、系统、存储介质及设备 |
CN113076292A (zh) * | 2021-03-30 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种文件缓存方法、系统、存储介质及设备 |
CN113296700A (zh) * | 2021-04-20 | 2021-08-24 | 新华三信息技术有限公司 | 一种存储空间的管理方法、装置以及服务器 |
CN113031880A (zh) * | 2021-05-27 | 2021-06-25 | 湖南博匠信息科技有限公司 | 适用于多型号存储设备的上位机通讯方法及系统 |
CN113609076A (zh) * | 2021-08-04 | 2021-11-05 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法和文件读取方法 |
CN114115711A (zh) * | 2021-08-24 | 2022-03-01 | 上海交通大学 | 基于非易失内存文件系统的快速缓存系统 |
CN114115711B (zh) * | 2021-08-24 | 2023-10-17 | 上海交通大学 | 基于非易失内存文件系统的快速缓存系统 |
CN114116612A (zh) * | 2021-11-15 | 2022-03-01 | 长沙理工大学 | 一种基于b+树索引归档文件的存取方法 |
CN114116612B (zh) * | 2021-11-15 | 2024-06-07 | 长沙理工大学 | 一种基于b+树索引归档文件的存取方法 |
CN114327290A (zh) * | 2021-12-31 | 2022-04-12 | 科东(广州)软件科技有限公司 | 一种磁盘分区的结构、格式化方法和访问方法 |
CN114327290B (zh) * | 2021-12-31 | 2022-12-02 | 科东(广州)软件科技有限公司 | 一种磁盘分区的结构、格式化方法和访问方法 |
WO2024051109A1 (zh) * | 2022-09-06 | 2024-03-14 | 浪潮电子信息产业股份有限公司 | 一种数据存储方法、装置、系统、设备和介质 |
CN115374127A (zh) * | 2022-10-21 | 2022-11-22 | 北京奥星贝斯科技有限公司 | 数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111221776B (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111221776B (zh) | 面向非易失性内存的文件系统的实现方法、系统及介质 | |
US10831734B2 (en) | Update-insert for key-value storage interface | |
KR101944876B1 (ko) | 파일 액세스 방법 및 장치 및 스토리지 디바이스 | |
KR101977575B1 (ko) | 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체 | |
CN107180092B (zh) | 一种文件系统的控制方法、装置及终端 | |
CN107728937B (zh) | 一种使用非易失性内存介质的键值对持久存储方法及系统 | |
US4611272A (en) | Key-accessed file organization | |
KR102275563B1 (ko) | 호스트-관리 비휘발성 메모리 | |
US20150113230A1 (en) | Directory storage method and query method, and node controller | |
CN111522507B (zh) | 一种低延迟的文件系统地址空间管理方法、系统及介质 | |
CN106682110B (zh) | 一种基于哈希格网索引的影像文件存储和管理系统及方法 | |
WO2022095346A1 (zh) | 一种区块链数据存储方法、系统、设备及可读存储介质 | |
US10838624B2 (en) | Extent pool allocations based on file system instance identifiers | |
CN113050886A (zh) | 面向嵌入式内存数据库的非易失性内存存储方法及系统 | |
KR101008032B1 (ko) | 메타 데이터 관리 시스템 및 방법 | |
CN110659248B (zh) | 基于非易失性内存的用户态文件系统设计方法及系统 | |
US10782895B2 (en) | Management method of metadata for preventing data loss and memory device using the same | |
KR20090097696A (ko) | 파일 액세스 방법 및 이를 이용한 시스템 | |
KR102321346B1 (ko) | 대용량 ssd 장치를 위한 데이터 저널링 방법 | |
CN117573676A (zh) | 基于存储系统的地址处理方法、装置、存储系统及介质 | |
WO2024108939A1 (zh) | 一种多级映射框架、数据操作请求处理方法及系统 | |
CN115964350A (zh) | 一种文件系统管理模型及系统 | |
KR101270777B1 (ko) | 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록시스템 및 방법 | |
CN113448722A (zh) | 进程内存的映射方法和基于无服务器架构的实例处理方法 | |
US9846553B2 (en) | Organization and management of key-value stores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |