CN105868396A - 内存文件系统的多版本控制方法 - Google Patents
内存文件系统的多版本控制方法 Download PDFInfo
- Publication number
- CN105868396A CN105868396A CN201610244082.3A CN201610244082A CN105868396A CN 105868396 A CN105868396 A CN 105868396A CN 201610244082 A CN201610244082 A CN 201610244082A CN 105868396 A CN105868396 A CN 105868396A
- Authority
- CN
- China
- Prior art keywords
- file system
- node
- data
- hmfs
- file
- 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
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000004048 modification Effects 0.000 claims abstract description 20
- 238000012986 modification Methods 0.000 claims abstract description 20
- 239000013256 coordination polymer Substances 0.000 claims description 22
- 238000013507 mapping Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100226364 Arabidopsis thaliana EXT1 gene Proteins 0.000 description 1
- 101100334010 Drosophila melanogaster sotv gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
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
本发明提供了一种内存文件系统的多版本控制方法,基于混合异构内存文件系统HMFS,包括如下步骤:数据修改更新步骤:采用写时复制方式对内存文件系统的节点地址树进行多版本备份,并复用地址树中的节点进行数据修改和更新;数据共享步骤:采用层次引用计数实现多版本文件系统的元数据共享,其中元数据指为描述数据的数据,是实现多文件系统版本的记录数据。本发明利用未被修改的文件将文件系统恢复到文件修改之前,层次引用计数实现了多版本文件系统之间的文件共享,使文件系统进行快照时不需要对原文件系统的所有文件进行备份,从而减少文件系统快照所需的时空开销,提高文件系统的性能。
Description
技术领域
本发明涉及计算机内存管理技术领域,具体地,涉及一种内存文件系统的多版本控制方法。
背景技术
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。文件系统的功能包括:管理和调度文件的存储空间,提供文件的逻辑结构、物理结构和存储方法;实现文件从标识到实际地址的映射,实现文件的控制操作和存取操作,实现文件信息的共享并提供可靠的文件保密和保护措施,提供文件的安全措施。针对不同的使用环境和目的,存在着多种文件系统,如目前流行的windows系统使用的NTFS,LINUX使用的EXT4。NTFS文件系统是一个基于安全性的文件系统,是Windows NT所采用的独特的文件系统结构,它是建立在保护文件和目录数据基础上,同时照顾节省存储资源、减少磁盘占用量的一种先进的文件系统。Ext2是GNU/Linux系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计。
基于非易失性存储器件的新型存储级内存SCM(Storage Class Memory)与传统内存相结合组成混合内存,可以在保持成本和能耗优势的前提下大幅提升内存容量,为大数据的高效实时处理提供支持,但也对系统软件的设计提出了新的挑战。非易失存储技术的出现和快速发展,带动了内存文件系统的发展。内存文件系统是一类将内存当作分区来使用的文件系统,基于外存储器的文件系统与外存的操作都是基于块的,而内存文件系统可以实现基于字节的操作,即内存文件系统具有更细的操作粒度。例如,当用户修改了文件中一个字节的数据时,传统文件系统需要写一个块的数据,而内存文件系统只需要写一个字节。还有非易失性内存可由CPU直接访问,而外存储器需要经过内存的缓冲才能被CPU处理。这些使内存文件系统相比传统文件系统具有大幅度的性能提升。
目前,各类文件系统一般为了保证自身的稳定性,防止系统突然因断电等原因而崩溃引发文件系统的不一致,一般都具有文件系统的备份功能。文件系统的备份功能,也称为文件系统快照,就是将文件系统当时的情形记录下来,如同照相一样,日后用户可以将其载入并查看。例如,目前文件系统中有十个文件,我们先使用文件系统快照功能建立一张快照。之后我们可以删除文件,在目前文件系统中已经没有东西了。但如果将其载入,还是可以看到这些文件。简单来说,文件系统快照的功能就是记录当时文件系统的状态。将文件系统生成快照和从快照中恢复文件系统等一系列操作统称为文件系统多版本控制技术。不同的文件系统使用不同的多版本控制技术,这些技术之间有既有一些联系,也有各自的特点。现在主流的方法是采用数据库中的日志方式。日志类文件系统每次进行文件修改和新建等操作之前都会将这些操作写一个日志文件,当操作完成之后再标记这些日志条目为已完成。当文件系统因故障停止并再次启动系统后,文件系统会根据日志文件进行恢复。该方法能够保证文件系统的一致性,但当频繁修改和新建文件时,会写日志上花费大量额外时间,造成系统性能下降。其它的方法还有FAT文件系统的双FAT表,其中一份主写一份备份。当一份FAT表出现问题时,用另一份FAT表恢复。这种方法能进行快速的文件系统修复,但其缺点是只能生成一个文件系统副本。ZFS文件系统使用写时复制技术和B树进行无限快照,但随着B树不断增长,文件系统性能会不断下降。现在的文件系统多版本控制技术由于传统文件系统的限制等原因都对文件系统性能有所影响,不适合用于新型的内存文件系统。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种内存文件系统的多版本控制方法。
根据本发明提供的内存文件系统的多版本控制方法,基于混合异构内存文件系统,简称HMFS文件系统,包括如下步骤:
数据修改更新步骤:采用写时复制方式对HMFS文件系统的节点地址树NAT进行多版本备份,并复用节点地址树NAT中的节点进行数据修改和更新;
数据共享步骤:采用层次引用计数实现多版本文件系统的元数据共享,其中元数据指为描述数据的数据,即用于实现HMFS文件系统多版本的记录数据。
优选地,所述混合异构内存文件系统是指基于动态随机存取存储器DRAM和非易失性存储器NVM的一种文件系统,能够实现字节大小的存储数据修改和CPU的访问;HMFS文件系统使用写时复制方式进行数据修改更新,利用层次引用计数进行数据共享;
具体地,HMFS文件系统将数据存储在NVM里,在NVM中,HMFS文件系统将NVM分为固定大小的段,段是HMFS文件系统的基本管理单元,每个段又由512个4KB的块组成;HMFS文件系统将NVM分为7个逻辑结构;
其中,所述7个逻辑结构为:超级块、段信息表、块信息表、检查点、节点、数据块、节点地址树;其中,
所述超级块记录了HMFS文件系统的基本信息,所述基本信息包括:HMFS文件系统有多少版本及版本位置,NVM已经使用了多少空间;
所述段信息表、块信息表分别记录了NVM中段、块是否已经存储了信息;
所述检查点是HMFS文件系统的版本的记录点,一个检查点象征一个HMFS文件系统的版本;
所述节点包括:索引节点、直接索引节点和间接索引节点三种类型,其中,间接节点又分为一级间接节点和二级间接节点;节点都有唯一的节点ID,节点ID能通过节点地址树NAT转换成节点的块地址;
所述数据块是存储用户数据的基本存储单元;
所述节点地址树NAT用于将节点的唯一节点ID与该节点的实际存储地址的映射关系存储到节点地址树NAT中。
优选地,当HMFS文件系统需要读取某已知目录下的某文件时,还包括读取步骤:
1)从目录中找出该文件的索引节点的节点ID;其中,所述索引节点是指:节点中的一种,记录了文件名、文件的最后修改时间、文件的最后访问时间,每个文件有且仅有一个索引节点。
2)通过节点地址树NAT将节点ID转换成数据块地址;块是指:NVM最小储存单元,数据块是存储用户数据的块;
3)读取索引节点;
4)从索引节点中的直接指针直接获得内联数据或数据块,或者从间接指针经节点地址树数次转换,最后获得数据块。
优选地,还包括数据写入步骤:
当需要写数据时,先将更新数据写入一个新的数据块,当更新数据写入成功之后,再将更新数据块地址插入到原文件的索引地址列表中。
优选地,当新建或修改一个叶节点后,生成检查点以及一颗新树,所述检查点简称CP,每一个CP代表了一个HMFS文件系统的版本;所述新树除新建或修改叶节点到根节点路径上的节点外的所有节点与旧树共享原有的节点;则不同的HMFS文件系统的版本通过不同CP中的节点地址树NAT,能够将同一个节点ID映射到不同的数据块,从而实现了HMFS文件系统的多版本控制。
优选地,还包括文件系统生成快照步骤:
步骤i1:HMFS文件系统发出产生文件系统快照的命令;
步骤i2:根据内存中修改和新建的文件,生成节点地址树节点和相应的节点地址树NAT;
步骤i3:HMFS文件系统在主区域生成相应的CP块,CP块中有节点地址树根节点地址信息;
步骤i4:将该CP加入超级块的CP列表。
与现有技术相比,本发明具有如下的有益效果:
1、根据本发明提供的HMFS内存文件系统的多版本控制方法,利用未被修改的文件将文件系统恢复到文件修改之前,层次引用计数实现了多版本文件系统之间的文件共享,使文件系统进行快照时不需要对原文件系统的所有文件进行备份,从而减少文件系统快照所需的时空开销,提高文件系统的性能。
2、根据本发明提供的内存文件系统的多版本控制方法能够同时拥有并控制多个不同时间产生的多个文件系统版本,并能够快速实现文件系统不同版本之间的切换;由于使用了COW技术,大大减少了文件系统快照所需时间,不仅减少了文件系统的快照对存储空间的占用,而且提高了文件系统的性能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是HMFS文件系统的平面布局示意图。
图2是HMFS文件系统的索引节点结构示意图。
图3是层次引用计数技术的引用树示意图。
图4是层次引用计数技术修改节点后的引用树示意图。
图5是层次引用计数技术删除一颗树后的引用树示意图。
图6是HMFS文件系统的抽象结构示意图。
图7是HMFS文件系统结合层次引用的结构示意图。
图8是文件系统生成快照的流程示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明是基于混合异构内存文件系统(Hybrid Memory File System,HMFS),文件系统的多版本控制技术不能脱离文件系统而单独存在。HMFS是基于动态随机存取存储器(Dynamic Random Access Memory,DRAM)和非易失性存储器(Non-Volatile Memory,NVM)的一种新型文件系统。HMFS将数据存储在NVM里,能够实现字节大小的存储数据修改和CPU的快速访问。HMFS使用写时复制技术进行数据修改更新,层次引用计数技术进行数据共享。
HMFS的多版本控制技术应用了HMFS的写时复制(Copy-On-Write,COW)和层次引用计数技术。COW技术保证了当我们对一个文件进行修改时,不会直接修改到原数据,只是修改文件的一个副本,然后在一块新的存储区域保存修改后的文件。如果原数据属于一个某时刻创建的文件系统版本,修改不会对原数据产生不可恢复的影响。
具体地,HMFS是一种基于DRAM和NVM(非易失性存储器)混合文件系统。在NVM中,文件系统将整个存储器分为固定大小的段。段是HMFS文件系统的基本管理单元,并决定了文件系统的元数据布局。每个段又由512个4KB的块组成。HMFS将整个存储器分为7个逻辑结构。其中3个是文件系统的元数据:
超级块(super block,SB):超级块如图1所示,是固定于文件系统开始的位置。文件系统拥有两个超级块,两个超级块轮流使用。这是因为当操作系统启动后,系统内核会把超级块中的内容复制到内存中,并周期性地利用内存里的最新内容去更新硬盘上的超级块中的内容。由于这个更新存在一个时间差,为此内存中的超级块信息与硬盘中的超级块信息往往只有在开机与关机的某个特定时刻是同步的;而在其他时间都是不同步的。假设当操作系统意外关机或者因为断电而造成的意外事故时,内存中的超级块信息没有及时保存到存储介质中,此时文件系统的完整性就会受到破坏。两块保证了文件系统故障导致当前超级块无法使用时,文件系统可以使用另一个超级块。形象的说,超级块就是文件系统的心脏。它包含了文件系统的所有基本信息,包括系统已用空间,段的总数量,块的总数量,检查点列表等。文件系统挂载就是从超级块开始读取信息。当操作系统启动后,系统内核会把超级块中的内容复制到内存中,并周期性的利用内存里的最新内容去更新硬盘上的超级块中的内容。
段信息表(segment information table,SIT):它包含了段管理的相关信息,包括段的有效块数量和段最后修改的时间戳。这些信息能用来进行段分配和垃圾回收。
块信息表(block information table,BIT):它包含块管理的相关信息,包括block的父节点的node ID号。
这三个结构的位置是固定的,如图1中的超级块、段信息表、块信息表。另外的四个段随机分布于主区域内。这四个结构如下:
检查点(check point,CP):每一个检查点代表了一个文件系统的版本。它包括该文件系统版本的时间和索引节点(inode)等信息。检查点是通过超级块中的检查点列表来定位,可以通过检查点来定位与它相应的NAT树。
节点(node):HMFS文件系统的节点包括索引节点、直接索引节点和间接索引节点三种类型,其中间接节点又可分为一级间接和二级间接。节点都有唯一的节点ID,该ID能通过节点地址树转换成节点的块地址。其中索引节点保存了文件修改时间、拥有者等属性。每个索引节点如图2所示都有数个指向数据块的指针、一个指向直接索引节点的指针、一个指向一级间接索引节点的指针和一个指向二级间接索引节点的指针。直接索引节点中的数据直接指出下级数据块的块地址,而间接索引节点保存了下级节点的节点ID,对于一级间接索引节点下级节点是直接节点,二级间接索引节点下级节点是一级间接索引节点。在文件很小的情况下,该文件相应的索引节点内直接指向数据块的指针空间可以直接存放数据,称该数据为内联数据。该方法节省了为文件分配数据块的空间,在读取数据是也不用再通过指针去访问数据块,提高了小文件的访问速度。
数据块(data block):数据块保存了文件内容,数据块只能由索引节点内的直接指针和直接索引节点定位。
节点地址树(Node Address Tree,NAT):它的作用是将节点ID转换为块地址。节点地址树逻辑结构是B树。节点地址树是固定使用4层的树结构,树的前三层是中间节点,用于索引处于第四层的叶子节点。叶子节点存储着节点ID和块地址的映射。节点地址树用了其中27位来定位到叶子节点,即树中前三层节点固定有512个子节点,占用9位。但节点地址树中的节点只有在文件系统用到相应的节点ID才会为叶子节点和中间节点实际分配空间。所以节点地址树有多节点不存在,不会占用大量空间。
当HMFS文件系统需要读取某已知目录下的某文件时,需要以下步骤:
1)从目录中找出该文件的索引节点的节点ID;
2)经节点地址树,将节点ID转换成块地址;
3)读取索引节点;
4)从索引节点中的直接指针直接获得内联数据或数据块,从间接指针经节点地址树数次转换,最后获得数据块。
下面介绍多版本控制的两个核心技术:写时复制(COW)和层次应用计数。COW是一个被使用在程式设计领域的最佳化策略。其基础的观念是,如果有多个调用者同时要求相同资源,他们会共同取得相同的指标指向相同的资源,直到某个调用者尝试修改资源时,系统才会真正复制一个副本给该调用者,以避免被修改的资源被直接察觉到,这过程对其他的调用只都是透明的。此作法主要的优点是如果调用者并没有修改该资源,就不会有副本被建立。具体到文件系统,即每次写数据时,先将更新数据写入一个新的块,当新数据写入成功之后,再更新相关的数据结构指向新块。使用COW技术后,对文件进行修改后,原文件数据不会被破坏。如果原文件数据不被系统回收,可以通过适当的方法,将原文件保存下来。
层次引用计数就是在COW技术下保存修改文件的原文件的一种机制。由于文件系统存在多给版本,给每个文件块一个计数变量,表示这个数据块存在于多个文件系统版本中,但该计量数不等价于文件存在的文件系统版本数。当一个文件块的引用数为0时,文件系统的垃圾回收机制就会回收该块和该块下级的数据块。层次引用计数使多个版本文件系统能够共用大部分文件,减少了文件系统快照的时空消耗。为了实现高效率的引用数修改,层次引用计数有一套相应的引用计数的修改方法。
层次引用计数是基于B树的,所以所有文件操作都来源于叶节点。当新建或修改一个叶节点后,做CP时会产生一颗新树。新树除该叶节点到根节点路径上所有节点外与旧树共享其它节点。引用数的更新从下到上,方法类似于递归。首先新产生的节点的引用数为1,然后原树中修改的节点的兄弟节点引用数加1。然后相同的递归处理其新节点的新父节点。
当删除一个版本时时,我们从上向下处理。从版本根CP块开始,如果一个节点的引用数为1,该节点数引用数改为0,递归处理该节点的子节点。如果一个节点的引用数大于1,则该节点引用数减1,由于该节点仍然在被使用,它的子节点不需要再处理。
更进一步地,如图3所示,该树代表一个文件系统的NAT树,每个节点内前一个字母代表该节点名称,后一个数字代表该节点的引用数。图3中的所有节点的引用数都为1表示,该文件系统版本是独立存在的,与其它文件系统无共享文件。图4是修改图1中D节点后的结果。可以看出,产生了以Q节点为根节点的新树。图5是删除以P为根节点的树后的结果。删除该树,首先根节点引用置零。其子节点为处理时E引用为2,F引用为1。所以E引用减一为1,不需处理其子节点A和B;F引用减一为0,在处理其子节点C和D,最后C的引用为1,D的引用为0。
本发明中的文件系统的多版本控制技术就是将层次引用计数功能应用在NAT树。如图6所示,NAT从根节点到叶子节点总共四层。NAT树固定为四层,一个node ID占32位。NAT树用了其中27位来定位到叶子节点,即树中前三层节点固定有512个子节点,占用9位。但NAT中的节点只有在文件系统用到相应的Node ID才会实际分配空间,所以NAT树中很大一部分不存在的。不同的文件系统版本通过不同CP中的NAT树,可以将同一个node ID映射到不同的块,从而实现了文件系统的多版本控制。不同的文件系统版本可以相互之间共用NAT树中的节点。如图7所示,两棵NAT树共用了大部分的NAT节点。
文件系统生成快照的流程如图8所示。首先文件系统发出产生文件系统快照的命令。第二部,根据内存中修改和新建的文件,生成节点地址树节点和相应的节点地址树。第三步,文件系统在主区域生成相应的CP块,CP块中有节点地址树根节点地址信息。最后,将该CP加入超级块的CP列表。
一个节点地址树代表一个文件系统版本,当文件系统进行快照时,系统生成并存储一个新的节点地址树。通常情况下,文件系统的变化是一个持续而缓慢的过程,每次生成的节点地址树会与前一个版本的节点地址树节点共享大量的节点,只会产生少量的新节点,所以新增一个文件系统快照所需消耗的时间和空间都很少。当文件系统需要恢复某个文件系统版本时,文件系统只需要将正在使用的节点地址树换成恢复版本的节点地址树。更换节点地址树主要是更换节点地址树的根节点,然后缓存部分节点地址树节点。使用新的节点地址树后,每次打开一个文件目录,都会根据节点地址树去寻找对应的文件。由于文件系统的恢复只是对节点地址树的替换,所以文件系统可以实现快速恢复。
快照的建立通过在fsync系统调用时自动产生,而后台进程会自动删除时间戳在一天之前建立的快照,只保留下用户声明需要长期保存的快照。这些存留下来的快照通常是用户所急切需要的,同时也能满足用户对于系统短期和长期恢复的需求。
本发明是一个基于HMFS文件系统功能和特性的文件系统的多版本控制技术,实现了高效的文件系统多版本控制功能。通过后台进程的创建和清理,系统中保存了大量有效的快照。同时由于快照间的结构为相对独立的树结构,文件系统能快速恢复至某个快照。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (6)
1.一种内存文件系统的多版本控制方法,其特征在于,基于混合异构内存文件系统,简称HMFS文件系统,包括如下步骤:
数据修改更新步骤:采用写时复制方式对HMFS文件系统的节点地址树NAT进行多版本备份,并复用节点地址树NAT中的节点进行数据修改和更新;
数据共享步骤:采用层次引用计数实现多版本文件系统的元数据共享,其中元数据指为描述数据的数据,即用于实现HMFS文件系统多版本的记录数据。
2.根据权利要求1所述的内存文件系统的多版本控制方法,其特征在于,所述混合异构内存文件系统是指基于动态随机存取存储器DRAM和非易失性存储器NVM的一种文件系统,能够实现字节大小的存储数据修改和CPU的访问;HMFS文件系统使用写时复制方式进行数据修改更新,利用层次引用计数进行数据共享;
具体地,HMFS文件系统将数据存储在NVM里,在NVM中,HMFS文件系统将NVM分为固定大小的段,段是HMFS文件系统的基本管理单元,每个段又由512个4KB的块组成;HMFS文件系统将NVM分为7个逻辑结构;
其中,所述7个逻辑结构为:超级块、段信息表、块信息表、检查点、节点、数据块、节点地址树;其中,
所述超级块记录了HMFS文件系统的基本信息,所述基本信息包括:HMFS文件系统有多少版本及版本位置,NVM已经使用了多少空间;
所述段信息表、块信息表分别记录了NVM中段、块是否已经存储了信息;
所述检查点是HMFS文件系统的版本的记录点,一个检查点象征一个HMFS文件系统的版本;
所述节点包括:索引节点、直接索引节点和间接索引节点三种类型,其中,间接节点又分为一级间接节点和二级间接节点;节点都有唯一的节点ID,节点ID能通过节点地址树NAT转换成节点的块地址;
所述数据块是存储用户数据的基本存储单元;
所述节点地址树NAT用于将节点的唯一节点ID与该节点的实际存储地址的映射关系存储到节点地址树NAT中。
3.根据权利要求2所述的内存文件系统的多版本控制方法,其特征在于,当HMFS文件系统需要读取某已知目录下的某文件时,还包括读取步骤:
1)从目录中找出该文件的索引节点的节点ID;其中,所述索引节点是指:节点中的一种,记录了文件名、文件的最后修改时间、文件的最后访问时间,每个文件有且仅有一个索引节点;
2)通过节点地址树NAT将节点ID转换成数据块地址;块是指:NVM最小储存单元,数据块是存储用户数据的块;
3)读取索引节点;
4)从索引节点中的直接指针直接获得内联数据或数据块,或者从间接指针经节点地址树数次转换,最后获得数据块。
4.根据权利要求2所述的内存文件系统的多版本控制方法,其特征在于,还包括数据写入步骤:
当需要写数据时,先将更新数据写入一个新的数据块,当更新数据写入成功之后,再将更新数据块地址插入到原文件的索引地址列表中。
5.根据权利要求2所述的内存文件系统的多版本控制方法,其特征在于,当新建或修改一个叶节点后,生成检查点以及一颗新树,所述检查点简称CP,每一个CP代表了一个HMFS文件系统的版本;所述新树除新建或修改叶节点到根节点路径上的节点外的所有节点与旧树共享原有的节点;则不同的HMFS文件系统的版本通过不同CP中的节点地址树NAT,能够将同一个节点ID映射到不同的数据块,从而实现了HMFS文件系统的多版本控制。
6.根据权利要求2所述的内存文件系统的多版本控制方法,其特征在于,还包括文件系统生成快照步骤:
步骤i1:HMFS文件系统发出产生文件系统快照的命令;
步骤i2:根据内存中修改和新建的文件,生成节点地址树节点和相应的节点地址树NAT;
步骤i3:HMFS文件系统在主区域生成相应的CP块,CP块中有节点地址树根节点地址信息;
步骤i4:将该CP加入超级块的CP列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610244082.3A CN105868396A (zh) | 2016-04-19 | 2016-04-19 | 内存文件系统的多版本控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610244082.3A CN105868396A (zh) | 2016-04-19 | 2016-04-19 | 内存文件系统的多版本控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105868396A true CN105868396A (zh) | 2016-08-17 |
Family
ID=56633003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610244082.3A Pending CN105868396A (zh) | 2016-04-19 | 2016-04-19 | 内存文件系统的多版本控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105868396A (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372199A (zh) * | 2016-08-31 | 2017-02-01 | 镇江乐游网络科技有限公司 | 一种基于元数据支持的多版本文件管理系统 |
CN107544873A (zh) * | 2017-08-28 | 2018-01-05 | 郑州云海信息技术有限公司 | 一种存放备份数据的备份系统和方法 |
CN107862064A (zh) * | 2017-11-16 | 2018-03-30 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件系统 |
CN109189783A (zh) * | 2018-08-03 | 2019-01-11 | 北京涛思数据科技有限公司 | 一种时序数据库表结构改变处理方法 |
CN109271278A (zh) * | 2017-07-18 | 2019-01-25 | 阿里巴巴集团控股有限公司 | 一种确定磁盘快照数据切片的引用次数的方法和装置 |
CN109582500A (zh) * | 2018-11-26 | 2019-04-05 | 万兴科技股份有限公司 | 数据恢复方法、装置、计算机设备及存储介质 |
CN110100228A (zh) * | 2017-01-06 | 2019-08-06 | 甲骨文国际公司 | 利用云对象存储的文件系统层次结构的高效增量备份和恢复 |
CN110162525A (zh) * | 2019-04-17 | 2019-08-23 | 平安科技(深圳)有限公司 | 基于b+树的读写冲突解决方法、装置及存储介质 |
CN110297781A (zh) * | 2019-07-02 | 2019-10-01 | 四川效率源信息安全技术股份有限公司 | 一种基于写时复制来恢复apfs中被删除数据的方法 |
CN110807003A (zh) * | 2018-07-18 | 2020-02-18 | 成都华为技术有限公司 | 修改访问控制列表的引用计数的方法和装置 |
CN110928839A (zh) * | 2018-08-31 | 2020-03-27 | 携程旅游网络技术(上海)有限公司 | 国际运价数据的存储方法和系统 |
CN111538864A (zh) * | 2020-03-25 | 2020-08-14 | 新华三技术有限公司合肥分公司 | 一种减少Buildrun消耗的方法及装置 |
CN111797058A (zh) * | 2020-07-02 | 2020-10-20 | 长沙景嘉微电子股份有限公司 | 一种通用文件系统及文件管理的方法 |
CN112559253A (zh) * | 2020-12-24 | 2021-03-26 | 科东(广州)软件科技有限公司 | 一种计算机系统数据备份与还原的方法及装置 |
CN112579602A (zh) * | 2020-12-22 | 2021-03-30 | 杭州趣链科技有限公司 | 多版本数据存储方法、装置、计算机设备及存储介质 |
CN113377733A (zh) * | 2021-06-09 | 2021-09-10 | 西安理工大学 | 一种针对Hadoop分布式文件系统的存储优化方法 |
CN113468103A (zh) * | 2020-03-30 | 2021-10-01 | 阿里巴巴集团控股有限公司 | 在快照迁移中使用的方法以及装置 |
CN113961754A (zh) * | 2021-09-08 | 2022-01-21 | 南湖实验室 | 一种基于持久内存的图数据库系统 |
CN115048046A (zh) * | 2022-05-26 | 2022-09-13 | 北京华昱卓程软件有限公司 | 日志文件系统以及数据管理方法 |
WO2024131057A1 (zh) * | 2022-12-23 | 2024-06-27 | 苏州元脑智能科技有限公司 | 获取文件系统差异数据的方法、装置、设备及介质 |
CN118445263A (zh) * | 2024-07-08 | 2024-08-06 | 中国人民解放军国防科技大学 | 基于三叉树nat数据结构的手机文件系统数据存储方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120197965A1 (en) * | 2002-10-30 | 2012-08-02 | Riverbed Technology, Inc. | Transaction accelerator for client-server communications systems |
CN103744961A (zh) * | 2014-01-06 | 2014-04-23 | 清华大学 | 用可重构的文件系统目录树提高非易失性存储寿命的方法 |
-
2016
- 2016-04-19 CN CN201610244082.3A patent/CN105868396A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120197965A1 (en) * | 2002-10-30 | 2012-08-02 | Riverbed Technology, Inc. | Transaction accelerator for client-server communications systems |
CN103744961A (zh) * | 2014-01-06 | 2014-04-23 | 清华大学 | 用可重构的文件系统目录树提高非易失性存储寿命的方法 |
Non-Patent Citations (9)
Title |
---|
CHANGMAN LEE ETAL.: "F2FS: A New File System for Flash Storage", 《THE PROCEEDINGS OF THE 13TH USENIX CONFERENCE ON FILE AND STORAGE TECHNOLOGIES》 * |
CSDN: "F2FS文件系统架构与原理分析(三) ——文件索引树", 《HTTPS://BLOG.CSDN.NET/ZWJ0403/ARTICLE/DETAILS/12970811》 * |
CSDN: "F2FS文件系统架构与原理分析(二)——磁盘布局", 《HTTPS://BLOG.CSDN.NET/FYBON/ARTICLE/DETAILS/36008605》 * |
CSDN: "F2FS文件系统架构与原理分析(五)——元数据组织及管理", 《HTTPS://BLOG.CSDN.NET/FYBON/ARTICLE/DETAILS/38752977》 * |
CSDN: "F2FS文件系统架构与原理分析(四)——F2FS的目录结构与目录哈希", 《HTTPS://BLOG.CSDN.NET/ZWJ0403/ARTICLE/DETAILS/12970819》 * |
CSDN: "Linux文件系统中元数据使用计数机制", 《HTTPS://WWW.BAIDU.COM/LINK?URL=P30EDWQEKWQQXLABHMJGFDIYBSQFESJ-ZLFZVQWS9-D1MKYQYR5YEEJYKJT4YJ7PEV0N8CKAL-7MS2MCBJTTBJJYYL0ZACWQ747-BHZJC_E&WD=&EQID=88B9973400013115000000035C1DF569》 * |
EUNJILEE ETAL.: "On-Demand Snapshot: An Efficient Versioning File System for Phase-Change Memory", 《IEEE》 * |
道客巴巴: "F2FS文件系统实现分析及其在移动设备上的优化", 《HTTP://WWW.DOC88.COM/P-1806941151295.HTML》 * |
陈撰: "Linux 文件系统中元数据使用计数的机制", 《HTTPS://WWW.IBM.COM/DEVELOPERWORKS/CN/LINUX/L-CN-USAGECOUNTER/》 * |
Cited By (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372199B (zh) * | 2016-08-31 | 2019-07-05 | 镇江乐游网络科技有限公司 | 一种基于元数据支持的多版本文件管理系统 |
CN106372199A (zh) * | 2016-08-31 | 2017-02-01 | 镇江乐游网络科技有限公司 | 一种基于元数据支持的多版本文件管理系统 |
CN110268379B (zh) * | 2017-01-06 | 2023-08-18 | 甲骨文国际公司 | 文件系统数据层次结构的云迁移 |
CN110114751A (zh) * | 2017-01-06 | 2019-08-09 | 甲骨文国际公司 | 压缩以及安全的端到端加密的zfs云存储 |
CN110100228B (zh) * | 2017-01-06 | 2023-08-22 | 甲骨文国际公司 | 利用云对象存储的文件系统层次结构的高效增量备份和恢复 |
CN110192176B (zh) * | 2017-01-06 | 2023-12-15 | 甲骨文国际公司 | 云对象存储库中受保证的文件系统层次结构数据完整性 |
CN110114751B (zh) * | 2017-01-06 | 2023-07-28 | 甲骨文国际公司 | 压缩以及安全的端到端加密的zfs云存储 |
CN110100228A (zh) * | 2017-01-06 | 2019-08-06 | 甲骨文国际公司 | 利用云对象存储的文件系统层次结构的高效增量备份和恢复 |
CN110100231A (zh) * | 2017-01-06 | 2019-08-06 | 甲骨文国际公司 | 促进性能、迁移和可用性的混合云镜像 |
US11755535B2 (en) | 2017-01-06 | 2023-09-12 | Oracle International Corporation | Consistent file system semantics with cloud object storage |
CN110100231B (zh) * | 2017-01-06 | 2023-12-12 | 甲骨文国际公司 | 促进性能、迁移和可用性的混合云镜像 |
CN110192176A (zh) * | 2017-01-06 | 2019-08-30 | 甲骨文国际公司 | 云对象存储库中受保证的文件系统层次结构数据完整性 |
CN110268379A (zh) * | 2017-01-06 | 2019-09-20 | 甲骨文国际公司 | 文件系统数据层次结构的云迁移 |
US11714784B2 (en) | 2017-01-06 | 2023-08-01 | Oracle International Corporation | Low-latency direct cloud access with file system hierarchies and semantics |
CN109271278B (zh) * | 2017-07-18 | 2022-09-02 | 阿里巴巴集团控股有限公司 | 一种确定磁盘快照数据切片的引用次数的方法和装置 |
CN109271278A (zh) * | 2017-07-18 | 2019-01-25 | 阿里巴巴集团控股有限公司 | 一种确定磁盘快照数据切片的引用次数的方法和装置 |
CN107544873A (zh) * | 2017-08-28 | 2018-01-05 | 郑州云海信息技术有限公司 | 一种存放备份数据的备份系统和方法 |
CN107862064A (zh) * | 2017-11-16 | 2018-03-30 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件系统 |
CN110807003A (zh) * | 2018-07-18 | 2020-02-18 | 成都华为技术有限公司 | 修改访问控制列表的引用计数的方法和装置 |
CN110807003B (zh) * | 2018-07-18 | 2023-03-24 | 成都华为技术有限公司 | 修改访问控制列表的引用计数的方法和装置 |
CN109189783B (zh) * | 2018-08-03 | 2023-10-03 | 北京涛思数据科技有限公司 | 一种时序数据库表结构改变处理方法 |
CN109189783A (zh) * | 2018-08-03 | 2019-01-11 | 北京涛思数据科技有限公司 | 一种时序数据库表结构改变处理方法 |
CN110928839A (zh) * | 2018-08-31 | 2020-03-27 | 携程旅游网络技术(上海)有限公司 | 国际运价数据的存储方法和系统 |
CN110928839B (zh) * | 2018-08-31 | 2023-05-12 | 携程旅游网络技术(上海)有限公司 | 国际运价数据的存储方法和系统 |
CN109582500A (zh) * | 2018-11-26 | 2019-04-05 | 万兴科技股份有限公司 | 数据恢复方法、装置、计算机设备及存储介质 |
CN109582500B (zh) * | 2018-11-26 | 2021-09-03 | 万兴科技股份有限公司 | 数据恢复方法、装置、计算机设备及存储介质 |
CN110162525A (zh) * | 2019-04-17 | 2019-08-23 | 平安科技(深圳)有限公司 | 基于b+树的读写冲突解决方法、装置及存储介质 |
CN110162525B (zh) * | 2019-04-17 | 2023-09-26 | 平安科技(深圳)有限公司 | 基于b+树的读写冲突解决方法、装置及存储介质 |
CN110297781B (zh) * | 2019-07-02 | 2023-05-02 | 四川效率源信息安全技术股份有限公司 | 一种基于写时复制来恢复apfs中被删除数据的方法 |
CN110297781A (zh) * | 2019-07-02 | 2019-10-01 | 四川效率源信息安全技术股份有限公司 | 一种基于写时复制来恢复apfs中被删除数据的方法 |
CN111538864A (zh) * | 2020-03-25 | 2020-08-14 | 新华三技术有限公司合肥分公司 | 一种减少Buildrun消耗的方法及装置 |
CN113468103A (zh) * | 2020-03-30 | 2021-10-01 | 阿里巴巴集团控股有限公司 | 在快照迁移中使用的方法以及装置 |
CN113468103B (zh) * | 2020-03-30 | 2024-03-08 | 阿里巴巴集团控股有限公司 | 在快照迁移中使用的方法以及装置 |
CN111797058B (zh) * | 2020-07-02 | 2024-02-09 | 长沙景嘉微电子股份有限公司 | 一种通用文件系统及文件管理的方法 |
CN111797058A (zh) * | 2020-07-02 | 2020-10-20 | 长沙景嘉微电子股份有限公司 | 一种通用文件系统及文件管理的方法 |
WO2022134128A1 (zh) * | 2020-12-22 | 2022-06-30 | 杭州趣链科技有限公司 | 多版本数据存储方法、装置、计算机设备及存储介质 |
CN112579602A (zh) * | 2020-12-22 | 2021-03-30 | 杭州趣链科技有限公司 | 多版本数据存储方法、装置、计算机设备及存储介质 |
CN112579602B (zh) * | 2020-12-22 | 2023-06-09 | 杭州趣链科技有限公司 | 多版本数据存储方法、装置、计算机设备及存储介质 |
CN112559253A (zh) * | 2020-12-24 | 2021-03-26 | 科东(广州)软件科技有限公司 | 一种计算机系统数据备份与还原的方法及装置 |
CN113377733A (zh) * | 2021-06-09 | 2021-09-10 | 西安理工大学 | 一种针对Hadoop分布式文件系统的存储优化方法 |
CN113961754A (zh) * | 2021-09-08 | 2022-01-21 | 南湖实验室 | 一种基于持久内存的图数据库系统 |
CN115048046A (zh) * | 2022-05-26 | 2022-09-13 | 北京华昱卓程软件有限公司 | 日志文件系统以及数据管理方法 |
WO2024131057A1 (zh) * | 2022-12-23 | 2024-06-27 | 苏州元脑智能科技有限公司 | 获取文件系统差异数据的方法、装置、设备及介质 |
CN118445263A (zh) * | 2024-07-08 | 2024-08-06 | 中国人民解放军国防科技大学 | 基于三叉树nat数据结构的手机文件系统数据存储方法 |
CN118445263B (zh) * | 2024-07-08 | 2024-08-30 | 中国人民解放军国防科技大学 | 基于三叉树nat数据结构的手机文件系统数据存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105868396A (zh) | 内存文件系统的多版本控制方法 | |
CN107862064B (zh) | 一个基于nvm的高性能、可扩展的轻量级文件系统 | |
US11301379B2 (en) | Access request processing method and apparatus, and computer device | |
CN103744961B (zh) | 用可重构的文件系统目录树提高非易失性存储寿命的方法 | |
US7363540B2 (en) | Transaction-safe FAT file system improvements | |
US8055864B2 (en) | Efficient hierarchical storage management of a file system with snapshots | |
US11755427B2 (en) | Fast recovery and replication of key-value stores | |
US20140089264A1 (en) | Snapshots for a non-volatile device | |
US20130246726A1 (en) | Method and device for a memory system | |
KR20120090965A (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
CN103207883A (zh) | 用于元数据持久存储的方法 | |
US11030092B2 (en) | Access request processing method and apparatus, and computer system | |
US8060481B1 (en) | Time indexed file system | |
US11841826B2 (en) | Embedded reference counts for file clones | |
US10229127B1 (en) | Method and system for locality based cache flushing for file system namespace in a deduplicating storage system | |
US6629203B1 (en) | Alternating shadow directories in pairs of storage spaces for data storage | |
CN113377292B (zh) | 一种单机存储引擎 | |
CN111414320B (zh) | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
US20220382674A1 (en) | Garbage collection of tree structure with page mappings | |
KR101456104B1 (ko) | 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치 | |
JP4159506B2 (ja) | 階層記憶装置、その復旧方法、及び復旧プログラム | |
US20230214146A1 (en) | Micro-batching metadata updates to reduce transaction journal overhead during snapshot deletion | |
Kára | Ext4, btrfs, and the others | |
US11860736B2 (en) | Resumable copy-on-write (COW) B+tree pages deletion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160817 |
|
RJ01 | Rejection of invention patent application after publication |