CN103744961B - 用可重构的文件系统目录树提高非易失性存储寿命的方法 - Google Patents
用可重构的文件系统目录树提高非易失性存储寿命的方法 Download PDFInfo
- Publication number
- CN103744961B CN103744961B CN201410005081.4A CN201410005081A CN103744961B CN 103744961 B CN103744961 B CN 103744961B CN 201410005081 A CN201410005081 A CN 201410005081A CN 103744961 B CN103744961 B CN 103744961B
- Authority
- CN
- China
- Prior art keywords
- directory tree
- metadata
- directory
- file system
- page
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 76
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000002085 persistent effect Effects 0.000 claims abstract description 105
- 238000011084 recovery Methods 0.000 claims abstract description 15
- 230000002688 persistence Effects 0.000 claims description 12
- 230000004048 modification Effects 0.000 claims description 9
- 238000012986 modification Methods 0.000 claims description 9
- 238000012423 maintenance Methods 0.000 claims description 8
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 2
- 230000003679 aging effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 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/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
用可重构的文件系统目录树提高非易失性存储寿命的方法属于文件系统领域。其特征在于,包括内存虚拟目录树,将文件系统目录树元数据的更新记录到内存,而无需写回持久目录树;通过嵌入式链接方法提供文件系统目录树的树形结构,即在被索引页面中嵌入索引链接信息的方式;通过持久元数据日志式写入方法提供的文件系统目录树的内容更新,即将多个元数据页面压缩并以日志形式写入的方式;以及故障恢复后的文件系统目录树的快速重构方法。根据本发明的实施例的方法,可有效缓解元数据写回操作造成的存储系统性能与寿命影响,并提供了文件系统目录树元数据的高速访问以及故障恢复后的快速重构。
Description
技术领域
本发明涉及文件系统领域,特别涉及文件系统目录树的组织方式与故障恢复方法。
背景技术
非易失性存储(non-volatile memory,即NVM),如闪存(flash memory),的存储单元存在写入次数有限的问题。随着写入次数的增加,存储单元保存数据的能力减弱,直至不能有效地保持数据的状态。这种有限次写入次数的问题被称为非易失性存储的寿命问题。
传统针对磁盘存储设计的文件系统尚未有效考虑写入数据量引入的存储设备寿命问题。其中,文件系统目录树的设计会导致元数据页面频繁地分散写回到存储设备,其呈现“分散小写”与“频繁写回”两个显著特征。“分散小写”是指在文件系统中单个元数据操作通常涉及多个页面的写入,但每个页面更新的字节数很小。例如,文件创建操作需要修改包括文件inode,文件目录项,父目录inode以及空间管理bitmap等多个元数据页面;但每个页面里面的修改极小,如inode仅为128字节(ext2),空间管理bitmap仅修改几个比特,远小于4K的页面大小。“频繁写回”是指文件系统为防止意外掉电等故障发生导致数据不一致或者数据丢失,从而频繁地写回内存中的脏元数据页面。
文件系统目录树的“分散小写”与“频繁写回”不仅影响存储系统性能,也损害了存储设备的寿命。一方面,文件系统目录树的元数据页面频繁分散写回,既体现为随机写入,又体现为操作次数的增加,从而影响存储性能。另一方面,由于存储设备以页面粒度大小写回,文件系统目录树的“分散小写”使得写回到存储设备的数据量远大于元数据实际更新大小。同时,“频繁写回”也降低了缓存的缓冲作用,使得写回的数据量大大增加。因而文件系统目录树的维护也极大地影响了存储设备的寿命。
发明内容
本发明的目的旨在至少解决上述的技术缺陷之一。
本发明的特征在于,是在文件系统中依次按以下步骤实现的:
步骤(1),在所述文件系统中构建一个文件系统目录树管理模块,包括:内存中的内存虚拟目录树Virtual Directory Tree,简称VDT,和持久性存储;所述持久性存储包括:持久目录树Persistent Directory Tree,简称PDT,和持久元数据日志;其中,
内存虚拟目录树VDT是用所述内存虚拟目录树元数据页面Mvdt表示,包括:内存目录树元数据页面Mmemory和因内存替换而需写回到持久性存储的元数据页面Muptodate,因而Mvdt=Mmemory+Muptodat;e
持久目录树PDT是用所述持久目录树元数据页面Mpdt表示,即存储于持久性存储中的目录树元数据页面Mdisk,包括:所述因内存替换而写回的Muptodate,内存中未被访问的元数据页面Muntouched以及被内存缓存的元数据页面Mobsolete,因而Mpdt=Mdisk=Muptodate+Muntouched+Mobsolete;
两种所述目录树元数据页面至少包括:索引节点页面inode page和目录项节点页面directory entry node page;其中:
索引节点页面是索引节点的集合,索引节点包括:文件的索引节点和目录的索引节点;其中,文件/目录的索引节点记录了一个文件/目录的创建者、拥有者、文件大小、创建时间、修改时间、访问时间、访问控制列表以及数据页面索引;
目录项节点页面是目录项的集合,目录项记录了文件/目录的名字及其索引节点号;
所述文件系统目录树管理模块还含有:
在被索引页面中嵌入索引链接信息的两种嵌入式链接方式以维护文件系统目录树的树形结构一致性:
“文件/目录索引节点-数据页面”链接方式,在数据页面的元数据区域至少记录以下信息:所述的文件/目录的索引节点号ino、数据逻辑偏移off、有效数据长度len以及当前页面更新版本ver,
“目录项-文件/目录索引节点”链接方式,用于生成创建记录,其中至少包括:父目录的索引节点号ino,自身索引节点号以及目录项内容,以写入持久元数据日志,
为了实现所述的两种嵌入式链接方式,所述索引节点的信息中还包括:索引节点的生命周期<Vborn,Vcur>,Vborn表示该索引节点的创建版本,Vcur表示该索引节点的当前更新版本;在所述索引节点被删除时,Vborn值置为(Vcur+1),
从而形成了一个在意外故障发生后,由于内存数据丢失而需要把所述持久性存储中记录的信息写回内存以重构的内存虚拟目录树,
由于触发条件不同,在写回时要分别执行a-d四类不同的操作:
a.内存替换写回,是一种因内存容量紧张而导致的元数据页面写回,所述元数据页面被写回到所述持久目录树,即加入所述的因内存替换而需写回到持久性存储的元数据页面Muptodat,
b.检查点写回,是一种因检查点操作导致的元数据页面写回,所述元数据页面写回到所述持久目录树,
c.对因维护文件系统目录树一致性导致的元数据页面写回,按照所述的两种嵌入式链接方式分别写回:对“文件/目录索引节点-数据页面”链接方式,在数据页面中嵌入索引链接信息的方式写回到所述的持久目录树;对“目录项-文件/目录索引节点”链接方式,生成创建记录,写回到所述的持久元数据日志,
d.对因维护文件系统目录树内容持久性导致的元数据页面写回,用持久元数据日志式写入方法写回到所述的持久元数据日志;
步骤(2),构建一个文件系统目录树管理系统,包括:持久性存储控制器、内存储器以及一个所述文件系统目录树管理模块,
其中,文件系统目录树管理模块设有:维护文件系统目录树的控制信号,所述写回时分别执行四类不同的操作包括:内存紧张控制信号,检查点控制信号、维护文件系统目录树一致性控制信号、文件系统目录树内容更新持久性控制信号以及故障修复控制信号,
还设有:不同类型的元数据写回操作指令以及文件系统内存虚拟目录树维护操作指令;
步骤(3),系统依次按以下步骤实现文件系统目录树的重构:
步骤(3.1),文件系统目录树管理模块维护内存虚拟目录树结构,将文件系统对文件系统目录树元数据页面的修改操作执行更新到内存虚拟目录树的操作,
步骤(3.2),所述持久性存储控制器判断写回控制信号的类型,执行写回操作,执行步骤(3.1),
若为内存紧张控制信号,则判为因内存容量紧张导致的元数据页面写回操作,把所述元数据页面写回到所述持久目录树,
若为检查点操作控制信号,其中至少包括正常关机和日志删除信号,则把因所述检查点操作导致的元数据页面写回操作中的元数据页面写回到所述持久目录树,
若为维护文件系统目录树树形结构一致性的控制信号,则把所需维护文件系统目录树一致性的元数据页面用嵌入式链接方法写回所述的持久目录树或持久元数据日志,再通过比对所记录的版本信息判断被维护数据页面的有效性,所述嵌入式链接方法包括“索引节点-数据页面”和“目录项-索引节点”两种链接:
若为“索引节点-数据页面”链接,则在数据页面的元数据区域至少记录一下信息:索引节点号、数据偏移、有效数据长度和版本号,
若为“目录项-索引节点”链接,则声称记录以下信息的创建记录:索引节点内容、父目录索引节点号以及目录项内容,并把所述创建记录写回持久元数据日志,
在所述索引节点中还包括:所述节点的生命周期<Vborn,Vcur>,Vborn表示该索引节点的创建版本,Vcur表示该索引节点的当前更新版本,
若为文件系统目录树的内容更新持久化控制信号,则把多个元数据页面压缩并以日志形式写回持久元数据日志,或者文件系统目录树跟踪被修改的脏数据的位置及大小,再把多个元数据页面的脏数据紧凑组合后写回所述持久元数据日志,
步骤(3.3),若为故障修复控制信号,则依次通过重构单个文件/目录的结构、重构目录树结构以及更新目录树内容以完成文件系统目录树的快速重构,
步骤(3.3.1),扫描未索引空间位置中的数据页面,读取其中的“索引节点-数据页面”节点链接,把所述数据页面链接到相应索引节点,重复执行步骤(3.3.1),一直到所述未索引空间位置扫描结束为止,完成单个文件/目录的重构,
步骤(3.3.2),扫描持久元数据日志,查找所有的创建和删除记录,把索引节点<Vborn,Vcur>更新到最新状态,删除小于Vborn的数据页面版本,一直到步骤(3.3.1)得到的单个文件/目录中的所有数据页面的有效性检查执行完毕,对得到的有效的数据节点,执行创建操作,按其中记录的“目录项-索引节点”链接关系,更新存储于父目录中的目录项,从而把所述索引节点链接到文件系统目录树中,完成文件系统目录树的结构重建,
步骤(3.3.3),扫描持久元数据日志中的其它元数据,把文件系统目录树中的元数据页面更新到最新状态,完成文件系统目录树的内容更新,从而完成文件系统目录树的恢复,结束。
为此,本发明的目的在于用可重构的文件系统目录树提高非易失性存储寿命,同时降低文件系统目录树元数据随机写回频率,减少写回数据量。
根据本发明的方法,内存虚拟目录树可提供高速的目录树元数据访问,且脏元数据页面无需写回到持久目录树中原有位置,从而避免了元数据页面写回引入的频繁的随机小写。同时,该方法提供了故障恢复后文件系统目录树的快速重构。尽管由于脏元数据页面未能及时写回持久目录树中原有位置,持久目录树的树形结构与元数据页面内容未能维持最新状态。该方法利用嵌入式链接和持久元数据日志式写入两种方法分别提供文件系统目录树的一致性(树形结构)与持久性(元数据页面内容)的更新。在故障恢复阶段,通过分步扫描从而快速重构文件系统目录树。
根据本发明的方法,用可重构的文件系统目录树提高非易失性存储寿命的方法既缓解了文件系统目录树元数据操作对存储系统的性能和寿命的影响,也保证了文件系统目录树的一致性、持久性等特性,并提供了故障发生后的快速恢复。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对本发明的描述中将变得明显和容易理解,其中:
图1为本发明的用可重构的文件系统目录树提高非易失性存储寿命的方法的主要模块示意图;
图2为本发明的文件系统目录树的结构示意图:实线箭头→表示“索引节点-数据页面”链接,虚线箭头表示“目录项-索引节点”链接;
图3为本发明的索引节点-数据页面链接的嵌入式链接方法的示意图;
图4为本发明的目录项-索引节点链接的嵌入式链接方法以及内存中元数据页面中脏数据部分标记的示意图;
图5为本发明的文件系统目录树的故障恢复的流程图;
图6为本发明的程序流程框图。
具体实施方式
下面详细描述本发明的具体实施方式,并在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
文件系统由两个主要模块构成:文件系统命名空间管理模块和文件系统存储管理模块。文件系统存储管理模块主要功能为管理文件数据在存储设备上的数据分布与数据布局,为文件系统提供文件逻辑偏移到存储设备地址的查询。文件系统命名空间管理模块主要功能为维护文件系统目录树,为文件系统提供文件名到文件索引节点的查询。
文件系统目录树维护包括结构和内容两方面的维护。文件系统目录树的结构维护指维护目录树的树形结构的一致性状态。该一致性要求树形结构中每两个有链接关系的页面同时被原子性更新,即同时维持旧状态,或者同时更新到新状态。文件系统目录树的内容维护指维护目录树中元数据页面更新的持久性,即其中数据在系统故障后仍能恢复。由于内存为易失性存储,因而文件系统目录树维护要求目录树元数据页面及时地写回非易失性存储设备。
文件系统目录树元数据页面主要包括索引节点页面(inode page)和目录项节点页面(directory entry node page)两类。索引节点页面为索引节点的集合,目录项节点页面为目录项的集合。索引节点既包括目录的索引节点,也包括文件的索引节点。索引节点记录了一个文件/目录的创建者,拥有者,文件大小,创建时间,修改时间,访问时间,访问控制列表,数据页面索引等信息。目录项节点指目录的内容,即该目录下所有文件与目录的目录项(directory entry,即dirent)集合。目录项记录了一个文件/目录的名字与索引节点号等信息。
图1为本发明的主要模块示意图。如图1所示,文件系统目录树的管理模块包括内存中的内存虚拟目录树,持久化存储中的文件系统持久数据结构(包括持久目录树、持久数据等)、持久元数据日志,以及软件系统中写回逻辑(包括内存替换/检查点写回、一致性写回、持久性写回)。
本发明的用可重构的文件系统目录树提高非易失性存储寿命的方法,包括以下步骤:
步骤1:文件系统维护内存虚拟目录树,该目录树中的元数据页面更新仅更新至内存目录树,而无需更新至持久目录树;
步骤2:文件系统目录树的树形结构维护,即一致性写回,通过嵌入式链接方法提供,即在被索引页面中嵌入索引链接信息的方式;
步骤3:文件系统目录树的内容更新,即持久性写回,通过持久元数据日志式写入方法提供,即将多个元数据页面压缩并以日志形式写入的方式;
步骤4:在故障发生后,通过重构单个文件/目录的结构、重构目录树结构以及更新目录树内容等步骤完成文件系统目录树的快速重构。
在本发明中,内存虚拟目录树(Volatile Directory Tree,VDT)由两部分组成:内存目录树元数据页面部分(Mmemory)和因内存替换写回持久性存储的元数据页面部分(Muptodate)。持久目录树(Persistent Directory Tree,PDT)指持久性存储中的目录树元数据页面(Mdisk)。持久性存储中目录树元数据页面包含三部分:因内存替换写回的元数据页面部分(Muptodate),未被访问(即内存没有该页面缓存)的元数据页面部分(Muntouched),以及内存含有该页面缓存的元数据页面部分(Mobsolete)。用Mvdt、Mpdt分别表示内存虚拟目录树、持久目录树的元数据页面集合,则应有:
Mvdt=Mmemory+Muptodate,
Mpdt=Mdisk=Muptodate+Muntouched+Mobsolete。
由于元数据页面仅更新至内存元数据页面,内存目录树维持最新的结构与内容,而持久目录树不能维持最新的结构与内容。在意外故障发生后,内存数据丢失,需要从持久性存储中记录的信息中重构目录树。以下部分将对写回操作与故障恢复做示例说明。
在本发明中,写回操作根据触发条件不同分为四类:(1)内存替换写回:对因内存容量紧张导致的元数据页面替换写回,该元数据页面写回到持久目录树;(2)检查点写回:对因检查点操作导致的元数据页面写回,该元数据页面写回到持久目录树;(3)一致性写回:对因维护文件系统目录树一致性导致的元数据页面写回,该元数据页面通过步骤2中所述嵌入式链接方法写回;(4)持久性写回:对因维护文件系统目录树内容持久性导致的元数据页面写回,该元数据页面通过步骤3中所述持久元数据日志式写入方法写回。
检查点(checkpoint)操作指将内存目录树元数据页面中脏数据页面写回持久性存储的操作,即使得持久目录树更新到最新状态,与内存虚拟目录树一致。检查点操作触发条件包括正常关机、日志删除等。检查点操作可降低故障恢复时的重构代价。例如在正常关机时进行检查点操作,下次开机无需故障恢复操作,因为所读取的持久目录树已为最新状态。
在本发明中,一致性写回采用嵌入式链接的方法。嵌入式链接的方法的主要特征为:将树形结构每个链接中链接元数据部分与被链接元数据部分合并存储。文件系统目录树链接包含两种链接形式:索引节点-数据页面(inode-data)链接,目录项-索引节点(dirent-inode)链接。图2为文件系统目录树链接示意图。索引节点-数据页面链接包含两类链接:文件的索引节点-数据页面链接,和目录的索引节点-目录项页面链接。
这两种不同形式的链接采用了不同了组织方式。图3为索引节点-数据页面链接的嵌入式链接方法示例。数据页面将索引节点信息记录于数据页面中。在数据页面中记录的索引节点信息为<ino,off,len,ver>,其中ino表示索引节点号,off表示该数据页面在索引节点所指示的文件中的逻辑偏移,len指该页面中有效数据长度,ver表示当前页面更新的版本。该方法可以两种方式实施:一种方式是利用页面的元数据区域记录,该方式适用于,如闪存存储中每个页面包含一定大小的元数据区域,该元数据区域与页面数据的读写为原子性操作(即读写同时成功或失败);另一种方式将该部分记录于数据内容部分,该方式适用于数据页面没有额外元数据区域的情况,如传统磁盘未提供用户可访问的额外元数据区域。
图4为目录项-索引节点链接的嵌入式链接方法示例。由于目录项中包含文件/目录名字,为非定长字段,因此索引节点-数据页面链接的嵌入式链接方法中在被链接页面记录链接信息的方式不适用。目录项-索引节点链接的嵌入式链接方法将目录项部分与索引节点部分合并为一个创建记录(create record),并写入持久元数据日志中的新的页面中。在创建记录中除了记录着两部分的内容外,还包括<lba,off,len,ver>的信息,其中lba表示原有元数据页面的逻辑地址,off表示目录项/索引节点在元数据页面内部偏移,len表示目录项/索引节点的有效数据长度,ver表示目录项/索引节点的更新版本。创建记录被标记为创建的类型,并与其它元数据更新一同写入持久元数据日志区域。
嵌入式链接方法减少了元数据页面的写入,且提供了元数据操作的一致性。嵌入式链接方式将链接元数据部分与被链接数据部分组合,仅更新数据页面或含有创建记录的页面,从而避免了多个元数据页面的更新。同时,由于在持久性存储中的单个页面更新为原子操作,提供了元数据操作的一致性,故而避免了因多个元数据页面更新引入的文件系统日志(journaling)机制。
在本发明中,删除操作采用了版本标记的方法标记索引节点与数据页面的有效期。由于文件系统中文件删除后,索引节点可被重用为新的文件,为避免上述嵌入式方法中将过期数据页面链接到新的索引节点,故采用版本标记方法。版本标记方法具体为:在索引节点中增加该索引节点的生命周期<Vborn,Vcur>,Vborn表示该索引节点的创建版本,Vcur表示该索引节点的当前更新版本;当该索引节点被删除时,Vborn的值被置为(Vcur+1)。数据页面通过比对其所记录版本信息判断该数据页面的有效性:当且仅当数据页面的版本不小于Vborn,数据页面有效。
在本发明中,为减少故障失效后扫描查找未链接数据页面的代价,数据页面更新到特定的逻辑地址空间,该空间被称为未索引数据空间。由于故障发生后,内存虚拟目录树丢失,且数据页面采用嵌入式链接方式,从持久目录树中并不能访问到数据页面,因而需要扫描查找出未链接的数据页面。使用未索引数据空间限制数据页面更新地址的方法可减少故障恢复时的扫描代价。
在本发明中,持久性写回采用持久元数据日志式写入方法。持久元数据日志式写入方法在内存中跟踪文件系统目录树的元数据页面中的修改部分,即脏元数据部分。如图4所示,标记方法采用仅需记录每次修改部分在其所在元数据页面中的偏移,以及修改部分的大小,用<len,off>元组表示。对于单个元数据页面的多次修改采用链表的方式将<len,off>元组链接到元数据页面上。
持久性写回的触发条件包括用户显式调用同步操作(如sync)、内核后台线程周期性写回(如pdflush)等。在持久性写回时,持久元数据日志式写入方法查找多个脏元数据页面,将其中脏元数据部分拼接后写入持久性存储中的持久元数据日志部分。
持久化元数据日志写满后需要删除时,需要先执行检查点操作,然后直接丢弃已写日志即可。
持久元数据日志(metadata persistence logs)与传统文件系统日志(journaling)有以下不同。(1)作用不同:持久元数据日志主要作为用提供系统持久性,仅记录因持久化需求而导致的元数据页面写回,而文件系统日志主要作用为提供系统一致性,记录所有元数据页面的写回操作;(2)页面组织方式不同:持久元数据日志以记录(record)为粒度,仅记录元数据页面中脏元数据部分,而文件系统日志以页面(page)为粒度,记录元数据页面的所有内容;(3)访问方式不同:持久性元数据仅在故障恢复时读取,而文件系统日志需要周期性访问以写回到元数据元数据位置(即持久目录树中的位置)。
在本发明中,如图5所示,用可重构的文件系统目录树提高非易失性存储寿命的方法的故障恢复,包括以下步骤:
步骤(1)扫描未索引空间区域,查找所有未链接数据页面,并链接到相应索引节点,完成单个文件/目录的结构重构;
步骤(1.1)根据记录的未索引空间位置,依次检查其中数据页面;
步骤(1.2)读取该数据页面中的嵌入式链接信息,即“索引节点-数据页面”链接,将该页面链接到相应索引节点;
步骤(1.3)等待未索引空间区域扫描完毕,所有未链接数据页面已被链接到相应索引节点;
步骤(2)扫描持久元数据日志,查找所有创建、删除记录,更新索引节点版本,完成单个文件/目录中有效数据的筛选;同时根据最新创建记录,将有效索引节点链接到其父目录的目录项中,完成文件系统目录树的结构重构;
步骤(2.1)查找所有创建、删除操作,更新索引节点的<Vborn,Vcur>到最新状态;
步骤(2.2)对步骤(1)中重构的单个文件/目录中的数据页面进行有效性检查:若页面版本小于Vborn,则删除该数据页面;否则,保留该数据页面;
步骤(2.3)等到步骤(1)中重构的单个文件/目录的有效性数据页面筛选完成,完成单个文件/目录的结构重构和数据内容更新;
步骤(2.4)对有效的索引节点,根据最新创建记录中“目录项-索引节点”链接关系,更新其父目录的目录项,从而将该索引节点链接到文件系统目录树中,完成文件系统目录树的结构重构;
步骤(3)扫描持久元数据日志中的其它内容,将文件系统目录树中的元数据页面更新到最新状态,从而完成文件系统目录树的内容更新;
步骤(4)至此,完成文件系统目录树的恢复。
在本发明中,用可重构的文件系统目录树提高非易失性存储寿命的方法既缓解了文件系统目录树元数据操作对存储系统的性能和寿命的影响,也保证了文件系统目录树的一致性、持久性等特性,并提供了故障发生后的快速恢复。
内存虚拟目录树可提供高速的目录树元数据访问,且脏元数据页面无需写回到持久目录树中原有位置,从而避免了元数据页面写回引入的频繁的随机小写。同时,该方法提供了故障恢复后文件系统目录树的快速重构。尽管由于脏元数据页面未能及时写回持久目录树中原有位置,持久目录树的树形结构与元数据页面内容未能维持最新状态。该方法利用嵌入式链接和持久元数据日志式写入两种方法分别提供文件系统目录树的一致性(树形结构)与持久性(元数据页面内容)的更新,从而分别提供了故障发生后的文件系统目录树的结构重构和内容更新的信息。在故障恢复阶段,通过分步扫描从而快速重构文件系统目录树。
尽管上面已经示出和描述了本发明的实施方式,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (1)
1.用可重构的文件系统目录树提高非易失性存储寿命的方法,其特征在于,是在文件系统中依次按以下步骤实现的:
步骤(1),在所述文件系统中构建一个文件系统目录树管理模块,包括:内存中的内存虚拟目录树Virtual Directory Tree,简称VDT,和持久性存储;所述持久性存储包括:持久目录树Persistent Directory Tree,简称PDT,和持久元数据日志;其中,内存虚拟目录树VDT是用所述内存虚拟目录树元数据页面Mvdt表示,包括:内存目录树元数据页面Mmemory和因内存替换而需写回到持久性存储的元数据页面Muptodate,因而Mvdt=Mmemory+Muptodate;
持久目录树PDT是用所述持久目录树元数据页面Mpdt表示,即存储于持久性存储中的目录树元数据页面Mdisk,包括:所述因内存替换而写回的Muptodate,内存中未被访问的元数据页面Muntouched以及被内存缓存的元数据页面Mobsolete,因而Mpdt=Mdisk=Muptodate+Muntouched+Mobsolete;
两种所述目录树元数据页面至少包括:索引节点页面inode page和目录项节点页面directory entry node page;其中:
索引节点页面是索引节点的集合,索引节点包括:文件的索引节点和目录的索引节点;其中,文件/目录的索引节点记录了一个文件/目录的创建者、拥有者、文件大小、创建时间、修改时间、访问时间、访问控制列表以及数据页面索引;
目录项节点页面是目录项的集合,目录项记录了文件/目录的名字及其索引节点号;
所述文件系统目录树管理模块还含有:
在被索引页面中嵌入索引链接信息的两种嵌入式链接方式以维护文件系统目录树的树形结构一致性:
“文件/目录索引节点-数据页面”链接方式,在数据页面的元数据区域至少记录以下信息:所述的文件/目录的索引节点号ino、数据逻辑偏移off、有效数据长度len以及当前页面更新版本ver,
“目录项-文件/目录索引节点”链接方式,用于生成创建记录,其中至少包括:父目录的索引节点号ino,自身索引节点号以及目录项内容,以写入持久元数据日志,
为了实现所述的两种嵌入式链接方式,所述索引节点的信息中还包括:索引节点的生命周期<Vborn,Vcur>,Vborn表示该索引节点的创建版本,Vcur表示该索引节点的当前更新版本;在所述索引节点被删除时,Vborn值置为(Vcur+1),
从而形成了一个在意外故障发生后,由于内存数据丢失而需要把所述持久性存储中记录的信息写回内存以重构的内存虚拟目录树,
由于触发条件不同,在写回时要分别执行a-d四类不同的操作:
a.内存替换写回,是一种因内存容量紧张而导致的元数据页面写回,所述元数据页面被写回到所述持久目录树,即加入所述的因内存替换而需写回到持久性存储的元数据页面Muptodate,
b.检查点写回,是一种因检查点操作导致的元数据页面写回,所述元数据页面写回到所述持久目录树,
c.对因维护文件系统目录树一致性导致的元数据页面写回,按照所述的两种嵌入式链接方式分别写回:对“文件/目录索引节点-数据页面”链接方式,在数据页面中嵌入索引链接信息的方式写回到所述的持久目录树;对“目录项-文件/目录索引节点”链接方式,生成创建记录,写回到所述的持久元数据日志,
d.对因维护文件系统目录树内容持久性导致的元数据页面写回,用持久元数据日志式写入方法写回到所述的持久元数据日志;
步骤(2),构建一个文件系统目录树管理系统,包括:持久性存储控制器、内存储器以及一个所述文件系统目录树管理模块,
其中,文件系统目录树管理模块设有:维护文件系统目录树的控制信号,所述写回时分别执行四类不同的操作,包括:内存紧张控制信号,检查点控制信号、维护文件系统目录树一致性控制信号、文件系统目录树内容更新持久性控制信号以及故障修复控制信号,
还设有:不同类型的元数据写回操作指令以及文件系统内存虚拟目录树维护操作指令;
步骤(3),系统依次按以下步骤实现文件系统目录树的重构:
步骤(3.1),文件系统目录树管理模块维护内存虚拟目录树结构,将文件系统对文件系统目录树元数据页面的修改操作执行更新到内存虚拟目录树的操作,
步骤(3.2),所述持久性存储控制器判断写回控制信号的类型,执行写回操作,执行步骤(3.1),
若为内存紧张控制信号,则判为因内存容量紧张导致的元数据页面写回操作,把所述元数据页面写回到所述持久目录树,
若为检查点操作控制信号,其中至少包括正常关机和日志删除信号,则把因所述检查点操作导致的元数据页面写回操作中的元数据页面写回到所述持久目录树,
若为维护文件系统目录树树形结构一致性的控制信号,则把所需维护文件系统目录树一致性的元数据页面用嵌入式链接方法写回所述的持久目录树或持久元数据日志,再通过比对所记录的版本信息判断被维护数据页面的有效性,所述嵌入式链接方法包括“索引节点-数据页面”和“目录项-索引节点”两种链接:
若为“索引节点-数据页面”链接,则在数据页面的元数据区域至少记录一下信息:索引节点号、数据偏移、有效数据长度和版本号,
若为“目录项-索引节点”链接,则声称记录以下信息的创建记录:索引节点内容、父目录索引节点号以及目录项内容,并把所述创建记录写回持久元数据日志,
在所述索引节点中还包括:所述节点的生命周期<Vborn,Vcur>,Vborn表示该索引节点的创建版本,Vcur表示该索引节点的当前更新版本,
若为文件系统目录树的内容更新持久化控制信号,则把多个元数据页面压缩并以日志形式写回持久元数据日志,或者文件系统目录树跟踪被修改的脏数据的位置及大小,再把多个元数据页面的脏数据紧凑组合后写回所述持久元数据日志,
步骤(3.3),若为故障修复控制信号,则依次通过重构单个文件/目录的结构、重构目录树结构以及更新目录树内容以完成文件系统目录树的快速重构,
步骤(3.3.1),扫描未索引空间位置中的数据页面,读取其中的“索引节点-数据页面”节点链接,把所述数据页面链接到相应索引节点,重复执行步骤(3.3.1),一直到所述未索引空间位置扫描结束为止,完成单个文件/目录的重构,
步骤(3.3.2),扫描持久元数据日志,查找所有的创建和删除记录,把索引节点<Vborn,Vcur>更新到最新状态,删除小于Vborn的数据页面版本,一直到步骤(3.3.1)得到的单个文件/目录中的所有数据页面的有效性检查执行完毕,对得到的有效的数据节点,执行创建操作,按其中记录的“目录项-索引节点”链接关系,更新存储于父目录中的目录项,从而把所述索引节点链接到文件系统目录树中,完成文件系统目录树的结构重建,
步骤(3.3.3),扫描持久元数据日志中的其它元数据,把文件系统目录树中的元数据页面更新到最新状态,完成文件系统目录树的内容更新,从而完成文件系统目录树的恢复,结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410005081.4A CN103744961B (zh) | 2014-01-06 | 2014-01-06 | 用可重构的文件系统目录树提高非易失性存储寿命的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410005081.4A CN103744961B (zh) | 2014-01-06 | 2014-01-06 | 用可重构的文件系统目录树提高非易失性存储寿命的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103744961A CN103744961A (zh) | 2014-04-23 |
CN103744961B true CN103744961B (zh) | 2016-10-19 |
Family
ID=50501979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410005081.4A Active CN103744961B (zh) | 2014-01-06 | 2014-01-06 | 用可重构的文件系统目录树提高非易失性存储寿命的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103744961B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105830041B (zh) * | 2014-11-27 | 2019-06-18 | 华为技术有限公司 | 元数据的恢复方法及装置 |
CN106326229B (zh) * | 2015-06-17 | 2020-04-03 | 百富计算机技术(深圳)有限公司 | 一种嵌入式系统的文件存储方法和装置 |
CN105607960B (zh) * | 2015-10-26 | 2018-12-07 | 成都华为技术有限公司 | 文件系统目录树修复方法和装置 |
KR102413755B1 (ko) * | 2015-11-20 | 2022-06-28 | 삼성전자주식회사 | 리텐션 특성에 의한 성능 저하를 복구하는 저장 장치의 동작 방법 및 이를 포함하는 데이터 처리 시스템의 동작 방법 |
CN105701146B (zh) * | 2015-12-28 | 2019-07-05 | 小米科技有限责任公司 | 创建目录的方法和装置 |
CN105653411B (zh) * | 2015-12-28 | 2019-01-18 | 哈尔滨工业大学 | 支持局部永久故障恢复的多核处理器芯片可重构系统 |
CN105868396A (zh) * | 2016-04-19 | 2016-08-17 | 上海交通大学 | 内存文件系统的多版本控制方法 |
CN107315746B (zh) * | 2016-04-26 | 2020-08-25 | 清华大学 | 基于非易失性主存的高效事务文件系统构建方法 |
CN106202492B (zh) * | 2016-07-19 | 2020-05-29 | 浪潮(北京)电子信息产业有限公司 | 一种网络文件系统的元数据服务优化方法及系统 |
CN106649608A (zh) * | 2016-11-29 | 2017-05-10 | 郑州云海信息技术有限公司 | 分布式文件系统小文件性能提升方法、目录生成器及系统 |
CN106682186B (zh) * | 2016-12-29 | 2020-06-16 | 华为技术有限公司 | 文件访问控制列表管理方法和相关装置和系统 |
CN108427648B (zh) * | 2017-02-14 | 2023-12-01 | 中兴通讯股份有限公司 | 存储系统页内脏数据索引方法和装置 |
US11301433B2 (en) * | 2017-11-13 | 2022-04-12 | Weka.IO Ltd. | Metadata journal in a distributed storage system |
CN108021472B (zh) * | 2017-11-28 | 2021-02-02 | 厦门市美亚柏科信息股份有限公司 | ReFS文件系统的格式化恢复方法及存储介质 |
CN108829345B (zh) * | 2018-05-25 | 2020-02-21 | 华为技术有限公司 | 日志文件的数据处理方法和终端设备 |
CN108804625B (zh) * | 2018-05-31 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 一种lsm树的优化方法、装置及计算机设备 |
CN108897642B (zh) * | 2018-06-27 | 2020-11-27 | 清华大学 | 持久性事务内存系统中日志机制的优化方法及装置 |
CN109491962B (zh) * | 2018-11-06 | 2022-02-22 | 深圳市迅雷网络技术有限公司 | 一种文件目录树管理方法及相关装置 |
CN110032542B (zh) * | 2019-04-19 | 2021-04-27 | 宁波三星医疗电气股份有限公司 | 一种cramfs文件系统管理方法、装置及电子设备 |
CN118113663A (zh) * | 2019-04-25 | 2024-05-31 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
CN110347647A (zh) * | 2019-07-08 | 2019-10-18 | 紫光云技术有限公司 | 一种简易高效的文件系统缓存实现方法 |
CN110413229A (zh) * | 2019-07-10 | 2019-11-05 | 华中科技大学 | 一种数据写入方法 |
CN111400249A (zh) * | 2020-03-06 | 2020-07-10 | 深圳市瑞驰信息技术有限公司 | 一种易于统计文件数量的文件存储系统及存储方法 |
CN113467698A (zh) * | 2020-03-30 | 2021-10-01 | 珠海全志科技股份有限公司 | 基于文件系统的写方法、装置、计算机设备和存储介质 |
CN113626380B (zh) * | 2020-05-06 | 2024-04-05 | 浙江宇视科技有限公司 | 一种目录结构调整方法、装置、设备及存储介质 |
CN112307033B (zh) * | 2020-11-23 | 2023-04-25 | 杭州迪普科技股份有限公司 | 数据包文件的重构方法、装置及设备 |
CN113297432B (zh) * | 2021-06-01 | 2023-11-07 | 阿里巴巴新加坡控股有限公司 | 用于分区拆分与合并的方法、处理器可读介质和系统 |
CN113742127B (zh) * | 2021-09-16 | 2023-07-07 | 重庆大学 | 一种裸闪存文件系统的故障恢复方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1805049A (zh) * | 2005-11-22 | 2006-07-19 | 武汉国光通信有限公司 | 一种嵌入式系统中非易失性存储器的数据存取方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8681546B2 (en) * | 2011-02-22 | 2014-03-25 | Apple Inc. | Variable impedance control for memory devices |
-
2014
- 2014-01-06 CN CN201410005081.4A patent/CN103744961B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1805049A (zh) * | 2005-11-22 | 2006-07-19 | 武汉国光通信有限公司 | 一种嵌入式系统中非易失性存储器的数据存取方法 |
Non-Patent Citations (1)
Title |
---|
SONOS非易失性存储器件研究进展;曾俊 等;《电子与封装》;20090831;第9卷(第8期);24-30 * |
Also Published As
Publication number | Publication date |
---|---|
CN103744961A (zh) | 2014-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103744961B (zh) | 用可重构的文件系统目录树提高非易失性存储寿命的方法 | |
CN107862064B (zh) | 一个基于nvm的高性能、可扩展的轻量级文件系统 | |
CN108319602B (zh) | 数据库管理方法及数据库系统 | |
US11301379B2 (en) | Access request processing method and apparatus, and computer device | |
KR100484147B1 (ko) | 플래시 메모리 관리 방법 | |
US8738846B2 (en) | File system-aware solid-state storage management system | |
EP2735978B1 (en) | Storage system and management method used for metadata of cluster file system | |
US11755427B2 (en) | Fast recovery and replication of key-value stores | |
US10152416B2 (en) | Buffer cache apparatus, journaling file system and journaling method for incorporating journaling features within non-volatile buffer cache | |
CN106951375B (zh) | 在存储系统中删除快照卷的方法及装置 | |
JP2011513853A (ja) | 連想ストレージのシステムと方法 | |
Lee et al. | On-demand snapshot: An efficient versioning file system for phase-change memory | |
KR20120090965A (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
KR20070003579A (ko) | 플래시형 매체에 트랜잭션 레코드를 저장하는 파일 시스템 | |
WO2013123855A1 (zh) | 存储器的读写控制方法及对应的存储器和服务器 | |
CN112131140B (zh) | 基于ssd的支持高效存储空间管理的键值分离存储方法 | |
Menon et al. | CaSSanDra: An SSD boosted key-value store | |
US11030092B2 (en) | Access request processing method and apparatus, and computer system | |
KR20210123236A (ko) | 키-값 장치들을 위한 키-값 저장소 아키텍처 | |
CN111414320B (zh) | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 | |
CN112035294A (zh) | 安全日志文件系统及其实现方法和介质 | |
KR20200060220A (ko) | 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법 | |
US11829291B2 (en) | Garbage collection of tree structure with page mappings | |
KR101456104B1 (ko) | 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치 | |
Olivier et al. | On benchmarking embedded linux flash file systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |