一种基于N‑ary树结构的随机访问的文件系统的实现方法与流程

文档序号:12748185阅读:248来源:国知局
一种基于N‑ary树结构的随机访问的文件系统的实现方法与流程

本发明涉及文件系统的技术领域,特别是涉及一种基于N-ary树结构的随机访问的文件系统的实现方法。



背景技术:

随着NVDIMM、3D Xpoint等新型存储技术的发展及IBM对存储级内存(Storage Class Memory,SCM)架构的提出,基于混合内存系统架构及管理的非易失存储NVM成为研究热点。新型存储技术SCM具有非易失性、读快写快、功耗低等特点,但与DRAM相比仍有差距,有限的写擦循环寿命也降低了系统的可靠性。现有技术中,基于新型存储技术SCM提出过多种内存组织方式和优化方法。

随着大数据、云计算、物联网等技术的发展,数据正以前所未有的速度不断增长和累积。如何管理和组织这些数据,对传统的文件系统来说是一个挑战。尽管当前的文件系统为应用提供了一种易用的数据组织方式,然而该数据组织方式是基于块设备的硬件特点设计的,无法充分发挥SCM可随机访问的性能特点。因此,如何有效地组织数据,让应用程序能够以更接近内存的方式使用和访问,而又能保持文件系统可靠、易维护和共享等优势,最大化地提高系统整体运行效率成为亟待解决的问题。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于N-ary树结构的随机访问的文件系统的实现方法,采用N-ary树结构管理该文件系统所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,而无需按文件逻辑顺序在物理地址空间顺序存储,从而最大化地提高文件系统整体的运行效率。

为实现上述目的及其他相关目的,本发明提供一种基于N-ary树结构的随机访问的文件系统的实现方法,包括以页为单位来管理文件系统所有的文件数据;在文件系统中设置iNode区和数据区,所述数据区包括节点页和数据页,所述数据页用于存储文件数据,所述节点页用于存储N-ary树中下一级节点页或数据页的物理地址;所述iNode区中所存储的iNode节点包括N-ary树级数字段和N-ary树根节点字段,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件第N级节点页的起始物理地址;以文件所对应的第N级节点页页号为根节点,以第(N-1)级节点页页号为第1级子节点,以此类推,以第1级节点页页号为第(N-1)级子节点,形成一个N-ary树以对该文件的所有数据进行存储管理;其中第1级节点页为数据页;N-ary树的遍历顺序为数据页的逻辑顺序。

于本发明一实施例中,所述数据页和所述节点页在所述数据区混排。

于本发明一实施例中,所述数据页和所述节点页是在向文件写入数据时动态分配的;向文件写入数据时,根据写入地址判定数据页是否已经存在,若不存在,则分配数据页,并补齐该数据页至根节点间路径上所需的节点页。

于本发明一实施例中,文件系统创建文件时,包括以下步骤:

分配一个iNode节点;

指定文件所采用的N-ary树的级数N,为文件分配一个第N级节点页;

将第N级节点页的物理地址写入文件对应的iNode节点的N-ary树根节点字段;

将文件所采用的N-ary树的级数N写入所分配的iNode节点中的N-ary树级数字段。

于本发明一实施例中,在同一个文件系统内,不同的文件能够拥有不同的N-ary树的级数。

于本发明一实施例中,文件所采用的N-ary树的级数能够动态增加。

于本发明一实施例中,触发文件所采用的N-ary树的级数动态增加的情况包括:

通过POSIX方式写入数据时地址超越当前文件逻辑长度;

通过文件指针定位当前位置时超越当前文件逻辑长度;

通过mmap方式将文件映射到进程虚拟空间时指定的长度超越了当前文件逻辑长度。

于本发明一实施例中,文件所采用的N-ary树的级数能够动态增加包括以下步骤:

文件系统从数据区获取一个空闲的节点页作为新的根节点;

将文件原根节点的物理地址写入新的根节点的第一个位置,并将新的根节点的物理地址及增加1后的N-ary树的级数更新到该文件的iNode节点中。

于本发明一实施例中,所述页的大小与操作系统内存页的大小一致。

如上所述,本发明的基于N-ary树结构的随机访问的文件系统的实现方法,具有以下有益效果:

(1)基于N-ary树结构管理文件数据在物理存储空间中的存储顺序,实现文件数据在物理存储空间内的随机存储,而无需按文件逻辑顺序在物理地址空间顺序存储;

(2)采用N-ary树结构管理文件系统所存储在物理地址空间的数据,每个文件对应一个N-ary树结构,同一文件系统可实现4K、2M、1G等不同容量级别的文件存储,满足对不同容量级别需求的文件数据存储;

(3)文件存储数据时采用的N-ary树级数是可动态调整的,通过动态调整文件数据管理的N-ary树级数可实现文件的升级扩容。

附图说明

图1显示为本发明的基于N-ary树结构的随机访问的文件系统的实现方法的框架图;

图2显示为本发明中iNode节点的结构示意图;

图3显示为本发明中N-ary树的结构示意图;

图4显示为本发明的一个实施例中N-ary树结构以及文件数据在数据区的分布情况示意图;

图5显示为本发明的一个实施例中经过两次写操作后,文件数据页在数据区的分布情况变化图;

图6显示为本发明的一个实施例中经过两次写操作后,文件的N-ary树的结构变化图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

N-ary树,又叫N叉树,是一种常见的树型数据结构,常常用来完成数据的快速排序、数据压缩和快速检索。N-ary树具有一个根节点,每个节点的子节点数完全相同。

本发明的基于N-ary树结构的随机访问的文件系统的实现方法采用N-ary树结构管理文件系统所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,而无需按文件逻辑顺序在物理地址空间顺序存储。基于N-ary树结构,同一文件系统可实现4K、2M、1G等不同容量级别的文件存储。

本发明的基于N-ary树结构的随机访问的文件系统的实现方法应用于动态随机存取存储器及非易失性随机存储器统一编址的存储系统。其中,非易失性随机存储器包括相变存储器、阻变存储器、磁存储器、铁电存储器等。

参照图1,本发明的基于N-ary树结构的随机访问的文件系统的实现方法包括:

1)以页为单位来管理文件系统所有的文件数据。

优选地,页的大小与操作系统内存页的大小一致。通常,4K大小的数据为一页。数据页、节点页大小都是4K,只是因存储的内容不同而分为数据页和节点页。

2)在文件系统中设置iNode区和数据区,数据区包括节点页(NodePage)和数据页(DataPage),数据页用于存储文件数据,节点页用于存储N-ary树中下一级节点页或数据页的物理地址;数据页和节点页在数据区混排;iNode区中所存储的iNode节点(文件管理信息节点)包括iNode节点信息字段、N-ary树级数字段和N-ary树根节点字段,N-ary树级数字段用于存储文件所采用N-ary树结构的级数,N-ary树根节点字段用于存储文件第N级节点页NodePageN的起始物理地址;

与现有技术中相同,本发明的文件系统包括超级块区、位图区、iNode区和数据区。如图2所示,在iNode区,每个iNode节点在现有的iNode节点信息字段的基础上增加了N-ary树级数字段和N-ary树根节点字段。其中,iNode节点信息字段用于存储文件的管理信息,如创建人、创建时间、存放目录、权限等等;N-ary树级数字段用于存储文件所采用N-ary树结构的级数;N-ary树根节点字段用于存储文件第N级节点页PageN起始物理地址。本发明的数据区与现有技术中文件系统的数据区也不同。本发明的数据区的页分为节点页和数据页。节点页用于存储N-ary树中下一级节点页或数据页的物理地址,数据页用于存储文件数据。

优选地,数据页和节点页是在向文件写入数据时动态分配的。具体地,向文件写入数据时,根据写入地址判定数据页是否已经存在,若不存在,则分配数据页,并补齐该数据页至根节点间路径上所需的节点页,从而实现文件数据在物理存储空间内的随机存储,而无需按文件逻辑顺序在物理地址空间顺序存储。

由于一个文件系统中的不同文件可以采用不同的N-ary树结构级数,因此每个文件对应的文件管理信息iNode节点中标识该文件存储数据所采用N-ary树结构级数的N-ary树级数字段所存储的内容不同,可以是1、2、3……等不同值。基于不同文件采用的N-ary树结构级数不同,iNode节点中的N-ary树根节点字段保存的起始物理地址的所对应节点页NodePageN的级数也不同。例如,采用1-ary树结构管理的文件,则iNode节点的N-ary树根节点字段保存的起始物理地址所对应的节点页是该文件的第1级节点页NodePage1;采用2-ary树结构管理的文件,则iNode节点的N-ary树根节点字段保存的起始物理地址所对应的节点页是该文件的第2级节点页NodePage2;采用3-ary树结构管理的文件,则iNode节点的N-ary树根节点字段保存的起始物理地址所对应的节点页是该文件的第3级节点页NodePage3;以此类推,将文件采用N-ary树结构所对应最高级数节点页第N级节点页NodePageN所对应的物理地址写入到iNode节点N-ary树根节点字段。

优选地,本发明的文件系统中的文件具有逻辑长度和物理长度。逻辑长度表示该文件当前的N-ary树若将节点补充完整,全部数据页能够存储的数据量。物理长度表示该文件当前的N-ary树已创建的所有节点占据的页的数据量之和。因此,逻辑长度为文件的长度,物理长度则用来计算文件系统的占用空间和剩余空间。

3)以文件所对应的第N级节点页NodePageN页号为根节点,以第(N-1)级节点页NodePageN-1页号为第1级子节点,以此类推,以第1级节点页NodePage1页号为第(N-1)级子节点,形成一个N-ary树以对该文件的所有数据进行存储管理,第1级节点页为数据页。

具体地,文件数据所在的物理存储空间,基于文件所对应的文件第N级节点页NodePageN页号、第(N-1)级节点页NodePageN-1页号,……,第1级节点页NodePage1页号,以第N级节点页NodePageN页号为根节点,以第(N-1)级节点页NodePageN-1页号为第1级子节点,以此类推,第1级节点页NodePage1页号为第(N-1)级子节点,形成一个N-ary树来对文件数据进行存储管理。在N-ary树中每一级节点以页表方式管理其子节点的,每级子节点的个数固定为512个。如图3所示,第1级节点页NodePage1页为数据页。也就是说,从根节点到第N-2级子节点用来组织管理节点页,第N-1级子节点用来组织管理数据页。根节点存储第1级子节点对应的节点页的物理地址;第1级子节点存储第2级子节点对应的节点页的物理地址;以此类推,第(N-2)级子节点存储第(N-1)级子节点对应的节点页的物理地址。第1级节点页为数据页,所有数据页占据N-ary树的最后一级节点。因此,节点页中存储的页物理地址可以为下一级节点页物理地址,也可以为数据页物理地址。

特别地,当文件采用的N-ary树中N为1时,该文件只有一个第1级节点页。对应的N-ary树中只有一个以第1级节点页NodePage1页号为节点的根节点,该NodePage1页直接存储的是文件数据,其实质是数据页。

4)N-ary树的遍历顺序为数据页的逻辑顺序。

其中,数据页在N-ary树遍历时的序号为该数据页在文件中的逻辑页号。因此,可以根据文件中的逻辑地址推算出该地址所在的数据页的逻辑页号及该数据页到根节点的路径。

在本发明的基于N-ary树结构的随机访问的文件系统的实现方法中,文件系统创建文件时,包括以下步骤:

a)分配一个iNode节点;

b)指定文件所采用的N-ary树的级数N,为文件分配一个第N级节点页NodePageN

c)将第N级节点页NodePageN的物理地址写入文件对应的iNode节点的N-ary树根节点字段;

d)将文件所采用的N-ary树的级数N写入所分配的iNode节点中的N-ary树级数字段。

通过具体实施例来阐述本发明的基于N-ary树结构的随机访问的文件系统的实现方法。

假如文件1按写操作顺序,对第1个逻辑页、第500个逻辑页、第600个逻辑页、第1000个逻辑页实现了写入操作,则该文件的N-ary树结构以及文件数据在数据区的分布情况如图4所示。该文件具有3个节点页,4个数据页,其中节点页NodePage3为根节点存储着节点页NodePage21以及NodePage22的物理地址,节点页NodePage21存储着与相应逻辑页号对应的数据页DataPage21以及数据页DataPage500的物理地址,节点页NodePage22存储着与相应逻辑页号对应的数据页DataPage600以及数据页DataPage1000的物理地址。

接着,进程要写第700个逻辑页,根据文件的逻辑页号计算可知,第700个逻辑页应该属于第二个子节点NodePage22管理,基于缺页中断机制分配一个与第700个逻辑页相对应的数据页DataPage700,最后将数据页DataPage700的物理地址存储到节点页NodePage22的相应地址字段。

接着,进程要写个第1300个逻辑页,根据文件的逻辑页号计算可知,第1300个逻辑页应该属于节点页NodePage23管理,基于缺页中断机制分配一个与第1300个逻辑页相对应的数据页DataPage1300,以及节点页NodePage23。将数据页DataPage1300的物理地址存储到节点页NodePage23的相应地址字段。最后将节点页NodePage23的物理地址存储到节点页NodePage3的相应地址字段。图5和图6分别为两次写操作后文件数据页在数据区的分布情况变化图和文件的N-ary树的结构变化图。

特别地,在同一个文件系统内,不同的文件可以拥有不同的级数。具体地,一个文件系统中包含多个文件,每个文件采用N-ary树结构管理该文件所存储在物理地址空间的数据。基于每个文件所采用N-ary树结构的级数不同,可实现不同容量级别的数据存储。例如,采用1-ary树结构管理的文件,其存储数据最大容量不超过4K;采用2-ary树结构管理的文件,其存储数据最大容量可达2M;采用3-ary树结构级页表结构管理的文件,其存储数据最大容量可达1G。通过采用更大N的N-ary树结构的管理的文件,可实现更大容量的数据存储。因此,一个文件系统可实现不同容量级别的文件存储,以满足对不同容量级别需求的文件数据存储。

优选地,一个文件所采用的N-ary树的级数可以动态增加。具体地,文件系统从数据区获取一个空闲的节点页作为新的根节点;将文件原根节点的物理地址写入新的根节点的第一个位置,并将新的根节点的物理地址及增加1后的N-ary树的级数更新到该文件的iNode节点中。

因此,基于动态调整N-ary树结构级数能够实现由N级升级到(N+1)级,从而实现文件的升级扩容。增加级数的触发事件包括以下几种:

(1)通过POSIX方式写入数据时地址超越当前文件逻辑长度。

通过POSIX方式写入数据时地址超越当前文件逻辑长度时,从N级调整到N+1级动态调整N-ary树结构级数包括以下步骤:

分配一个第N+1级节点页NodePageN+1作为根节点;

将该文件所对应的第N级节点页NodePageN的物理起始地址写入新分配的第(N+1)级节点页NodePageN+1相应地址字段;

以第(N+1)级节点页NodePageN+1的起始物理地址更新该文件对应的iNode结点的N-ary树根节点字段;

以(N+1)更新该文件对应的iNode节点的N-ary树级数字段;

基于缺页中断机制分配一个数据页DataPage;

补齐数据页DataPage至根节点间路径上所需的节点页(DataPage2,DataPage3,……,D ataPageN)。

(2)通过文件指针定位当前位置时超越当前文件逻辑长度。

通过文件指针定位当前位置时超越当前文件逻辑长度时,从N级调整到N+1级动态调整N-ary树结构级数包括以下步骤:

分配一个第N+1级节点页NodePageN+1

将该文件所对应的第N级节点页NodePageN的物理起始地址写入新分配的第(N+1)级节点页NodePageN+1相应地址字段;

以第(N+1)级节点页NodePageN+1的起始物理地址更新该文件对应的iNode节点的N-ary树根节点字段;

以(N+1)更新该文件对应的iNode节点的N-ary树级数字段。

(3)通过mmap方式将文件映射到进程虚拟空间时指定的长度超越了当前文件逻辑长度。

通过mmap方式将文件映射到进程虚拟空间时指定的长度超越了当前文件逻辑长度时,从N级调整到N+1级动态调整N-ary树结构级数包括以下步骤:

分配一个第N+1级节点页NodePageN+1

将该文件所对应的第N级节点页NodePageN的物理起始地址写入新分配的第(N+1)级节点页NodePageN+1相应地址字段;

以第(N+1)级节点页NodePageN+1的起始物理地址更新该文件对应的iNode节点的N-ary树根节点字段;

以(N+1)更新该文件对应的iNode节点的N-ary树级数字段。

综上所述,本发明的基于N-ary树结构的随机访问的文件系统的实现方法。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1