CN107180092B - 一种文件***的控制方法、装置及终端 - Google Patents
一种文件***的控制方法、装置及终端 Download PDFInfo
- Publication number
- CN107180092B CN107180092B CN201710337922.5A CN201710337922A CN107180092B CN 107180092 B CN107180092 B CN 107180092B CN 201710337922 A CN201710337922 A CN 201710337922A CN 107180092 B CN107180092 B CN 107180092B
- Authority
- CN
- China
- Prior art keywords
- page
- snapshot
- node
- inode
- data
- 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.)
- Active
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
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- 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
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
本发明提供一种文件***的控制方法、装置及终端,通过设置iNode区,iNode节点包括N‑ary树级数字段、N‑ary树根节点字段以及快照版本指针字段;以根节点页为基础建立N‑ary树结构数据区;设置由页索引记录组成的链表管理区;每条页索引记录按顺序对应数据区的一个物理页面;形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合。本发明建立基于数据链表和N‑ary树结构的文件***,实现数据在物理存储空间内的随机存储,无需按文件逻辑顺序在物理地址空间顺序存储,基于链表管理文件中逻辑数据页的快照版本,能够实现文件***的数据快照和回滚,提高文件***的运行效率。
Description
技术领域
本发明涉及文件***的技术领域,特别是涉及一种文件***的控制方法、装置及终端。
背景技术
随着NVDIMM、3D Xpoint等新型存储技术的发展及IBM对存储级内存(StorageClass Memory,SCM)架构的提出,基于混合内存***架构及管理的非易失存储NVM成为研究热点。新型存储技术SCM具有非易失性、读快写快、功耗低等特点,但与DRAM相比仍有差距,有限的写擦循环寿命也降低了***的可靠性。现有技术中,基于新型存储技术SCM提出过多种内存组织方式和优化方法。
随着大数据、云计算、物联网等技术的发展,数据正以前所未有的速度不断增长和累积。如何管理和组织这些数据,对传统的文件***来说是一个挑战。尽管当前的文件***为应用提供了一种易用的数据组织方式,然而该数据组织方式是基于块设备的硬件特点设计的,无法充分发挥SCM可随机访问的性能特点。因此,如何有效地组织数据,让应用程序能够以更接近内存的方式使用和访问,而又能保持文件***可靠、易维护和共享等优势,最大化地提高***整体运行效率成为亟待解决的问题。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种文件***的控制方法、装置及终端,采用N-ary树结构管理该文件***所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,而无需按文件逻辑顺序在物理地址空间顺序存储,而且基于链表管理文件中逻辑数据页的快照版本,实现文件***的数据快照和回滚,从而最大化地提高文件***整体的运行效率。
为实现上述目的及其他相关目的,根据本发明的第一方面,本发明实施例提供一种文件***的控制方法,该控制方法包括以下步骤:
设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点;
以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树包括任意多个层级,上一层级节点存储有相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排;
设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合,用于实现文件的快照回滚。
可选地,所述iNode节点还包括存储其节点信息的iNode节点信息字段,所述控制方法还包括更新iNode节点信息的步骤:
获取待更新的目标iNode节点的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;
如果所述目标iNode节点的创建时间晚于所述***快照时间,更新所述目标iNode节点中的iNode节点信息字段;或者,
如果所述目标iNode节点的创建时间早于所述***快照时间,在所述iNode区分配空闲iNode节点作为快照iNode节点;根据所述目标iNode节点初始化所述快照iNode节点;在所述目标iNode节点中保存所述快照iNode节点号,以指向所述快照iNode节点,以及更新目标iNode节点的iNode节点信息字段。
可选地,所述控制方法还包括更新数据页的步骤:
获取待更新的目标数据页的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;
如果所述目标数据页的创建时间晚于所述***快照时间,将更新数据写入所述目标数据页;或者,
如果所述目标数据页的创建时间早于所述***快照时间,将更新数据写入数据区的空闲页,形成新数据页;在链表管理区设置所述新数据页的页索引记录,并将目标数据页的位置信息和当前时间写入所述新数据页的页索引记录中,使得所述新数据页的页索引记录***到数据页链表的头部;将新数据页的物理地址更新到目标数据页对应的节点页上,使所述节点页指向新数据页。
可选地,所述文件***包括根文件夹,以及所述根文件夹下的快照文件夹,所述根文件夹下除快照文件夹之外的文件内容映射到所述快照文件夹下,所述控制方法还包括:
当通过根文件夹路径访问文件时,读取或写入当前版本的文件;或者,
当通过快照文件夹路径访问文件时,标记所述文件的iNode节点;如果对文件的操作为写入,根据标记后的iNode节点返回拒绝消息,以拒绝对文件进行写入;如果对文件的操作为读取,根据标记后的iNode节点和指定快照时间,读取所述指定快照时间之前最新版本的文件。
可选地,当访问指定时间的目标数据页时,所述控制方法还包括:
从链表管理区,查找与所述目标数据页相对应的页索引链表;
从查找出的所述页索引链表中,选择早于且与所述指定时间最接近的页索引记录;
提取所述页索引记录中的位置信息,并根据所述位置信息,更新所述目标数据页所对应节点页中的物理地址,以使所述节点页指向指定时间所对应的快照版本数据页。
可选地,当将文件回滚到快照时间的文件版本时,所述控制方法还包括:
关闭所有打开的文件;
获取iNode区中所有iNode节点的创建时间和删除时间;当iNode节点的创建时间晚于所述快照时间时,删除回收相应的iNode节点;当iNode节点的删除时间晚于所述快照时间时,恢复相应的iNode节点,以及iNode节点之间的链接关系;
获取链表管理区中所有页索引记录保存的数据页的创建时间;当数据页的创建时间晚于所述快照时间时,回收相对应的数据页,以及删除数据页所对应的页索引链表中的页索引记录;将早于快照时间且与快照时间最接近的页索引记录中的地址更新到所述数据页的节点页,恢复文件至快照时间的文件版本。
根据本发明的第二方面,本发明实施例提供一种文件***的控制装置,该控制装置包括:
iNode区设置模块,用于设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点;
数据区设置模块,用于以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树包括任意多个层级,上一层级节点存储有相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排;
链表管理区设置模块,用于设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合,用于实现文件的快照回滚。
可选地,所述控制装置还包括iNode节点信息更新模块,所述iNode节点还包括存储其节点信息的iNode节点信息字段,所述iNode节点更新模块,用于,
获取待更新的目标iNode节点的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;
如果所述目标iNode节点的创建时间晚于所述***快照时间,更新所述目标iNode节点中的iNode节点信息字段;或者,
如果所述目标iNode节点的创建时间早于所述***快照时间,在所述iNode区分配空闲iNode节点作为快照iNode节点,并更新所述快照版本指针字段;根据所述目标iNode节点初始化所述快照iNode节点;在所述目标iNode节点中保存所述快照iNode节点号,以指向所述快照iNode节点,以及更新目标iNode节点的iNode节点信息字段。
可选地,所述控制装置还包括数据页更新模块,用于,
获取待更新的目标数据页的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;
如果所述目标数据页的创建时间晚于所述***快照时间,将更新数据写入所述目标数据页;或者,
如果所述目标数据页的创建时间早于所述***快照时间,将更新数据写入数据区的空闲页,形成新数据页;在链表管理区设置所述新数据页的页索引记录,并将目标数据页的位置信息和当前时间写入所述新数据页的页索引记录中,使得所述新数据页的页索引记录***到数据页链表的头部;将新数据页的物理地址更新到目标数据页对应的节点页上,使所述节点页指向新数据页。
可选地,所述控制装置还包括操作控制模块,其中,所述文件***包括根文件夹,以及所述根文件夹下的快照文件夹,所述根文件夹下除快照文件夹之外的文件内容映射到所述快照文件夹下,所述操作控制模块用于,
当通过根文件夹路径访问文件时,读取或写入当前版本的文件;或者,
当通过快照文件夹路径访问文件时,标记所述文件的iNode节点;如果对文件的操作为写入,根据标记后的iNode节点返回拒绝消息,以拒绝对文件进行写入;如果对文件的操作为读取,根据标记后的iNode节点和指定快照时间,读取所述指定快照时间之前最新版本的文件。
可选地,所述控制装置还包括访问控制模块,用于,
从链表管理区,查找与所述目标数据页相对应的页索引链表;
从查找出的所述页索引链表中,选择早于且与所述指定时间最接近的页索引记录;
提取所述页索引记录中的位置信息,并根据所述位置信息,更新所述目标数据页所对应节点页中的物理地址,以使所述节点页指向指定时间所对应的快照版本数据页。
可选地,所述控制装置还包括回滚模块,用于,
关闭所有打开的文件;
获取iNode区中所有iNode节点的创建时间和删除时间;当iNode节点的创建时间晚于所述快照时间时,删除回收相应的iNode节点;当iNode节点的删除时间晚于所述快照时间时,恢复相应的iNode节点,以及iNode节点之间的链接关系;
获取链表管理区中所有页索引记录保存的数据页的创建时间;当数据页的创建时间晚于所述快照时间时,回收相对应的数据页,以及删除数据页所对应的页索引链表中的页索引记录;将早于快照时间且与快照时间最接近的页索引记录中的地址更新到所述数据页的节点页,恢复文件至快照时间的文件版本。
根据本发明的第三方面,本发明实施例还提供一种终端,所述终端包括至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点;
以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树包括任意多个层级,上一层级节点存储相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排;
设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合。
如上所述,本发明的文件***的控制方法、装置及终端,具有以下有益效果:通过设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点;以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树包括任意多个层级,上一层级节点存储有相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排;设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合。本发明建立了基于数据链表和N-ary树结构实现快速回滚的随机访问的文件***,采用N-ary树结构管理文件***所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,而无需按文件逻辑顺序在物理地址空间顺序存储,而且,基于链表管理文件中逻辑数据页的快照版本,能够高效实现文件***的数据快照和回滚,从而提高文件***的运行效率。
附图说明
图1显示为本发明实施例提供的一种文件***的结构示意图。
图2显示为本发明实施例提供的一种文件***的控制方法的流程示意图。
图3显示为本发明实施例提供的一种iNode区的结构示意图。
图4显示为本发明实施例提供的一种N-ary树的结构示意图。
图5显示为本发明实施例提供的一种iNode节点信息更新方法的流程示意图。
图6显示为本发明实施例提供的一种数据页更新方法的流程示意图。
图7显示为本发明实施例提供的一种数据区结构的示意图。
图8显示为本发明实施例提供的一种文件访问控制方法的流程示意图。
图9显示为本发明实施例提供的一种根文件和快照文件访问的原理示意图。
图10显示为本发明实施例提供的一种快照文件访问方法的流程示意图。
图11显示为本发明实施例提供的一种文件回滚方法的流程示意图。
图12显示为本发明实施例提供的一种文件***的控制装置的结构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
请参阅图1至图12。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明实施例中的文件***的控制方法基于数据链表和N-ary树结构实现快速回滚的随机访问的文件***的控制方法,采用N-ary树结构管理文件***所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,而无需按文件逻辑顺序在物理地址空间顺序存储。基于链表管理文件中逻辑数据页的快照版本,实现文件***的数据快照和回滚。
为了清楚地描述本发明实施例的文件***的控制方法,首先对本发明实施例中的文件***的结构进行说明。参见图1,为本发明实施例提供的一种文件***的结构示意图,如图1所示,一示例性实施例中,所述文件***包括设置在存储器上的iNode区、链表区和数据区,以及超级块区和位图区;其中,所述超级块区用于存储文件***的大小、空的和填满的块等信息,所述位图区用于存储块的使用状态。本发明实施例的文件***基于上述结构实现文件数据的随机存储,以及实现文件***的数据快照和回滚;需要说明的是,本发明实施例中文件***的控制方法可以应用于动态随机存取存储器及非易失性随机存储器统一编址的存储***。而且,非易失性随机存储器包括相变存储器、阻变存储器、磁存储器、铁电存储器等。
参见图2,为本发明实施例提供的一种文件***的控制方法的流程示意图,如图2所示,本发明实施例示出了处理器实施该文件***的控制方法的过程:
步骤S101:设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点。
参见图3,为本发明实施例提供的一种iNode区的结构示意图,如图3所示,所述iNode区中所存储的iNode节点包括iNode节点信息字段、N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述iNode节点信息字段用于存储文件的管理信息,如创建人、创建时间、存放目录、权限等等;所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数;所述N-ary树根节点字段用于存储文件第N级节点页的起始物理地址;所述快照版本指针字段用于指向该iNode节点的最近一次快照所对应的快照iNode节点。
步骤S102:以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树包括任意多个层级,上一层级节点存储有相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排。
N-ary树,又叫N叉树,是一种树型数据结构,用来完成数据的快速排序、数据压缩和快速检索。本发明实施例中的数据区包括数据页和节点页,所述数据页用于存储文件数据,所述节点页用于存储N-ary树中下一级节点页或数据页的物理地址;所述数据页和所述节点页在数据区混排。以文件所对应的第N级节点页页号为根节点,以第(N-1)级节点页页号为第1级子节点,以此类推,以第1级节点页页号为第(N-1)级子节点,形成一个N-ary树以对该文件的所有数据进行存储管理;其中第1级节点页为数据页;N-ary树的遍历顺序为数据页的逻辑顺序;而且,在本发明实施例中,N-ary树具有一个根节点,每个节点的子节点数可以不完全相同。
参见图4,为本发明实施例提供的一种N-ary树的结构示意图,如图4所示,以文件所对应的第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个。如图4所示,第1级节点页NodePage1页为数据页。也就是说,从根节点到第N-2级子节点用来组织管理节点页,第N-1级子节点用来组织管理数据页。根节点存储第1级子节点对应的节点页的物理地址;第1级子节点存储第2级子节点对应的节点页的物理地址;以此类推,第(N-2)级子节点存储第(N-1)级子节点对应的节点页的物理地址。第1级节点页为数据页,所有数据页占据N-ary树的最后一级节点。因此,节点页中存储的页物理地址可以为下一级节点页物理地址,也可以为数据页物理地址。
在本发明中,以页的方式来管理所有的文件数据,页的大小与操作***内存页大小一致。N-ary树的遍历顺序为数据页的逻辑顺序。
其中,数据页在N-ary树遍历时的序号为该数据页在文件中的逻辑页号。因此,可以根据文件中的逻辑地址推算出该地址所在的数据页的逻辑页号及该数据页到根节点的路径。
步骤S103:设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合。
所述链表管理区由多条页索引记录组成,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页面数相同,数据区中每个数据页所对应的页索引记录内保存该数据页的创建时间及其上一个版本数据页的位置信息,从而在数据区形成数据页链表,每条数据页链表中所有数据页对应文件中某个逻辑数据页的当前版本和快照产生的全部历史版本。本发明实施的链表管理区用于管理文件中逻辑数据页的快照版本,实现文件***的数据快照和回滚。
在一示例性实施例中,链表管理区由N条页索引记录组成,每条页索引记录对应数据区的一个物理页面,链表管理区容量为数据区总容量的1/512,页索引记录以8字节为单位,建立页索引记录与数据区物理页之间的映射关系。链表管理区的页索引记录的前4个字节存储页物理地址,后4个字节存储物理页修改时间。文件***的每个逻辑页与1个或多个页索引记录存在关联关系,页索引记录的修改时间是指逻辑页当前的修改时间,页索引记录的页物理地址是指逻辑页前一次修改后所对应数据页的物理地址。文件***中的逻辑页被多次修改时,同一逻辑页将有多个版本的数据页,多个版本的数据页均被保存在数据区,且每个版本的数据页分别对应占用存储器的一个物理页面。与同一逻辑页存在关联关系的页索引记录按照该逻辑页的时间修改先后顺序形成一页索引链表,每条数据页链表中所有数据页对应文件中某个逻辑数据页的当前版本和快照产生的全部历史版本。
由上述实施例的描述可以见,本发明实施例提供的一种文件***的控制方法,通过设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点;以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树包括任意多个层级,上一层级节点存储有相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排;设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合。本发明建立了基于数据链表和N-ary树结构实现快速回滚的随机访问的文件***,采用N-ary树结构管理文件***所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,而无需按文件逻辑顺序在物理地址空间顺序存储,而且,基于链表管理文件中逻辑数据页的快照版本,能够高效实现文件***的数据快照和回滚,从而提高文件***的运行效率。
为了对本发明实施例中的文件***中iNode节点信息进行更新,本发明的一示例性实施例还实现了iNode节点信息的更新。参见图5,为本发明实施例提供的一种iNode节点信息更新方法的流程示意图,如图5所示,本发明实施例示出了更新iNode节点信息的过程:
步骤S201:获取待更新的目标iNode节点的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间。
于本发明一实施案例中,***请求更新一文件A的文件名时,则需要对文件A对应目标iNode节点中的节点信息进行更新。首先,处理器可以通过读取iNode节点信息字段,获取目标iNode节点的创建时间TA;同时,在文件***每次创建快照时,会保存记录每次快照的时间,处理器能够获取文件***最近一次的快照时间,即***快照时间Tsnapshot。
步骤S202:如果所述目标iNode节点的创建时间晚于所述***快照时间,更新所述目标iNode节点中的iNode节点信息字段。
进一步,处理器比较创建时间TA和***快照时间Tsnapshot。若TA晚于Tsnapshot,,则说明文件A的iNodeA节点创建时间晚于最近一次快照创建时间,而下一次快照时间还没到达,可以直接对目标iNode节点中的iNode节点信息字段进行多次修改,从而实现文件A对应的iNodeA节点信息的更新。
步骤S203:如果所述目标iNode节点的创建时间早于所述***快照时间,在所述iNode区分配空闲iNode节点作为快照iNode节点;根据所述目标iNode节点初始化所述快照iNode节点;在所述目标iNode节点中保存所述快照iNode节点号,以指向所述快照iNode节点,以及更新目标iNode节点的iNode节点信息字段。
若TA早于Tsnapshot,,则说明文件A的iNodeA节点创建时间早于最近一次快照创建时间,最近一次快照创建时已经保存过iNodeA节点的状态信息了,再次更新iNodeA节点信息时,则需要在iNode区新分配一个空闲iNodeA1节点作为节点iNodeA的快照iNodeA1,基于iNodeA节点信息初始化快照iNodeA1节点信息,并在iNodeA节点上保存快照iNodeA1节点号,然后基于节点iNodeA,通过修改iNode节点信息字段完成更新。而且,在具体实施时,可以更新iNodeA中的快照版本指针字段,以使快照版本指针字段指向快照iNode A1。
由于数据页承载了文件***的中文件数据信息,对文件***进行操作时通常会对数据页进行更新,本发明实施例还提供了一种文件***的数据页的更新方法。参见图6,为本发明实施例提供的一种数据页更新方法的流程示意图,如图6所示,本发明实施例示出了更新数据页的过程:
步骤S301:获取待更新的目标数据页的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间。
于本发明一实施案例中,对文件A进行写操作。参见图7,为本发明实施例提供的一种数据区结构的示意图,假如文件A按写操作顺序,对第1个逻辑页、第500个逻辑页、第600个逻辑页、第1000个逻辑页实现了写入操作,则该文件的N-ary树结构以及文件数据在数据区的分布情况如图7所示。该文件具有3个节点页,4个数据页,其中节点页NodePage3为根节点存储着节点页NodePage21以及NodePage22的物理地址,节点页NodePage21存储着与相应逻辑页号对应的数据页DataPage21以及数据页DataPage5001的物理地址,节点页NodePage22存储着与相应逻辑页号对应的数据页DataPage6001以及数据页DataPage10001的物理地址。相对应地,在链表管理区中4条索引记录分别对应着数据页DataPage21、DataPage5001、DataPage6001、以及数据页DataPage10001,记录了相应数据页的创建时间。
本发明实施例将以对第500个逻辑页进行数据更新为例,详细描述数据页的更新过程。在对第500个逻辑页进行第一次更新时,NodePage21存储有数据页DataPage5001的物理地址,则所述目标数据页可以理解为DataPage5001,处理器首先通过查找链表管理区中与DataPage5001相对应的索引记录,从而获取DataPage5001的创建时间;同时,如上述实例的描述,处理器还能够获取文件***的***快照时间Tsnapshot,。
步骤S302:如果所述目标数据页的创建时间晚于所述***快照时间,将更新数据写入所述目标数据页。
第500个逻辑页所对应的数据页DataPage5001创建时间TDataPage5001与并与文件***最近一次的快照时间Tsnapshot,相比较,若TDataPage5001晚于Tsnapshot,则说明第500个逻辑页所对应的数据页DataPage5001创建时间晚于最近一次快照创建时间,而下一次快照时间还没到达,可以直接将更新数据写入在数据页DataPage5001,以在其上多次更新该节点的相关信息。
步骤S303:如果所述目标数据页的创建时间早于所述***快照时间,将更新数据写入数据区的空闲页,形成新数据页;在链表管理区设置所述新数据页的页索引记录,并将目标数据页的位置信息和当前时间写入所述新数据页的页索引记录中,使得所述新数据页的页索引记录***到数据页链表的头部;将新数据页的物理地址更新到目标数据页对应的节点页上,使所述节点页指向新数据页。
若TDataPage5001早于Tsnapshot,,则说明数据页DataPage5001创建时间早于最近一次快照创建时间,最近一次快照创建时已经保存过DataPage5001的状态信息了,进程要再次对第500个逻辑页数据更新时,基于缺页中断机制新分配一个与第500个逻辑页相对应的数据页DataPage5002,在链表区创建一条与数据页DataPage5002相对应的索引记录,然后将数据页DataPage5002的物理地址存储到节点页NodePage21的相应地址字段。在链表管理区,以数据页DataPage5002的分配时间填充与物理将数据页DataPage5002的物理页对应的索引记录的时间字段,以数据页DataPage5001的物理地址更新与物理将数据页DataPage5002的物理页对应的索引记录的物理地址字段。
以此类推,经过对第500个逻辑页多次更新后及多次相应指定时间间隔快照后,继续分配了物理页DataPage5003、DataPage5004、……,DataPage500N,文件A第500个逻辑数据页的当前版本和快照产生的全部历史版本如图7所示。
在本发明的一示例性实施例中,所述文件***可以包括根文件夹,以及所述根文件夹下的快照文件夹,所述根文件夹下除快照文件夹之外的文件内容映射到所述快照文件夹下;具体地,文件***在根文件夹/root下维护一个快照文件夹snapshot,通过映射的方法将根文件***的内容映射到快照文件夹下,通过根文件夹路径访问文件数据的当前版本,通过快照文件夹路径来实现对指定时间相对应的文件快照版本。本发明实施例以POSIX(英文:Portable Operating System Interface of UNIX,中文:可移植操作***接口)方式访问文件数据,通过iNode号标识手段区别快照文件或普通文件,以实现对快照文件的以读访问,对普通文件的读写访问。参见图8,为本发明实施例提供的一种文件访问控制方法的流程示意图,如图8所示,本发明实施例示出了对根文件夹和快照文件夹下的文件访问控制的过程:
步骤S401:当通过根文件夹路径访问文件时,读取或写入当前版本的文件。
参见图9,为本发明实施例提供的一种根文件和快照文件访问的原理示意图,如图9所示,在本发明实施例中,文件***的根目录/root包含一个快照文件夹snapshot/及三个文件File1、File2、File3。***要访问文件***中的数据时,首先将文件***挂载到内存中,创建一个root节点iNoderoot,基于文件***中的root节点信息填充iNoderoot节点信息,当***要访问对iNodeFile1所应的文件时,***将文件File1当前版本的文件数据从文件***读入内存,然后进行相应的读写操作。
步骤S402:当通过快照文件夹路径访问文件时,标记所述文件的iNode节点;如果对文件的操作为写入,根据标记后的iNode节点返回拒绝消息,以拒绝对文件进行写入;如果对文件的操作为读取,根据标记后的iNode节点和指定快照时间,读取所述指定快照时间之前最新版本的文件。
当***要访问快照snapshot文件夹下的文件时,需要将根文件夹的内容映射至快照文件夹下,首先基于文件***中的root节点信息填充iNodesnapshot节点信息,当***要访问snapshot文件夹下iNodeFile1所对应的文件时,首先将标记iNodeFile1,例如设置预定的标识或者在iNode File1相对应的iNode区存储;然后***将标记后的iNodeFile1及相应的指定快照时间下发给文件***。文件***根据被标记iNodeFile1,查找iNodeFile1相对应的文件,并将访问请求指定时间对应的快照版本拷贝到内存中以供***读访问。
为了方便用户访问历史版本的快照文件,提供文件***的灵活性,参见图10,为本发明实施例提供的一种快照文件访问方法的流程示意图,文件***在响应读操作文件***以POSIX方式访问时,可以访问指定时间T0的数据存储状态,如图10所示,本发明实施例示出了访问快照版本文件的过程:
步骤S501:从链表管理区,查找与所述目标数据页相对应的页索引链表。
在一示例性实施例中,以进程请求访问T0时刻之前的逻辑页LPage为例,由于逻辑页LPage可能经历多次快照或者更新,在链表管理区,该逻辑页LPage对应的页索引链表记录了逻辑页LPage快照和更新的所有版本,所述目标数据页可以理解为当前逻辑页LPage所对应的最新版本的数据页。处理器遍历链表管理区中的所有页索引链表,从而查找出与逻辑页LPage以及目标数据页相对应的页索引链表。
步骤S502:从查找出的所述页索引链表中,选择早于且与所述指定时间最接近的页索引记录。
步骤S503:提取所述页索引记录中的位置信息,并根据所述位置信息,更新所述目标数据页所对应节点页中的物理地址,以使所述节点页指向指定时间所对应的快照版本数据页。
通过更新目标数据页所对应的节点页中的物理地址,这样节点页能够指向指定时间T0所对应的快照数据页,从而实现访问文件快照版本。
为了方便文件***的恢复,参见图11,为本发明实施例提供的一种文件回滚方法的流程示意图,如图11所示,本发明实施例示出了文件回滚到快照时间的文件版本的过程:
步骤S601:关闭所有打开的文件。
当接收到文件回滚指示时,处理器控制关闭所有打开的文件。
步骤S602:获取iNode区中所有iNode节点的创建时间和删除时间;当iNode节点的创建时间晚于所述快照时间时,删除回收相应的iNode节点;当iNode节点的删除时间晚于所述快照时间时,恢复相应的iNode节点,以及iNode节点之间的链接关系。
通过遍历文件***的iNode区,获取iNode区中所有iNode节点的创建时间和删除时间,其中,所述创建时间可以理解为创建iNode节点的时间,例如新建一个文件从而创建一个iNode节点的时间,所述删除时间可以理解为删除iNode节点的时间,例如删除一个文件从而删除一个iNode节点的时间。
当iNode节点的创建时间晚于所述快照时间时,表示在快照时间之前,该iNode节点还不存在,则删除回收相应的iNode节点。当iNode节点的删除时间晚于所述快照时间时,表示在快照时间之前,该iNode节点曾经存在,只是在快照时间之后进行了删除,则恢复相应的iNode节点;同时,由于iNode节点可能包括多个快照iNode节点,而且快照iNode节点之间通过快照版本指针字段建立了相应的链表关系,因此,在本发明实施例中,还可以对iNode节点的链接关系进行恢复,通过修改快照版本指针字段的指向能够将删除的iNode节点恢复到链表中;其他iNode节点保留不变。
步骤S603:获取链表管理区中所有页索引记录保存的数据页的创建时间;当数据页的创建时间晚于所述快照时间时,回收相对应的数据页,以及删除数据页所对应的页索引链表中的页索引记录;将早于快照时间且与快照时间最接近的页索引记录中的地址更新到所述数据页的节点页,恢复文件至快照时间的文件版本。
同样对数据区中的数据页进行回滚,遍历链表管理区所有页索引记录中保存的数据页的创建时间;当数据页的创建时间晚于快照时间时,通过更改位图区相应的比特位进行回收,以及删除数据页所对应的页索引链表中的页索引记录,以对链接关系作出相应修改;进一步,将早于快照时间且与快照时间最接近的页索引记录中的地址更新到所述数据页的节点页,恢复文件至快照时间的文件版本;并且,其他数据页保留不变。
与本发明的文件***的控制方法实施例相对应,本发明实施例还提供了一种文件***的控制装置。
参见图12,为本发明实施例提供的一种文件***的控制装置的结构示意图,如图12所示,该文件***的控制装置包括:
iNode区设置模块11,用于设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点;
数据区设置模块12,用于以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树包括任意多个层级,上一层级节点存储有相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排。
链表管理区设置模块13,用于设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合。
在第一种实施情况下,所述控制装置还可以包括iNode节点信息更新模块14,所述iNode节点还包括存储其节点信息的iNode节点信息字段,所述iNode节点更新模块,用于,
获取待更新的目标iNode节点的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;
如果所述目标iNode节点的创建时间晚于所述***快照时间,更新所述目标iNode节点中的iNode节点信息字段;或者,
如果所述目标iNode节点的创建时间早于所述***快照时间,在所述iNode区分配空闲iNode节点作为快照iNode节点,并更新所述快照版本指针字段;根据所述目标iNode节点初始化所述快照iNode节点;在所述目标iNode节点中保存所述快照iNode节点号,以指向所述快照iNode节点,以及更新目标iNode节点的iNode节点信息字段。
在第二种实施情况下,所述控制装置还可以包括数据页更新模块15,用于,
获取待更新的目标数据页的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;
如果所述目标数据页的创建时间晚于所述***快照时间,将更新数据写入所述目标数据页;或者,
如果所述目标数据页的创建时间早于所述***快照时间,将更新数据写入数据区的空闲页,形成新数据页;在链表管理区设置所述新数据页的页索引记录,并将目标数据页的位置信息和当前时间写入所述新数据页的页索引记录中,使得所述新数据页的页索引记录***到数据页链表的头部;将新数据页的物理地址更新到目标数据页对应的节点页上,使所述节点页指向新数据页。
在第三种实施情况下,所述控制装置还包括操作控制模块16,其中,所述文件***包括根文件夹,以及所述根文件夹下的快照文件夹,所述根文件夹下除快照文件夹之外的文件内容映射到所述快照文件夹下,所述操作控制模块用于,
当通过根文件夹路径访问文件时,读取或写入当前版本的文件;或者,
当通过快照文件夹路径访问文件时,标记所述文件的iNode节点;如果对文件的操作为写入,根据标记后的iNode节点返回拒绝消息,以拒绝对文件进行写入;如果对文件的操作为读取,根据标记后的iNode节点和指定快照时间,读取所述指定快照时间之前最新版本的文件。
在第四种实施情况下,所述控制装置还包括访问控制模块17,用于,
从链表管理区,查找与所述目标数据页相对应的页索引链表;
从查找出的所述页索引链表中,选择早于且与所述指定时间最接近的页索引记录;
提取所述页索引记录中的位置信息,并根据所述位置信息,更新所述目标数据页所对应节点页中的物理地址,以使所述节点页指向指定时间所对应的快照版本数据页。
在第五种实施情况下,所述控制装置还可以包括回滚模块18,用于,
关闭所有打开的文件;
获取iNode区中所有iNode节点的创建时间和删除时间;当iNode节点的创建时间晚于所述快照时间时,删除回收相应的iNode节点;当iNode节点的删除时间晚于所述快照时间时,恢复相应的iNode节点,以及iNode节点之间的链接关系;
获取链表管理区中所有页索引记录保存的数据页的创建时间;当数据页的创建时间晚于所述快照时间时,回收相对应的数据页,以及删除数据页所对应的页索引链表中的页索引记录;将早于快照时间且与快照时间最接近的页索引记录中的地址更新到所述数据页的节点页,恢复文件至快照时间的文件版本。
本发明实施例还提供一种终端,具体地,所述终端可以理解为个人计算机、PAD等便携终端、以及服务器等。在本发明实施例中,所述终端包括至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点;
以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树包括任意多个层级,上一层级节点存储相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排;
设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合。
而且,所述终端中的处理器还可以被配置为执行上述文件***的控制方法实施例所描述的方法步骤。
综上所述,本发明提供的一种文件***的控制方法、装置及终端,采用N-ary树结构管理文件***所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,基于链表管理文件中逻辑数据页的快照版本,实现文件***的数据快照和回滚,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (11)
1.一种文件***的控制方法,其特征在于,所述控制方法包括以下步骤:
设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点;
以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树结构包括任意多个层级,上一层级节点存储有相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层级节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排;
设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合,用于实现文件的快照回滚;
所述控制方法还包括更新数据页的步骤:
获取待更新的目标数据页的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;
如果所述目标数据页的创建时间晚于所述***快照时间,将更新数据写入所述目标数据页;或者,
如果所述目标数据页的创建时间早于所述***快照时间,将更新数据写入数据区的空闲页,形成新数据页;在链表管理区设置所述新数据页的页索引记录,并将目标数据页的位置信息和当前时间写入所述新数据页的页索引记录中,使得所述新数据页的页索引记录***到数据页链表的头部;将新数据页的物理地址更新到目标数据页对应的节点页上,使所述节点页指向新数据页。
2.根据权利要求1所述的文件***的控制方法,其特征在于,所述iNode节点还包括存储其节点信息的iNode节点信息字段,所述控制方法还包括更新iNode节点信息的步骤:
获取待更新的目标iNode节点的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;
如果所述目标iNode节点的创建时间晚于所述***快照时间,更新所述目标iNode节点中的iNode节点信息字段;或者,
如果所述目标iNode节点的创建时间早于所述***快照时间,在所述iNode区分配空闲iNode节点作为快照iNode节点;根据所述目标iNode节点初始化所述快照iNode节点;在所述目标iNode节点中保存快照iNode节点号,以指向所述快照iNode节点,以及更新目标iNode节点的iNode节点信息字段。
3.根据权利要求1所述的文件***的控制方法,其特征在于,所述文件***包括根文件夹,以及所述根文件夹下的快照文件夹,所述根文件夹下除快照文件夹之外的文件内容映射到所述快照文件夹下,所述控制方法还包括:
当通过根文件夹路径访问文件时,读取或写入当前版本的文件;或者,
当通过快照文件夹路径访问文件时,标记所述文件的iNode节点;如果对文件的操作为写入,根据标记后的iNode节点返回拒绝消息,以拒绝对文件进行写入;如果对文件的操作为读取,根据标记后的iNode节点和指定快照时间,读取所述指定快照时间之前最新版本的文件。
4.根据权利要求1所述的文件***的控制方法,其特征在于,当访问指定时间的目标数据页时,所述控制方法还包括:
从链表管理区,查找与所述目标数据页相对应的页索引链表;
从查找出的所述页索引链表中,选择早于且与所述指定时间最接近的页索引记录;
提取所述页索引记录中的位置信息,并根据所述位置信息,更新所述目标数据页所对应节点页中的物理地址,以使所述节点页指向指定时间所对应的快照版本数据页。
5.根据权利要求1所述的文件***的控制方法,其特征在于,当将文件回滚到快照时间的文件版本时,所述控制方法还包括:
关闭所有打开的文件;
获取iNode区中所有iNode节点的创建时间和删除时间;当iNode节点的创建时间晚于所述快照时间时,回收相应的iNode节点;当iNode节点的删除时间晚于所述快照时间时,恢复相应的iNode节点,以及iNode节点之间的链接关系;
获取链表管理区中所有页索引记录保存的数据页的创建时间;当数据页的创建时间晚于所述快照时间时,回收相对应的数据页,以及删除数据页所对应的页索引链表中的页索引记录;将早于快照时间且与快照时间最接近的页索引记录中的地址更新到所述数据页的节点页,恢复文件至快照时间的文件版本。
6.一种文件***的控制装置,其特征在于,所述控制装置包括:
iNode区设置模块,用于设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点;
数据区设置模块,用于以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树结构包括任意多个层级,上一层级节点存储有相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层级节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排;
链表管理区设置模块,用于设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合,用于实现文件的快照回滚;
还包括数据页更新模块,用于获取待更新的目标数据页的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;如果所述目标数据页的创建时间晚于所述***快照时间,将更新数据写入所述目标数据页;或者,如果所述目标数据页的创建时间早于所述***快照时间,将更新数据写入数据区的空闲页,形成新数据页;在链表管理区设置所述新数据页的页索引记录,并将目标数据页的位置信息和当前时间写入所述新数据页的页索引记录中,使得所述新数据页的页索引记录***到数据页链表的头部;将新数据页的物理地址更新到目标数据页对应的节点页上,使所述节点页指向新数据页。
7.根据权利要求6所述的文件***的控制装置,其特征在于,所述控制装置还包括iNode节点信息更新模块,所述iNode节点还包括存储其节点信息的iNode节点信息字段,所述iNode节点更新模块,用于,
获取待更新的目标iNode节点的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;
如果所述目标iNode节点的创建时间晚于所述***快照时间,更新所述目标iNode节点中的iNode节点信息字段;或者,
如果所述目标iNode节点的创建时间早于所述***快照时间,在所述iNode区分配空闲iNode节点作为快照iNode节点,并更新所述快照版本指针字段;根据所述目标iNode节点初始化所述快照iNode节点;在所述目标iNode节点中保存快照iNode节点号,以指向所述快照iNode节点,以及更新目标iNode节点的iNode节点信息字段。
8.根据权利要求6所述的文件***的控制装置,其特征在于,所述控制装置还包括操作控制模块,其中,所述文件***包括根文件夹,以及所述根文件夹下的快照文件夹,所述根文件夹下除快照文件夹之外的文件内容映射到所述快照文件夹下,所述操作控制模块用于,
当通过根文件夹路径访问文件时,读取或写入当前版本的文件;或者,
当通过快照文件夹路径访问文件时,标记所述文件的iNode节点;如果对文件的操作为写入,根据标记后的iNode节点返回拒绝消息,以拒绝对文件进行写入;如果对文件的操作为读取,根据标记后的iNode节点和指定快照时间,读取所述指定快照时间之前最新版本的文件。
9.根据权利要求6所述的文件***的控制装置,其特征在于,所述控制装置还包括访问控制模块,用于,
从链表管理区,查找与目标数据页相对应的页索引链表;
从查找出的所述页索引链表中,选择早于且与指定时间最接近的页索引记录;
提取所述页索引记录中的位置信息,并根据所述位置信息,更新所述目标数据页所对应节点页中的物理地址,以使所述节点页指向指定时间所对应的快照版本数据页。
10.根据权利要求6所述的文件***的控制装置,其特征在于,所述控制装置还包括回滚模块,用于,
关闭所有打开的文件;
获取iNode区中所有iNode节点的创建时间和删除时间;当iNode节点的创建时间晚于快照时间时,回收相应的iNode节点;当iNode节点的删除时间晚于所述快照时间时,恢复相应的iNode节点,以及iNode节点之间的链接关系;
获取链表管理区中所有页索引记录保存的数据页的创建时间;当数据页的创建时间晚于所述快照时间时,回收相对应的数据页,以及删除数据页所对应的页索引链表中的页索引记录;将早于快照时间且与快照时间最接近的页索引记录中的地址更新到所述数据页的节点页,恢复文件至快照时间的文件版本。
11.一种终端,其特征在于,所述终端包括至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
设置用于存储iNode节点的iNode区,所述iNode节点包括N-ary树级数字段、N-ary树根节点字段以及快照版本指针字段;其中,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件根节点页的物理地址,所述快照版本指针字段用于指向所述iNode节点的最近一次快照所对应的快照iNode节点;
以根节点页为基础建立N-ary树结构的数据区;其中,所述N-ary树结构包括任意多个层级,上一层级节点存储相对应的下一层级节点的物理地址;最后一层级节点均为数据页,除所述最后一层级节点之外的其他节点均为节点页,所述数据页和所述节点页在所述数据区混排;
设置由页索引记录组成的链表管理区;其中,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页数相同;每个数据页所对应的页索引记录存储所述数据页的创建时间以及上一版本数据页的位置信息,从而形成页索引链表,每条页索引链表对应文件中一个数据页的当前版本和快照产生的全部历史版本的集合,用于实现文件的快照回滚;
还包括数据页更新模块,用于获取待更新的目标数据页的创建时间和***快照时间,其中,所述***快照时间为文件***最近一次快照的时间;如果所述目标数据页的创建时间晚于所述***快照时间,将更新数据写入所述目标数据页;或者,如果所述目标数据页的创建时间早于所述***快照时间,将更新数据写入数据区的空闲页,形成新数据页;在链表管理区设置所述新数据页的页索引记录,并将目标数据页的位置信息和当前时间写入所述新数据页的页索引记录中,使得所述新数据页的页索引记录***到数据页链表的头部;将新数据页的物理地址更新到目标数据页对应的节点页上,使所述节点页指向新数据页。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710337922.5A CN107180092B (zh) | 2017-05-15 | 2017-05-15 | 一种文件***的控制方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710337922.5A CN107180092B (zh) | 2017-05-15 | 2017-05-15 | 一种文件***的控制方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107180092A CN107180092A (zh) | 2017-09-19 |
CN107180092B true CN107180092B (zh) | 2020-10-23 |
Family
ID=59831495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710337922.5A Active CN107180092B (zh) | 2017-05-15 | 2017-05-15 | 一种文件***的控制方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107180092B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704599A (zh) * | 2017-10-16 | 2018-02-16 | 杭州安恒信息技术有限公司 | 一种实现edr数据快速检索的方法与装置 |
CN110018989B (zh) * | 2017-11-13 | 2021-05-18 | 华为技术有限公司 | 一种快照比对的方法和装置 |
CN108062233A (zh) * | 2017-12-29 | 2018-05-22 | 上海大汉三通无线通信有限公司 | 一种文件回退方法、***、装置及计算机可读存储介质 |
CN110019016A (zh) * | 2017-12-29 | 2019-07-16 | 北京忆恒创源科技有限公司 | 提供逻辑键的kv存储设备及其方法 |
CN108563751A (zh) * | 2018-04-16 | 2018-09-21 | 中国刑事警察学院 | 数据库碎片提取方法 |
CN109445989A (zh) * | 2018-10-22 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种文件***数据备份方法及装置 |
CN109710542B (zh) * | 2018-12-28 | 2021-03-16 | 北京像素软件科技股份有限公司 | 一种满n叉树构建方法及装置 |
CN109933564A (zh) * | 2019-03-27 | 2019-06-25 | 中国科学院上海微***与信息技术研究所 | 基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质 |
CN111090835B (zh) * | 2019-12-06 | 2022-04-19 | 支付宝(杭州)信息技术有限公司 | 一种文件衍生图的构建方法及装置 |
CN111400101B (zh) * | 2020-03-18 | 2021-06-01 | 北京北亚宸星科技有限公司 | 一种jfs2文件***数据删除时的数据恢复方法及*** |
CN111797058B (zh) * | 2020-07-02 | 2024-02-09 | 长沙景嘉微电子股份有限公司 | 一种通用文件***及文件管理的方法 |
CN113986824B (zh) * | 2021-10-27 | 2024-02-23 | 西安热工研究院有限公司 | 一种高效存储和检索时序数据的方法 |
CN115185891B (zh) * | 2022-09-14 | 2023-01-17 | 联想凌拓科技有限公司 | 文件***的数据管理方法及装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178677A (zh) * | 2007-11-09 | 2008-05-14 | 中国科学院计算技术研究所 | 一种计算机文件***的快照方法 |
US8463820B2 (en) * | 2009-05-26 | 2013-06-11 | Intel Corporation | System and method for memory bandwidth friendly sorting on multi-core architectures |
CN103577329A (zh) * | 2013-10-18 | 2014-02-12 | 华为技术有限公司 | 一种快照管理方法和装置 |
US9244928B1 (en) * | 2013-03-05 | 2016-01-26 | Ca, Inc. | Systems and methods for directory snapshot |
CN106354890A (zh) * | 2016-11-22 | 2017-01-25 | 中国科学院上海微***与信息技术研究所 | 一种基于N‑ary树结构的随机访问的文件***的实现方法 |
-
2017
- 2017-05-15 CN CN201710337922.5A patent/CN107180092B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178677A (zh) * | 2007-11-09 | 2008-05-14 | 中国科学院计算技术研究所 | 一种计算机文件***的快照方法 |
US8463820B2 (en) * | 2009-05-26 | 2013-06-11 | Intel Corporation | System and method for memory bandwidth friendly sorting on multi-core architectures |
US9244928B1 (en) * | 2013-03-05 | 2016-01-26 | Ca, Inc. | Systems and methods for directory snapshot |
CN103577329A (zh) * | 2013-10-18 | 2014-02-12 | 华为技术有限公司 | 一种快照管理方法和装置 |
CN106354890A (zh) * | 2016-11-22 | 2017-01-25 | 中国科学院上海微***与信息技术研究所 | 一种基于N‑ary树结构的随机访问的文件***的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107180092A (zh) | 2017-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107180092B (zh) | 一种文件***的控制方法、装置及终端 | |
US8135907B2 (en) | Method and system for managing wear-level aware file systems | |
US10289315B2 (en) | Managing I/O operations of large data objects in a cache memory device by dividing into chunks | |
JP6205650B2 (ja) | 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置 | |
US8315995B1 (en) | Hybrid storage system | |
KR100484147B1 (ko) | 플래시 메모리 관리 방법 | |
US10565125B2 (en) | Virtual block addresses | |
US8849880B2 (en) | Providing a shadow directory and virtual files to store metadata | |
US20150193434A1 (en) | Storage media abstraction for uniform data storage | |
EP1265152B1 (en) | Virtual file system for dynamically-generated web pages | |
TW201935243A (zh) | 固態驅動器、分散式資料儲存系統和利用鍵值儲存的方法 | |
US20090265519A1 (en) | Method and system for power aware i/o scheduling | |
CN101488153A (zh) | 嵌入式Linux下大容量闪存文件***的实现方法 | |
CN106682110B (zh) | 一种基于哈希格网索引的影像文件存储和管理***及方法 | |
CN107463447A (zh) | 一种基于远程直接非易失内存访问的b+树管理方法 | |
US11875055B2 (en) | Storage device that receives inode address information to reduce external communication overhead | |
Lee et al. | An efficient index buffer management scheme for implementing a B-tree on NAND flash memory | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN110377599A (zh) | 键值存储装置及其操作方法 | |
US11269771B2 (en) | Storage device for improving journal replay, operating method thereof, and electronic device including the storage device | |
WO2022262381A1 (zh) | 一种数据压缩方法及装置 | |
US7424574B1 (en) | Method and apparatus for dynamic striping | |
US20170286442A1 (en) | File system support for file-level ghosting | |
CN115964350A (zh) | 一种文件***管理模型及*** | |
CN115904255A (zh) | 一种数据请求方法、装置、设备及存储介质 |
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 |