CN109933564A - 基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质 - Google Patents
基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质 Download PDFInfo
- Publication number
- CN109933564A CN109933564A CN201910238373.5A CN201910238373A CN109933564A CN 109933564 A CN109933564 A CN 109933564A CN 201910238373 A CN201910238373 A CN 201910238373A CN 109933564 A CN109933564 A CN 109933564A
- Authority
- CN
- China
- Prior art keywords
- page
- data
- snapshot
- node
- inode
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供基于链表和N‑ary树结构实现快速回滚的文件***管理方法、装置、终端、介质,所述方法包括:基于N‑ary树结构管理文件***所存储在物理存储空间的数据,以令文件数据在物理存储空间内随机存储;基于链表管理文件中逻辑数据页的快照版本,执行文件***的数据快照和回滚。本申请采用N‑ary树结构管理文件***所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,基于链表管理文件中逻辑数据页的快照版本,实现文件***的数据快照和回滚。
Description
技术领域
本申请涉及文件***管理技术领域,特别是涉及基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质。
背景技术
随着NVDIMM、3D Xpoint等新型存储技术的发展及IBM对存储级内存(StorageClass Memory,SCM)架构的提出,基于混合内存***架构及管理的非易失存储NVM成为研究热点。新型存储技术SCM具有非易失性、读快写快、功耗低等特点,但与DRAM相比仍有差距,有限的写擦循环寿命也降低了***的可靠性。现有技术中,基于新型存储技术SCM提出过多种内存组织方式和优化方法。
随着大数据、云计算、物联网等技术的发展,数据正以前所未有的速度不断增长和累积。如何管理和组织这些数据,对传统的文件***来说是一个挑战。尽管当前的文件***为应用提供了一种易用的数据组织方式,然而该数据组织方式是基于块设备的硬件特点设计的,无法充分发挥SCM可随机访问的性能特点。因此,如何有效地组织数据,让应用程序能够以更接近内存的方式使用和访问,而又能保持文件***可靠、易维护和共享等优势,最大化地提高***整体运行效率成为亟待解决的问题。
申请内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质,用于解决现有技术中的问题。
为实现上述目的及其他相关目的,本申请的第一方面提供一种基于链表和N-ary树结构实现快速回滚的文件***管理方法,其包括:基于N-ary树结构管理文件***所存储在物理存储空间的数据,以令文件数据在物理存储空间内随机存储;基于链表管理文件中逻辑数据页的快照版本,执行文件***的数据快照和回滚。
于本申请的第一方面的一些实施例中,所述文件***设有:iNode区,其存储有多个iNode节点;各所述iNode节点包括iNode节点信息字段、N-ary树级数字段、N-ary树根节点字段、以及快照版本指针字段;其中,所述iNode节点信息字段用于存储文件的管理信息;所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数;所述N-ary树根节点字段用于存储文件第N级节点页PageN起始物理地址;所述快照版本指针字段用于指向该iNode节点的最近一次快照所对应的快照iNode节点;数据区,用于存储文件数据;所述数据区的页包括相互混排的节点页和数据页;
其中,以文件所对应的第N级节点页页号为根节点,以第(N-1)级节点页页号为第1级子节点,以此类推,以第1级节点页页号为第(N-1)级子节点,形成一个N-ary树以对该文件的所有数据进行存储管理;所有数据页占据N-ary树的最后一级节点,其根节点物理地址和树的级数被记录在iNode区中该文件所对应的iNode结构中;链表区,用于管理文件中逻辑数据页的快照版本;所述链表区包括多条页索引记录,各条索引记录对应所述数据区的一物理页面。数据区中每个数据页所对应的页索引记录内保存该数据页的创建时间及其上一个版本数据页的位置信息,从而在数据区形成数据页链表,每条数据页链表中所有数据页对应文件中某个逻辑数据页的当前版本和快照产生的全部历史版本。
于本申请的第一方面的一些实施例中,根据iNode节点的创建时间与最近一次快照时间的比较结果信息,选择相应的该iNode节点的更新方式。创建快照时,文件***记录当前快照时间,***请求更新数据页时,若该数据页创建时间先于当前快照时间,则将更新数据写入空闲页,作为新的数据页,将原数据页位置信息和当前时间写入新数据页对应的索引记录中,使得新数据页***到数据页链表的头部,并更新节点页内容使其指向新数据页;若该数据页创建时间晚于当前快照时间,说明当前数据页还未备份过,则可基于当前数据页多次更新数据,直至下一次快照时间到达。
于本申请的第一方面的一些实施例中,所述方法包括:若该iNode节点的创建时间晚于最近一次快照时间,则在该iNode节点上进行更新;若该iNode节点的创建时间早于最近一次快照时间,则在iNode区分配一空闲iNode节点作为原iNode节点的备份节点,并令原iNode节点存储备份节点的节点号后进行更新。
于本申请的第一方面的一些实施例中,所述文件***在根文件夹下维护一个快照文件夹,并将根文件夹的内容映射至快照文件夹下;其中:在通过根文件夹路径访问的情况下,读写操作直接针对文件数据的当前版本完成;在通过快照文件夹路径访问的情况下,拒绝写操作,并对读操作返回文件数据中在指定快照时间之前的最新版本。
于本申请的第一方面的一些实施例中,所述方法包括:文件***在响应读操作文件***以POSIX方式访问时,通过如下步骤访问指定时间的数据存储状态:进程请求访问该时刻之前的逻辑页;文件***遍历链表区域该逻辑页相对应的页索引链表,以获取早于该时刻且距离该时刻最近的页表索引记录;根据所述索引记录中所保存的页物理地址更新N-ary树结构中该逻辑页在相应节点页中对应的物理地址信息。
于本申请的第一方面的一些实施例中,所述方法包括:通过如下步骤回滚至某一快照点:关闭当前打开的文件;遍历文件***的iNode区,将创建时间晚于快照时间的iNode节点删除回收;将删除时间晚于快照时间但创建时间早于快照时间的iNode节点恢复,并对链接关系作出相应修改;其它iNode节点保留不变;遍历链表区,将创建时间晚于快照时间的数据页通过更改位图区相应比特进行回收,并对链接关系作出相应修改,恢复文件数据至快照点版本;其它数据页保留不变。
为实现上述目的及其他相关目的,本申请的第二方面提供一种基于链表和N-ary树结构实现快速回滚的文件***管理装置,其包括:数据存储模块,用于基于N-ary树结构管理文件***所存储在物理存储空间的数据,以令文件数据在物理存储空间内随机存储;数据快照和回滚模块,用于基于链表管理文件中逻辑数据页的快照版本,执行文件***的数据快照和回滚。
为实现上述目的及其他相关目的,本申请的第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述基于链表和N-ary树结构实现快速回滚的文件***管理方法。
为实现上述目的及其他相关目的,本申请的第四方面提供一种电子终端,包括:处理器及存储器;所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行所述基于链表和N-ary树结构实现快速回滚的文件***管理方法。
如上所述,本申请的基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质,具有以下有益效果:本申请采用N-ary树结构管理文件***所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,基于链表管理文件中逻辑数据页的快照版本,实现文件***的数据快照和回滚。
附图说明
图1显示为本申请一实施例中基于链表和N-ary树结构实现快速回滚的文件***管理方法的流程示意图。
图2显示为本申请一实施例中N-ary树结构的文件***的示意图。
图3显示为本申请一实施例中文件***的平面布局示意图。
图4显示为本申请一实施例中iNode区的结构示意图。
图5显示为本申请一实施例中文件的N-ary树结构以及文件数据在数据区的分布示意图。
图6显示为本申请一实施例中基于链表和N-ary树结构实现快速回滚的文件***管理装置示意图。
图7显示为本申请一实施例中电子终端的结构示意图。
具体实施方式
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,在下述描述中,参考附图,附图描述了本申请的若干实施例。应当理解,还可使用其他实施例,并且可以在不背离本申请的精神和范围的情况下进行机械组成、结构、电气以及操作上的改变。下面的详细描述不应该被认为是限制性的,并且本申请的实施例的范围仅由公布的专利的权利要求书所限定。这里使用的术语仅是为了描述特定实施例,而并非旨在限制本申请。空间相关的术语,例如“上”、“下”、“左”、“右”、“下面”、“下方”、“下部”、“上方”、“上部”等,可在文中使用以便于说明图中所示的一个元件或特征与另一元件或特征的关系。
在本申请中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”、“固持”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
随着NVDIMM、3D Xpoint等新型存储技术的发展及IBM对存储级内存(StorageClass Memory,SCM)架构的提出,基于混合内存***架构及管理的非易失存储NVM成为研究热点。新型存储技术SCM具有非易失性、读快写快、功耗低等特点,但与DRAM相比仍有差距,有限的写擦循环寿命也降低了***的可靠性。现有技术中,基于新型存储技术SCM提出过多种内存组织方式和优化方法。
随着大数据、云计算、物联网等技术的发展,数据正以前所未有的速度不断增长和累积。如何管理和组织这些数据,对传统的文件***来说是一个挑战。尽管当前的文件***为应用提供了一种易用的数据组织方式,然而该数据组织方式是基于块设备的硬件特点设计的,无法充分发挥SCM可随机访问的性能特点。因此,如何有效地组织数据,让应用程序能够以更接近内存的方式使用和访问,而又能保持文件***可靠、易维护和共享等优势,最大化地提高***整体运行效率成为亟待解决的问题。
鉴于以上所述现有技术的缺点,本申请的主要思想旨在提供能够实现快速回滚的随机访问的基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质,其采用N-ary树结构管理该文件***所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,而无需按文件逻辑顺序在物理地址空间顺序存储,从而最大化地提高文件***整体的运行效率;基于链表管理文件中逻辑数据页的快照版本,实现文件***的数据快照和回滚。
如图1所示,展示本申请一实施例中基于链表和N-ary树结构实现快速回滚的文件***管理方法的流程示意图。于本实施例中,所述方法包括步骤S11和步骤S12。
需要说明的是,本申请提供的方法可应用于控制器,例如:ARM控制器、FPGA控制器、SoC控制器、DSP控制器、或者MCU控制器等等。该方法也可应用于包括存储器、存储控制器、一个或多个处理单元(CPU)、外设接口、RF电路、音频电路、扬声器、麦克风、输入/输出(I/O)子***、显示屏、其他输出或控制设备,以及外部端口等组件的计算机;所述计算机包括但不限于如台式电脑、笔记本电脑、平板电脑、智能手机、智能电视、个人数字助理(Personal Digital Assistant,简称PDA)等个人电脑。该方法还可应用于服务器,所述服务器可以根据功能、负载等多种因素布置在一个或多个实体服务器上,也可以由分布的或集中的服务器集群构成。
在步骤S11中,基于N-ary树结构管理文件***所存储在物理存储空间的数据,以令文件数据在物理存储空间内随机存储。
N-ary树,又叫N叉树,是一种常见的树型数据结构,常常用来完成数据的快速排序、数据压缩和快速检索。N-ary树具有一个根节点,每个节点的子节点数完全相同。本申请提供的基于链表和N-ary树结构实现快速回滚的文件***管理方法可应用于动态随机存取存储器及非易失性随机存储器统一编址的存储***。其中,所述非易失性随机存储器包括相变存储器、阻变存储器、磁存储器、铁电存储器等。
于本实施例中,文件***中设置iNode区、链表区和数据区,文件***基于N-ary树结构实现文件数据的随机存储,并基于链表管理实现文件***的数据快照和回滚。
在一实施例中,所述iNode区中所存储的iNode节点包括N-ary树级数字段和N-ary树根节点字段,所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数,所述N-ary树根节点字段用于存储文件第N级节点页的起始物理地址;iNode节点还包括快照版本指针字段,所述快照版本指针字段用于指向该iNode节点的最近一次快照所对应的快照iNode节点。
在一实施例中,所述数据区包括节点页和数据页,所述数据页用于存储文件数据,所述节点页用于存储N-ary树中下一级节点页或数据页的物理地址;所述数据页和所述节点页在数据区混排。
为便于本领域技术人员理解,现结合图2所展示的N-ary树结构的文件***来进行相应的解释说明。在图2中,以文件所对应的第N级节点页页号为根节点,以第(N-1)级节点页页号为第1级子节点,以此类推,以第1级节点页页号为第(N-1)级子节点,形成一个N-ary树以对该文件的所有数据进行存储管理;其中第1级节点页为数据页;N-ary树的遍历顺序为数据页的逻辑顺序。
在一实施例中,所述链表区由多条页索引记录组成,每条页索引记录按顺序对应数据区的一个物理页面,页索引记录数与数据区物理页面数相同,数据区中每个数据页所对应的页索引记录内保存该数据页的创建时间及其上一个版本数据页的位置信息,从而在数据区形成数据页链表,每条数据页链表中所有数据页对应文件中某个逻辑数据页的当前版本和快照产生的全部历史版本。
如图3所示,展示本申请一实施例中文件***的平面布局示意图。于本实施例中,文件***包括超级块区、位图区、iNode区、链表区和数据区。
于本实施例中,iNode区的结构如图4所示,本实施例中iNode区的结构与现有技术中的iNode区的结构有明显不同,每个iNode节点在现有的iNode节点信息字段的基础上增加了N-ary树级数字段、N-ary树根节点字段、以及快照版本指针字段。
具体的,iNode节点信息字段用于存储文件的管理信息,如创建人、创建时间、存放目录、权限等等;N-ary树级数字段用于存储文件所采用N-ary树结构的级数;N-ary树根节点字段用于存储文件第N级节点页PageN起始物理地址。快照版本指针字段用于指向该iNode节点的最近一次快照所对应的快照iNode节点。
于本实施例中,数据区与现有的文件***中的数据区亦不同,本申请中的数据区的页分为节点页和数据页,节点页和数据页混排,所述节点页用于存储N-ary树中下一级节点页或数据页的物理地址,数据页用于存储文件数据。以文件所对应的第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个。如图2所示,第1级节点页NodePage1页为数据页。也就是说,从根节点到第N-2级子节点用来组织管理节点页,第N-1级子节点用来组织管理数据页。根节点存储第1级子节点对应的节点页的物理地址;第1级子节点存储第2级子节点对应的节点页的物理地址;以此类推,第(N-2)级子节点存储第(N-1)级子节点对应的节点页的物理地址。第1级节点页为数据页,所有数据页占据N-ary树的最后一级节点。因此,节点页中存储的页物理地址可以为下一级节点页物理地址,也可以为数据页物理地址。
本实施例以页的方式来管理所有的-文件数据,页的大小与操作***内存页大小一致。N-ary树的遍历顺序为数据页的逻辑顺序。其中,数据页在N-ary树遍历时的序号为该数据页在文件中的逻辑页号。因此,可以根据文件中的逻辑地址推算出该地址所在的数据页的逻辑页号及该数据页到根节点的路径。
在步骤S12中,基于链表管理文件中逻辑数据页的快照版本,执行文件***的数据快照和回滚。
所述链表区用于管理文件中逻辑数据页的快照版本,实现文件***的数据快照和回滚。具体的,链表管理区由N条页索引记录组成,每条页索引记录对应数据区的一个物理页面,链表管理区容量为数据区总容量的1/512,页索引记录以8字节为单位,建立页索引记录与数据区物理页之间的映射关系。链表管理区的页索引记录的前4个字节存储页物理地址,后4个字节存储物理页修改时间。文件***的每个逻辑页与1个或多个页索引记录存在关联关系,页索引记录的修改时间是指逻辑页当前的修改时间,页索引记录的页物理地址是指逻辑页前一次修改后所对应数据页的物理地址。文件***中的逻辑页被多次修改时,同一逻辑页将有多个版本的数据页,多个版本的数据页均被保存在数据区。与同一逻辑页存在关联关系的页索引记录按照该逻辑页的时间修改先后顺序形成一页索引链表,每条数据页链表中所有数据页对应文件中某个逻辑数据页的当前版本和快照产生的全部历史版本。
在一实施例中,所述方法包括:根据iNode节点的创建时间与最近一次快照时间的比较结果信息,选择相应的该iNode节点的更新方式。
具体而言,***请求更新iNode结点信息时,若该iNode节点的创建时间晚于最近一次快照时间,则直接在该iNode上完成更新;否则在iNode区新分配一个空闲iNode结点作为快照iNode,基于原iNode结点信息初始化快照iNode结点信息,在原iNode节点上保存快照iNode结点号,并完成更新。
举例而言,当***请求更新一文件A的文件名时,首先比较iNodeA结点的创建时间TA是否比文件***最近一次的快照时间Tsnapshot,若TA晚于Tsnapshot,则说明文件A的iNodeA结点创建时间晚于最近一次快照创建时间,而下一次快照时间还没到达,可以直接在文件A对应的iNodeA结点上多次更新该节点的相关信息,若TA早于Tsnapshot,则说明文件A的iNodeA结点创建时间早于最近一次快照创建时间,最近一次快照创建时已经保存过iNodeA结点的状态信息了,再次更新iNodeA结点信息时,则需要在iNode区新分配一个空闲iNodeA1结点作为结点iNodeA的快照iNodeA1,基于iNodeA结点信息初始化快照iNodeA1结点信息,并在iNodeA结点上保存快照iNodeA1结点号,然后基于结点iNodeA完成更新。
在一实施例中,创建快照时,文件***记录当前快照时间,***请求更新数据页时,若该数据页创建时间先于当前快照时间,则将更新数据写入空闲页,作为新的数据页,将原数据页位置信息和当前时间写入新数据页对应的索引记录中,使得新数据页***到数据页链表的头部,并更新节点页内容使其指向新数据页;若该数据页创建时间晚于当前快照时间,说明当前数据页还未备份过,则可基于当前数据页多次更新数据,直至下一次快照时间到达。
举例而言,假如文件A按写操作顺序,对第1个逻辑页、第500个逻辑页、第600个逻辑页、第1000个逻辑页实现了写入操作,则该文件的N-ary树结构以及文件数据在数据区的分布情况如图5所示。该文件具有3个节点页,4个数据页,其中节点页NodePage3为根节点存储着节点页NodePage21以及NodePage22的物理地址,节点页NodePage21存储着与相应逻辑页号对应的数据页DataPage21以及数据页DataPage5001的物理地址,节点页NodePage22存储着与相应逻辑页号对应的数据页DataPage6001以及数据页DataPage10001的物理地址。链表区中4条索引记录分别对应着数据页DataPage21、DataPage5001、DataPage6001、以及数据页DataPage10001,记录了相应数据页的创建时间。
如果,进程要写第500个逻辑页更新数据,***首先查看第500个逻辑页所对应的数据页DataPage5001创建时间TDataPage5001与并与文件***最近一次的快照时间Tsnapshot相比较,若TDataPage5001晚于Tsnapshot,则说明第500个逻辑页所对应的数据页DataPage5001创建时间晚于最近一次快照创建时间,而下一次快照时间还没到达,可以直接在数据页DataPage5001上多次更新该节点的相关信息,若TDataPage5001早于Tsnapshot,则说明数据页DataPage5001创建时间早于最近一次快照创建时间,最近一次快照创建时已经保存过DataPage5001的状态信息了,进程要再次对第500个逻辑页数据更新时,基于缺页中断机制新分配一个与第500个逻辑页相对应的数据页DataPage5002,在链表区创建一条与数据页DataPage5002相对应的索引记录,然后将数据页DataPage5002的物理地址存储到节点页NodePage21的相应地址字段。在链表区,以数据页DataPage5002的分配时间填充与物理将数据页DataPage5002的物理页对应的索引记录的时间字段,以数据页DataPage5001的物理地址更新与物理将数据页DataPage5002的物理页对应的索引记录的物理地址字段。
以此类推,经过对第500个逻辑页多次更新后及多次相应指定时间间隔快照后,继续分配了物理页DataPage5003、DataPage5004、……,DataPage500N,文件A第500个逻辑数据页的当前版本和快照产生的全部历史版本如图5所示。
优选的,所述文件***在根文件夹下维护一个快照文件夹,并将根文件夹的内容映射至快照文件夹下;其中:在通过根文件夹路径访问的情况下,读写操作直接针对文件数据的当前版本完成;在通过快照文件夹路径访问的情况下,拒绝写操作,并对读操作返回文件数据中在指定快照时间之前的最新版本。
在一实施例中,基于POSIX方式访问文件数据,通过iNode号标识手段区别快照文件或普通文件,以实现对快照文件的以读访问,对普通文件的读写访问。文件***在根文件夹/root下维护一个快照文件夹snapshot,通过映射的方法将根文件***的内容映射到快照文件夹下,通过根文件夹路径访问文件数据的当前版本,通过快照文件夹路径来实现对指定时间相对应的文件快照版本。
于本实施按例中,文件***的根目录/root包含一个快照文件夹snapshot/及三个文件File1、File2、File3。***要访问文件***中的数据时,首先将文件***挂载到内存中,创建一个root结点iNoderoot,基于文件***中的root结点信息填充iNoderoot结点信息,当***要访问对iNodeFile1所应的文件时,***将文件File1当前版本的文件数据从文件***读入内存,然后进行相应的读写操作。当***要访问快照snapshot文件夹下的文件时,需要将根文件夹的内容映射至快照文件夹下,首先基于文件***中的root结点信息填充iNodesnapshot结点信息,当***要访问snapshot文件夹下iNodeFile1所应的文件时,首先将标记iNodeFile1,然后***将标记后的iNodeFile1及相应快照时间下发给文件***。文件***根据被标记iNodeFile1,查找iNodeFile1相对应的文件,并将访问请求指定时间对应的快照版本拷贝到内存中以供***读访问。
优选地,文件***访问某一快照点时,文件***在响应读操作文件***以POSIX方式访问时,可以访问指定时间T0的数据存储状态,其步骤如下:
步骤1:进程请求访问T0时刻之前的逻辑页Lpage。
步骤2:文件***遍历链表管理区与该逻辑页LPage相对应的页索引链表,寻找早于T0时刻且离T0时刻最近的页表索引记录。
步骤3:以上述索引记录中保存的页物理地址更新N-ary树结构中该逻辑页LPage在相应节点页中对应的物理地址信息。
优选的,基于链表管理实现快速回滚的N-ary树结构的随机访问的文件***,其特征在于:回滚至某一快照点时,其步骤如下:
步骤1:关闭所有打开的文件。
步骤2:遍历文件***iNode区,将创建时间晚于快照时间的iNode删除回收;将删除时间晚于快照时间但创建时间早于快照时间的iNode恢复,并对链接关系作出相应修改;其它iNode保留不变。
步骤3:遍历链表管理区,将创建时间晚于快照时间的数据页通过更改位图区相应比特进行回收,并对链接关系作出相应修改,恢复文件数据至快照点版本;其它数据页保留不变。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
如图6所示,展示本申请一实施例中基于链表和N-ary树结构实现快速回滚的文件***管理装置的示意图。所述装置包括数据存储模块61和数据快照和回滚模块62。
数据存储模块61用于基于N-ary树结构管理文件***所存储在物理存储空间的数据,以令文件数据在物理存储空间内随机存。数据快照和回滚模块62用于基于链表管理文件中逻辑数据页的快照版本,执行文件***的数据快照和回滚。
需要说明的是,本实施例提供的基于链表和N-ary树结构实现快速回滚的文件***管理装置的实施方式,与上文中提供的基于链表和N-ary树结构实现快速回滚的文件***管理方法的实施方式类似,故不再赘述。另外需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。
如图7所示,展示本申请实施例提供的再一种电子终端的结构示意图。本实例提供的电子终端,包括:处理器71、存储器72、收发器73、通信接口74和***总线75;存储器72和通信接口74通过***总线75与处理器71和收发器73连接并完成相互间的通信,存储器72用于存储计算机程序,通信接口74和收发器73用于和其他设备进行通信,处理器71用于运行计算机程序,使电子终端执行如上基于链表和N-ary树结构实现快速回滚的文件***管理方法的各个步骤。
上述提到的***总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该***总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
综上所述,本申请提供基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质,本申请采用N-ary树结构管理文件***所存储在物理地址空间的数据,实现文件数据在物理存储空间内的随机存储,基于链表管理文件中逻辑数据页的快照版本,实现文件***的数据快照和回滚。所以,本申请有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (11)
1.一种基于链表和N-ary树结构实现快速回滚的文件***管理方法,其特征在于,包括:
基于N-ary树结构管理文件***所存储在物理存储空间的数据,以令文件数据在物理存储空间内随机存储;
基于链表管理文件中逻辑数据页的快照版本,执行文件***的数据快照和回滚。
2.根据权利要求1所述的方法,其特征在于,所述文件***设有:
iNode区,其存储有多个iNode节点;各所述iNode节点包括iNode节点信息字段、N-ary树级数字段、N-ary树根节点字段、以及快照版本指针字段;其中,所述iNode节点信息字段用于存储文件的管理信息;所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数;所述N-ary树根节点字段用于存储文件第N级节点页PageN起始物理地址;所述快照版本指针字段用于指向该iNode节点的最近一次快照所对应的快照iNode节点;数据区,用于存储文件数据;所述数据区的页包括相互混排的节点页和数据页;
其中,以文件所对应的第N级节点页页号为根节点,以第(N-1)级节点页页号为第1级子节点,以此类推,以第1级节点页页号为第(N-1)级子节点,形成一个N-ary树以对该文件的所有数据进行存储管理;所有数据页占据N-ary树的最后一级节点,其根节点物理地址和树的级数被记录在iNode区中该文件所对应的iNode结构中;
链表区,用于管理文件中逻辑数据页的快照版本;所述链表区包括多条页索引记录,各条索引记录对应所述数据区的一物理页面;数据区中每个数据页所对应的页索引记录内保存该数据页的创建时间及其上一个版本数据页的位置信息,以在数据区形成数据页链表,每条数据页链表中所有数据页对应文件中某个逻辑数据页的当前版本和快照产生的全部历史版本。
3.根据权利要求2所述的方法,其特征在于,所述方法包括:根据iNode节点的创建时间与最近一次快照时间的比较结果信息,选择相应的该iNode节点的更新方式;其中,创建快照时,文件***记录当前快照时间,***请求更新数据页时,若该数据页创建时间先于当前快照时间,则将更新数据写入空闲页,作为新的数据页,将原数据页位置信息和当前时间写入新数据页对应的索引记录中,使得新数据页***到数据页链表的头部,并更新节点页内容使其指向新数据页;若该数据页创建时间晚于当前快照时间,说明当前数据页还未备份过,则可基于当前数据页多次更新数据,直至下一次快照时间到达。
4.根据权利要求3所述的方法,其特征在于,所述方法包括:
若该iNode节点的创建时间晚于最近一次快照时间,则在该iNode节点上进行更新;
若该iNode节点的创建时间早于最近一次快照时间,则在iNode区分配一空闲iNode节点作为原iNode节点的备份节点,并令原iNode节点存储备份节点的节点号后进行更新。
5.根据权利要求1所述的方法,其特征在于,所述文件***在根文件夹下维护一个快照文件夹,并将根文件夹的内容映射至快照文件夹下;其中:
在通过根文件夹路径访问的情况下,读写操作直接针对文件数据的当前版本完成;
在通过快照文件夹路径访问的情况下,拒绝写操作,并对读操作返回文件数据中在指定快照时间之前的最新版本。
6.根据权利要求1所述的方法,其特征在于,所述方法包括:文件***在响应读操作文件***以POSIX方式访问时,通过如下步骤访问指定时间的数据存储状态:
进程请求访问该时刻之前的逻辑页;
文件***遍历链表区域该逻辑页相对应的页索引链表,以获取早于该时刻且距离该时刻最近的页表索引记录;
根据所述索引记录中所保存的页物理地址更新N-ary树结构中该逻辑页在相应节点页中对应的物理地址信息。
7.根据权利要求1所述的方法,其特征在于,所述方法包括:通过如下步骤回滚至某一快照点:
关闭当前打开的文件;
遍历文件***的iNode区,将创建时间晚于快照时间的iNode节点删除回收;将删除时间晚于快照时间但创建时间早于快照时间的iNode节点恢复,并对链接关系作出相应修改;其它iNode节点保留不变;
遍历链表区,将创建时间晚于快照时间的数据页通过更改位图区相应比特进行回收,并对链接关系作出相应修改,恢复文件数据至快照点版本;其它数据页保留不变。
8.一种基于链表和N-ary树结构实现快速回滚的文件***管理装置,其特征在于,包括:
数据存储模块,用于基于N-ary树结构管理文件***所存储在物理存储空间的数据,以令文件数据在物理存储空间内随机存储;
数据快照和回滚模块,用于基于链表管理文件中逻辑数据页的快照版本,执行文件***的数据快照和回滚。
9.根据权利要求8所述的装置,其特征在于,所述文件***设有:
iNode区,其存储有多个iNode节点;各所述iNode节点包括iNode节点信息字段、N-ary树级数字段、N-ary树根节点字段、以及快照版本指针字段;其中,所述iNode节点信息字段用于存储文件的管理信息;所述N-ary树级数字段用于存储文件所采用N-ary树结构的级数;所述N-ary树根节点字段用于存储文件第N级节点页PageN起始物理地址;所述快照版本指针字段用于指向该iNode节点的最近一次快照所对应的快照iNode节点;
数据区,用于存储文件数据;所述数据区的页包括相互混排的节点页和数据页;其中,所述节点页用于存储N-ary树中下一级节点页或数据页的物理地址,所述数据页用于存储文件数据;
链表区,用于管理文件中逻辑数据页的快照版本;所述链表区包括多条页索引记录,各条索引记录对应所述数据区的一物理页面;数据区中每个数据页所对应的页索引记录内保存该数据页的创建时间及其上一个版本数据页的位置信息,从而在数据区形成数据页链表,每条数据页链表中所有数据页对应文件中某个逻辑数据页的当前版本和快照产生的全部历史版本。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述基于链表和N-ary树结构实现快速回滚的文件***管理方法。
11.一种电子终端,其特征在于,包括:处理器及存储器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行如权利要求1至7中任一项所述基于链表和N-ary树结构实现快速回滚的文件***管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910238373.5A CN109933564A (zh) | 2019-03-27 | 2019-03-27 | 基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910238373.5A CN109933564A (zh) | 2019-03-27 | 2019-03-27 | 基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109933564A true CN109933564A (zh) | 2019-06-25 |
Family
ID=66988453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910238373.5A Pending CN109933564A (zh) | 2019-03-27 | 2019-03-27 | 基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109933564A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515543A (zh) * | 2019-08-02 | 2019-11-29 | 星辰天合(北京)数据科技有限公司 | 基于对象存储桶的快照方法、装置和*** |
CN112395260A (zh) * | 2020-11-11 | 2021-02-23 | 苏宁云计算有限公司 | 一种数据存储方法及介质 |
CN113138785A (zh) * | 2021-04-21 | 2021-07-20 | 维沃移动通信有限公司 | 应用程序的更新方法和装置 |
CN115438628A (zh) * | 2022-11-08 | 2022-12-06 | 宏景科技股份有限公司 | 结构化文档协作管理方法、***及文档结构 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354890A (zh) * | 2016-11-22 | 2017-01-25 | 中国科学院上海微***与信息技术研究所 | 一种基于N‑ary树结构的随机访问的文件***的实现方法 |
CN107180092A (zh) * | 2017-05-15 | 2017-09-19 | 中国科学院上海微***与信息技术研究所 | 一种文件***的控制方法、装置及终端 |
-
2019
- 2019-03-27 CN CN201910238373.5A patent/CN109933564A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354890A (zh) * | 2016-11-22 | 2017-01-25 | 中国科学院上海微***与信息技术研究所 | 一种基于N‑ary树结构的随机访问的文件***的实现方法 |
CN107180092A (zh) * | 2017-05-15 | 2017-09-19 | 中国科学院上海微***与信息技术研究所 | 一种文件***的控制方法、装置及终端 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515543A (zh) * | 2019-08-02 | 2019-11-29 | 星辰天合(北京)数据科技有限公司 | 基于对象存储桶的快照方法、装置和*** |
CN112395260A (zh) * | 2020-11-11 | 2021-02-23 | 苏宁云计算有限公司 | 一种数据存储方法及介质 |
CN113138785A (zh) * | 2021-04-21 | 2021-07-20 | 维沃移动通信有限公司 | 应用程序的更新方法和装置 |
CN115438628A (zh) * | 2022-11-08 | 2022-12-06 | 宏景科技股份有限公司 | 结构化文档协作管理方法、***及文档结构 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109933564A (zh) | 基于链表和N-ary树结构实现快速回滚的文件***管理方法、装置、终端、介质 | |
CN107526775B (zh) | 一种区块链数据归档的方法 | |
CN103765393B (zh) | 存储*** | |
CN103020315B (zh) | 一种基于主从分布式文件***的海量小文件存储方法 | |
CN103473251B (zh) | 在使用处理器件的计算环境中提供使用选择性元组版本化的文件***快照的方法和*** | |
CN107180092B (zh) | 一种文件***的控制方法、装置及终端 | |
CN104298681B (zh) | 一种数据存储方法及装置 | |
CN102982151B (zh) | 多个物理文件合并为一个逻辑文件的方法 | |
CN102915278A (zh) | 重复数据删除方法 | |
CN107247778A (zh) | 用于实施可扩展数据存储服务的***和方法 | |
CN106682110B (zh) | 一种基于哈希格网索引的影像文件存储和管理***及方法 | |
CN108090168A (zh) | 一种通用f2fs文件***解析方法、终端设备及存储介质 | |
CN101488153A (zh) | 嵌入式Linux下大容量闪存文件***的实现方法 | |
CN106775446A (zh) | 基于固态硬盘加速的分布式文件***小文件访问方法 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
CN100424699C (zh) | 一种属性可扩展的对象文件*** | |
CN111177143B (zh) | 键值数据存储方法、装置、存储介质与电子设备 | |
CN113377868A (zh) | 一种基于分布式kv数据库的离线存储*** | |
CN109767274B (zh) | 一种对海量***数据进行关联存储的方法及*** | |
CN114600094A (zh) | 为数据库架构生成哈希树 | |
CN108052541A (zh) | 基于多级页表目录结构的文件***的实现、访问方法、终端 | |
CN113568582A (zh) | 数据管理方法、装置和存储设备 | |
CN113806300A (zh) | 数据存储方法、***、装置、设备及存储介质 | |
CN112334891A (zh) | 用于搜索服务器的集中式存储 | |
CN111522791A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190625 |
|
RJ01 | Rejection of invention patent application after publication |