CN108038024B - 一种面向NandFlash的可靠型静态规划文件系统 - Google Patents
一种面向NandFlash的可靠型静态规划文件系统 Download PDFInfo
- Publication number
- CN108038024B CN108038024B CN201810007062.3A CN201810007062A CN108038024B CN 108038024 B CN108038024 B CN 108038024B CN 201810007062 A CN201810007062 A CN 201810007062A CN 108038024 B CN108038024 B CN 108038024B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- cache
- backup
- cell
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
Abstract
一种面向NandFlash的可靠型静态规划文件系统,包括有标准文件操作接口模块、文件项目静态可配置模块、数据备份模块、错误可感知模块、读/写缓存支持模块;结构上划分为文件层和文件服务支持层,文件层和文件服务支持层在各自的语义层面完成其对外宣传的接口的功能,具体有,文件层面向使用本文件系统的用户,提供相应的文件操作功能,管理着文件在不同Section上的切换以及部分备份文件失效的繁殖策略;文件服务层包含文件细胞、文件缓存两部分,为文件层提供基于Flash和基于RAM的存储/获取服务;具有数据的正确、可靠性存储,便于嵌入式项目移植等特点。
Description
技术领域
本发明属于嵌入式操作系统的文件存储和文件管理技术领域,具体为一种面向NandFlash的可靠型静态规划文件系统。
背景技术
NandFlash具有大容量、低成本、擦写寿命长等优点,同时存在易用性差、易发生位反转等缺点。目前嵌入式软件行业内大多选择Nandflash来存储数据,嵌入式产品运行的可靠性是衡量设备性能的一个重要指标,为了保证存储数据的正确性,很多嵌入式产品中都使用文件系统存储和管理文件。而在实际运行过程中,很多文件系统容易发生用户数据无法被正确的读、写从而引发设备异常的致命问题,随着对不同文件系统的深入调查,发现有些文件系统还存在着不能充分利用设备存储区域、文件关键信息存储方式单一易丢失等一系列问题,这些潜在的风险将在产品的维护周期内随着时间的推移无征兆性的爆发,引发不可恢复的产品失效问题。
基于以上背景,需要一个能够全面管理NandFlash设备的、充分发挥其优点的文件系统,来替换已经无法满足目前应用需求的文件系统,至此,本文所描述的面向Flash的可靠型静态规划文件系统诞生了。
发明内容
为克服上述现有技术的不足,本发明的目的是提供一种面向NandFlash的可靠型静态规划文件系统,该文件系统具有如下的特点:
1)对外提供打开文件、获取文件长度、写文件、读文件、关闭文件等标准的文件操作以及文件系统创建接口;2)文件项目静态配置,表现为文件名、文件的相对地址、文件所使用块数目、数据备份次数、是否支持缓存等信息静态可配置;3)高可靠的数据存储;4)错误可感知;5)支持读/写缓存;6)数据断电恢复;7)文件版本回滚可配置;8)便于在其他嵌入式项目移植。
为实现上述目的,本发明采用的技术方案是:一种面向NandFlash的可靠型静态规划文件系统,其特征在于,包括有标准文件操作接口模块、文件项目静态可配置模块、数据备份模块、错误可感知模块、读/写缓存支持模块;
所述的标准文件接口,用于给用户提供标准的文件操作接口,其接口包括文件系统创建接口、文件写接口、文件读接口、文件打开接口、文件关闭接口;
所述的文件静态配置模块,用于配置文件数目、配置文件使用Flash块数目、配置文件备份次数、配置Cache开关和配置文件系统使用的总Flash块号;
所述的数据备份模块,采用数据双重备份机制,根据静态文件配置表中的备份次数配置信息进行文件分区内的多次备份,同时根据细胞繁殖策略,进行不同文件分区的多次备份;采用双重备份机制可以使在Flash设备部分失效的状态下,可在Flash设备上正常工作的区域获取正确有效的数据信息;
所述的错误可感知模块,用于感知Flash设备存储块失效和Flash设备存储数据错误,分别通过读取MetaInfo和CRC校验信息实现;
所述的支持读/写缓存模块,给用户文件数据提供功能可靠的读/写缓存支持,执行Flash的读/写操作前,判断是否存在缓存,如果有则只需操作缓存数据,只有在没有缓存时才操作Flash,避免频繁操作Flash。
所述的错误感知中的错误感知是本文件系统对Flash设备存储块失效和存储数据错误的感知能力,具体有:
① 在某块Flash失效的情况下,将引发用户对该区域的写操作失败,本文件系统标记该区域对应的原生信息块为坏块,后续针对此区域的操作将被检测出来并切换至下一个可用的文件分区,同样地,存储原生信息的块失效,也会以这样的方式被感知;
② 本文件系统对待返回给用户的数据进行CRC校验来感知数据的错误,CRC算法根据数据位及数据长度计算出CRC值,与Flash上存储的CRC值比较,以此判断读出数据的正确性。
所述的文件系统创建接口用于,检查静态文件分配表正确性,获得静态文件配置表中文件分配信息,在静态文件配置表中定义文件分区的个数和每个分区中文件个数;遍历所有文件分区和分区内所有文件,获得每个文件的MetaInfo、最大文件版本号对应的CurFileSectionNO、BakFileSectionNO信息,这些信息将构成FRT的元素。
所述的文件打开接口用于,遍历文件列表中文件名以查找待操作的文件,待操作的文件不存在则返回文件不存在的错误;若当前操作模式为文件写模式,则备份和更新当前FRT,备份FRT的目的是写失败时能将文件数据恢复至最后一次正常操作的版本,避免出现用户获取不到数据的情形;然后将文件版本、备份次数、文件使用块数和文件起始地址等信息绑定到当前文件细胞,以赋予文件细胞操作Nandflash的能力;最终生成并返回文件句柄,本文件系统约定,读/写、关闭等接口的第一个入参必须是有效的文件句柄。
所述的文件读接口用于,文件存在缓存则执行读缓存操作,读缓存成功则直接给用户返回数据;读缓存失败才执行文件细胞的读操作,然后拷贝数据至缓存并给用户返回数据;不存在缓存则执行文件细胞的读操作;文件细胞读失败且存在BakFileSectionNo则切换当前FRT到备份文件区域,并将BakFileSectionNo绑定到当前文件细胞,执行文件细胞读操作,文件细胞的读逻辑中,尝试N次的读操作,直至读成功或者达到尝试次数为止,期间的读失败次数将作为细胞繁殖的必要条件被记录下来。
所述的文件写接口用于:有缓存则写数据到缓存,接着执行文件细胞的写操作,文件细胞写数据失败则返回错误码给文件层,文件层对文件的写操作失败进行处理;写失败的处理逻辑是:无缓存则设置文件的状态为错误状态并报错,有缓存则以缓存的数据为源数据,切换文件分区到下一个文件分区执行文件细胞写操作,细胞写失败则继续切换文件分区,直到待切换的文件分区是当前文件分区为止。
所述的文件关闭接口依据文件状态和文件的操作模式做相应的处理,若文件状态是错误态,并且文件的操作模式是写操作则恢复FRT至文件打开操作前的状态,关闭公共资源;若文件状态正常则直接调用文件细胞的关闭方法,关闭公共资源,公共资源关闭的处理逻辑是:存在Cache则清除Cache中的数据,反绑定文件细胞,设置文件状态为关闭状态。
所述的BakFileSectionNo 默认为-1,BakFileSectionNo 大于0表示当前版本的文件存在备份存储区域。
所述的细胞写失败的判断依据是指定文件在其存储区域的写失败次数和备份次数相等。
本发明的有益效果是:
1)为Nandflash数据的可靠存储提供了切实可行的方案。
2)针对重要的文件,可通过修改文件配置表中的备份次数的方式,以达成对该文件的备份写,最大可能的确保数据的正确性。
3)通过SCHAFS所辖Nandflash起始块号、使用NandFlash总块号、文件数目、文件备份次数静态规划,最大化且合理的利用了flash的资源,SCHAFS对外提供标准的文件访问接口,也便于其他嵌入式项目的移植。
所述的高可靠的数据存储,表现为文件原生信息和文件数据的分布式存储和数据的双重备份机制,具体有:
① 文件原生信息包括标识Flash设备好坏状态的魔术字,实际写入的数据长度,以及文件版本。本文件系统约定,用户的写操作必须先写文件数据,然后写文件原生信息,而完成写文件原生信息的动作则标识着本次文件的写操作结束,文件原生信息单独存储,也保证了文件关键信息的高可靠性;
② 依据静态文件配置表中的数据备份次数信息,达成同一个文件在相同文件分区内的多次备份,依据细胞繁殖策略,达成同一个文件在不同文件分区的多次备份;数据的双重备份机制确保了本文件系统在Flash部分存储区域失效和数据错误的情况下,依然可以获取到正确有效的数据信息。
本文件系统结构上划分为文件层和文件服务支持层,文件层和文件服务支持层在各自的语义层面完成其对外宣传的接口的功能。具体有:
File Layer:文件层,其直接面向使用本文件系统的用户,提供相应的文件操作功能,包括文件打开、读、写、续读、续写、关闭、获取长度等一系列接口,同时管理着文件操作在不同Section上的切换以及部分文件备份失效后的繁殖策略。
File Serving Layer:文件服务层包含File Cell、Cache两部分,该层为文件层提供Flash操作服务和读/写缓存服务;File Cell是文件细胞,包括细胞绑定、unbind、细胞繁殖的实现;Cache是读/写缓存,基于文件配置表中的配置项,对于配置Cache的文件,提供有读/写缓存的操作策略,能够有效的减少对Flash设备的操作次数,并提高用户操作的响应速度。
附图说明
图1为本发明文件静态规划原理框图。
图2为本发明文件备份区原理框图。
图3为本发明文件系统创建接口的流程图。
图4为本发明文件打开接口的流程图。
图5为本发明文件读接口的流程图。
图6为本发明文件写接口的流程图。
图7为本发明文件关闭接口的流程图。
图8为本发明SCHAFS层次结构图。
具体实施方式
下面结合附图对本发明作进一步详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
一种面向NandFlash的可靠型静态规划文件系统,包括有标准文件操作接口、文件项目静态配置、数据备份、错误可感知、读/写缓存支持功能;
所述的标准文件接口,用于给用户提供标准的文件操作接口,其接口包括文件系统创建接口、文件写接口、文件读接口、文件打开接口、文件关闭接口;
所述的文件静态配置,用于配置文件数目、配置文件使用Flash块数目、配置文件备份次数、配置Cache开关和配置文件系统使用的总Flash块号;
所述的数据备份,采用数据双重备份机制,根据静态文件配置表中的备份次数配置信息进行文件分区内的多次备份,同时根据细胞繁殖策略,进行不同文件分区的多次备份;采用双重备份机制可以使在Flash设备部分失效的状态下,可在Flash设备上正常工作的区域获取正确有效的数据信息;
所述的错误可感知,用于感知Flash设备存储块失效和Flash设备存储数据错误,分别通过读取MetaInfo和CRC校验信息实现;
所述的读/写缓存支持,表现在给用户文件数据提供功能可靠的读/写缓存支持,执行Flash的读/写操作前,判断是否存在缓存,如果有则只需操作缓存数据,只有在没有缓存时才操作Flash,避免频繁操作Flash。
文件项目静态配置
文件系统管理的所有文件由文件项目静态配置中的配置表定义,配置表中的每一个表项定义了文件ID、文件名、文件相对地址、文件使用块数目、文件备份次数和文件数据是否可缓存,这些静态配置项无法在系统运行期修改,为了弥补文件在运行期无法动态创建的不足,在静态配置表中预留了若干空文件,以便于应用者的使用;文件系统创建时,会依据此表来计算文件分区大小和总的分区数目,从而完成对整个Flash设备的分区划分,便于File层实现对文件分区的管理。
数据备份
数据备份功能的实现依赖于静态文件结构和文件细胞繁殖策略,以下是对这两个概念的阐述。
参见图1,图1显示了文件静态规划结构,图1说明了文件在NandFlash内存储方式,对其描述如下:
Redundance:文件原生信息和用户数据构成一个文件备份区,单个文件备份作为繁殖的最小单位存在。
File:一个文件被多次备份,单个文件内部各备份区内数据相同,并列存在。
Section:多个文件构成一个文件分区,整个Flash包含多个文件分区。
文件细胞繁殖策略以File层为控制者,文件的单次备份数据为最小的繁殖单位,文件细胞为操作载体,文件在读/写失败时,首先判断是否符合繁殖条件(繁殖条件:对于写操作带缓存的文件能够正确写入当前版本文件的正确数据;对于读操作能读到当前版本文件的正确数据。),其次根据繁殖处理方式寻找到下一个可用的文件分区,根据识别到的错误次数,进行文件备份的写备份。基于文件细胞繁殖策略,确保了同一个版本文件的多次备份,以应对文件只存储1次时易损坏的问题。
数据备份采用的是数据双重备份机制,根据静态文件配置表中的备份次数配置信息进行文件分区内的多次备份,同时根据细胞繁殖策略,进行不同文件分区的多次备份。双重备份机制在图1中的表现方式为Redundance0到Redundance N的多次备份和Section 0到Section N的多次备份,其中每个文件内的多个Redundance数据一致,不同Section内的数据也一致。
采用双重备份机制可使在NandFlash设备部分数据位翻转的状态下,用户也能够在Flash设备上正常工作的区域获取正确有效的数据信息。仅在当前文件在当前Section下的所有备份区存储位置均操作错误,其他Secition下对应的存储位置也操作失败,则宣告该文件读/写操作失败
错误可感知
参见图2,图2中文件备份区内部结构图中显示文件备份区包含了多个Block空间,其中Block 0存放的是该备份区的原生信息(MetaInfo),该原生信息包括了魔术字、数据长度和文件版本;在每个Page的前两个字节存放的是CRC校验信息。错误感知表现在本文件系统对Flash设备存储块失效和存储数据错误的感知能力,具体有:
① 在某块Flash失效的情况下,将引发用户对该区域的写操作失败,本文件系统标记该区域对应的原生信息块为坏块,后续针对此区域的操作将被检测出来并切换至下一个可用的文件分区,同样地,存储原生信息的块失效,也会以这样的方式被感知;
② 本文件系统对待返回给用户的数据进行CRC校验来感知数据的错误,CRC算法根据数据位及数据长度计算出CRC值,与Flash上存储的CRC值比较,以此判断读出数据的正确性。
支持读/写缓存
支持读/写缓存为用户文件数据提供了功能可靠的读/写缓存支持,在读/写静态文件的配置表中定义了缓存的文件时,可极大地提高获取文件数据的速度,同时避免了对Flash设备过多操作,从而延长Flash设备寿命。考虑到系统资源的有限性,无法为所有的用户文件添加缓存支持,这里只对数据量小、且操作频繁的文件提供带缓存配置的功能。
数据断电恢复
SCHAFS在进行写操作时若出现断电情况,重新上电后SCHAFS将文件版本回滚到上一个文件版本,确保SCHAFS能够正常工作。具体描述如下:
SCHAFS创建时遍历Flash设备形成一个FRT,SCHAFS运行期,用户操作不但改变Flash设备的状态,还将更新FRT(更新用户最近一次所操作的数据版本以及数据所处的文件分区位置)。用户重启系统后, SCHAFS会获得断电前用户操作的文件信息,更新操作信息到FRT。用户能在系统启动后的第一时间恢复断电前进行的操作,有效地保证了用户数据的正确性。
文件版本回滚可配置
在某些特定场合下,用户对数据的一致性要求很高,因此,读/写异常时,宁可抛出操作错误供调用者决策而不是简单的恢复前版本的数据;SCHAFS提供文件版本回滚可配置功能,用户可根据数据一致性要求,决定是否允许文件版本在发生写操作错误时回滚。
标准文件接口
标准文件接口包括:文件系统创建接口、文件打开接口、文件写接口、文件读接口、文件关闭接口,下面分别对各个接口进行介绍:
1)文件系统创建接口
参见图3,首先检查静态文件分配表正确性,获得静态文件配置表中文件分配信息,在静态文件配置表中定义文件分区的个数和每个分区中文件个数。其次遍历所有文件分区和分区内所有文件,获得当前文件的MetaInfo、最大文件版本号对应的CurFileSectionNO、BakFileSectionNO等信息,这些信息将构成FRT(文件运行时状态表)的元素。其中,获取当前文件MetaInfo是由文件层绑定当前文件的文件细胞,执行文件细胞的获取MetaInfo接口,以及解除文件细胞的绑定等操作达成的。
2)文件打开接口
参见图4,遍历文件列表中文件名以查找待操作的文件,待操作的文件不存在则返回文件不存在的错误;若当前操作模式为文件写模式,则备份和更新当前FRT(更新CurFileSectionNO、BakFileSectionNO、FileVersion),备份FRT的目的是写失败时能将文件数据恢复至最后一次正常操作的版本(本文件系统以文件版本号来维护同一个文件因写入的数据的不同而造成的差异,对于文件写操作,文件版本在前版本的基础上自动加1,故有当前待写入的文件版本和前一个文件版本一说),避免出现用户获取不到数据的情形。然后将文件版本、备份次数、文件使用块数和文件起始地址等信息绑定到当前文件细胞,以赋予文件细胞操作Nandflash的能力。最终生成并返回文件句柄,本文件系统约定,读/写、关闭等接口的第一个入参必须是有效的文件句柄。
3)文件读接口
参见图5,文件存在缓存则执行读缓存操作,读缓存成功则直接给用户返回数据;读缓存失败才执行文件细胞的读操作,然后拷贝数据至缓存(以避免频繁操作Flash)并给用户返回数据;不存在缓存则执行文件细胞的读操作。文件细胞读失败且存在BakFileSectionNo(BakFileSectionNo默认为-1,BakFileSectionNo大于0表示当前版本的文件存在备份存储区域)则切换当前FRT到备份文件区域,并将BakFileSectionNo绑定到当前文件细胞,执行文件细胞读操作,文件细胞的读逻辑中,尝试N次的读操作(N 等于备份次数),直至读成功或者达到尝试次数为止,期间的读失败次数将作为细胞繁殖的必要条件被记录下来。
4)文件写接口
参见图6,有缓存则写数据到缓存,接着执行文件细胞的写操作,文件细胞写数据失败则返回错误码给文件层,文件层对文件的写操作失败进行处理。写失败的处理逻辑是:无缓存则设置文件的状态为错误状态并报错,有缓存则以缓存的数据为源数据,切换文件分区到下一个文件分区执行文件细胞写操作,细胞写失败则继续切换文件分区(细胞写失败的判断依据是指定文件在其存储区域的写失败次数和备份次数相等),直到待切换的文件分区是当前文件分区为止。
5)文件关闭接口
参见图7,文件关闭接口依据文件状态和文件的操作模式做相应的处理,文件状态是错误态,并且文件的操作模式是写操作则恢复FRT至文件打开操作前的状态,关闭公共资源;文件状态正常则直接调用文件细胞的关闭方法,关闭公共资源,公共资源关闭的处理逻辑是:存在Cache则清除Cache中的数据,反绑定文件细胞,设置文件状态为关闭状态。
SCHAFS层次结构
参见图8,SCHAFS有File Layer和File Serving Layer两层结构,具体为:
File Layer:文件层面向使用本系统的用户,提供文件操作相关接口,管理文件在不同存储区域的切换以及文件的部分存储区域失效时的繁殖策略;
File Serving Layer:文件服务支持层为文件层提供基于Flash和基于RAM的存储/获取服务由文件细胞(File Cell)和数据缓存(Cache)构成。依据文件配置表中的配置项,针对配置有Cache的文件,提供读/写缓存的策略,尽可能的减少操作Flash设备的次数,提高用户操作的响应速度。
用户层是用户使用本文件系统读写数据的逻辑,不假设用户如何使用本文件系统的接口,故不需要额外说明。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
Claims (9)
1.一种面向NandFlash的可靠型静态规划文件系统,其特征在于,包括有标准文件操作接口模块、文件静态配置模块、数据备份模块、错误可感知模块、读/写缓存支持模块;
所述的标准文件操作接口模块,用于给用户提供标准的文件操作接口,其接口包括文件系统创建接口、文件写接口、文件读接口、文件打开接口、文件关闭接口;
所述的文件静态配置模块,用于配置文件数目、配置文件使用Flash块数目、配置文件备份次数、配置Cache开关和配置文件系统使用的总Flash块号;
所述的数据备份模块,采用数据双重备份机制,根据静态文件配置表中的备份次数配置信息进行文件分区内的多次备份,同时根据细胞繁殖策略,进行不同文件分区的多次备份;采用双重备份机制可以使在Flash设备部分失效的状态下,可在Flash设备上正常工作的区域获取正确有效的数据信息;所述的细胞繁殖策略以File层为控制者,文件的单次备份数据为最小的繁殖单位,文件细胞为操作载体,文件在读/写失败时,首先判断是否符合繁殖条件,其次根据繁殖处理方式寻找到下一个可用的文件分区,根据识别到的错误次数,进行文件备份的写备份,基于文件细胞繁殖策略,确保了同一个版本文件的多次备份,以应对文件只存储1次时易损坏的问题;
所述的错误可感知模块,用于感知Flash设备存储块失效和Flash设备存储数据错误,分别通过读取MetaInfo和CRC校验信息实现;MetaInfo中文意为原生信息,原生信息包括了魔术字、数据长度和文件版本;
所述的读/写缓存支持模块,给用户文件数据提供功能可靠的读/写缓存支持,执行Flash的读/写操作前,判断是否存在缓存,如果有则只需操作缓存数据,只有在没有缓存时才操作Flash,避免频繁操作Flash。
2.根据权利要求1所述的一种面向NandFlash的可靠型静态规划文件系统,其特征在于,所述的错误可感知模块中的错误可感知是本文件系统对Flash设备存储块失效和存储数据错误的感知能力,具体有:
①在某块Flash失效的情况下,将引发用户对该区域的写操作失败,本文件系统标记该区域对应的原生信息块为坏块,后续针对此区域的操作将被检测出来并切换至下一个可用的文件分区,同样地,存储原生信息的块失效,也会以这样的方式被感知;
②本文件系统对待返回给用户的数据进行CRC校验来感知数据的错误,CRC算法根据数据位及数据长度计算出CRC值,与Flash上存储的CRC值比较,以此判断读出数据的正确性。
3.根据权利要求1所述的一种面向NandFlash的可靠型静态规划文件系统,其特征在于,所述的文件系统创建接口用于,检查静态文件分配表正确性,获得静态文件配置表中文件分配信息,在静态文件配置表中定义文件分区的个数和每个分区中文件个数;遍历所有文件分区和分区内所有文件,获得每个文件的MetaInfo、最大文件版本号对应的CurFileSectionNO、BakFileSectionNO信息,这些信息将构成FRT的元素。
4.根据权利要求1所述的一种面向NandFlash的可靠型静态规划文件系统,其特征在于,所述的文件打开接口用于,遍历文件列表中文件名以查找待操作的文件,待操作的文件不存在则返回文件不存在的错误;若当前操作模式为文件写模式,则备份和更新当前FRT,备份FRT的目的是写失败时能将文件数据恢复至最后一次正常操作的版本,避免出现用户获取不到数据的情形;然后将文件版本、备份次数、文件使用块数和文件起始地址等信息绑定到当前文件细胞,以赋予文件细胞操作Nandflash的能力;最终生成并返回文件句柄,本文件系统约定,读/写、关闭等接口的第一个入参必须是有效的文件句柄。
5.根据权利要求1所述的一种面向NandFlash的可靠型静态规划文件系统,其特征在于,所述的文件读接口用于,文件存在缓存则执行读缓存操作,读缓存成功则直接给用户返回数据;读缓存失败才执行文件细胞的读操作,然后拷贝数据至缓存并给用户返回数据;不存在缓存则执行文件细胞的读操作;文件细胞读失败且存在BakFileSectionNo则切换当前FRT到备份文件区域,并将BakFileSectionNo绑定到当前文件细胞,执行文件细胞读操作,文件细胞的读逻辑中,尝试N次的读操作,直至读成功或者达到尝试次数为止,期间的读失败次数将作为细胞繁殖的必要条件被记录下来。
6.根据权利要求1所述的一种面向NandFlash的可靠型静态规划文件系统,其特征在于,所述的文件写接口用于:有缓存则写数据到缓存,接着执行文件细胞的写操作,文件细胞写数据失败则返回错误码给文件层,文件层对文件的写操作失败进行处理;写失败的处理逻辑是:无缓存则设置文件的状态为错误状态并报错,有缓存则以缓存的数据为源数据,切换文件分区到下一个文件分区执行文件细胞写操作,细胞写失败则继续切换文件分区,直到待切换的文件分区是当前文件分区为止。
7.根据权利要求1所述的一种面向NandFlash的可靠型静态规划文件系统,其特征在于,所述的文件关闭接口依据文件状态和文件的操作模式做相应的处理,若文件状态是错误态,并且文件的操作模式是写操作则恢复FRT至文件打开操作前的状态,关闭公共资源;若文件状态正常则直接调用文件细胞的关闭方法,关闭公共资源,公共资源关闭的处理逻辑是:存在Cache则清除Cache中的数据,反绑定文件细胞,设置文件状态为关闭状态。
8.根据权利要求5所述的一种面向NandFlash的可靠型静态规划文件系统,其特征在于,所述的BakFileSectionNo 默认为-1,BakFileSectionNo 大于0表示当前版本的文件存在备份存储区域;所述的N 等于备份次数。
9.根据权利要求6所述的一种面向NandFlash的可靠型静态规划文件系统,其特征在于,细胞写失败的判断依据是指定文件在其存储区域的写失败次数和备份次数相等。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810007062.3A CN108038024B (zh) | 2018-01-04 | 2018-01-04 | 一种面向NandFlash的可靠型静态规划文件系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810007062.3A CN108038024B (zh) | 2018-01-04 | 2018-01-04 | 一种面向NandFlash的可靠型静态规划文件系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108038024A CN108038024A (zh) | 2018-05-15 |
CN108038024B true CN108038024B (zh) | 2021-03-02 |
Family
ID=62098759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810007062.3A Active CN108038024B (zh) | 2018-01-04 | 2018-01-04 | 一种面向NandFlash的可靠型静态规划文件系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108038024B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111008389B (zh) * | 2019-12-05 | 2020-10-20 | 成都星时代宇航科技有限公司 | 基于卫星中文件系统的数据处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441634A (zh) * | 2007-11-19 | 2009-05-27 | 凤凰微电子(中国)有限公司 | 适用于智能卡应用环境的嵌入式文件系统 |
CN102053879A (zh) * | 2010-12-16 | 2011-05-11 | 国网电力科学研究院 | 基于falsh的自恢复实时文件系统 |
CN102136274A (zh) * | 2009-12-30 | 2011-07-27 | 爱国者电子科技有限公司 | 一种具有两种存储介质的移动硬盘 |
CN102955720A (zh) * | 2011-08-25 | 2013-03-06 | 北京中科智网科技有限公司 | 一种提高ext文件系统稳定性的方法 |
CN103577574A (zh) * | 2013-11-05 | 2014-02-12 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于nand flash的高可靠线性文件系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9122582B2 (en) * | 2012-06-12 | 2015-09-01 | International Business Machines Corporation | File system for maintaining data versions in solid state memory |
-
2018
- 2018-01-04 CN CN201810007062.3A patent/CN108038024B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441634A (zh) * | 2007-11-19 | 2009-05-27 | 凤凰微电子(中国)有限公司 | 适用于智能卡应用环境的嵌入式文件系统 |
CN102136274A (zh) * | 2009-12-30 | 2011-07-27 | 爱国者电子科技有限公司 | 一种具有两种存储介质的移动硬盘 |
CN102053879A (zh) * | 2010-12-16 | 2011-05-11 | 国网电力科学研究院 | 基于falsh的自恢复实时文件系统 |
CN102955720A (zh) * | 2011-08-25 | 2013-03-06 | 北京中科智网科技有限公司 | 一种提高ext文件系统稳定性的方法 |
CN103577574A (zh) * | 2013-11-05 | 2014-02-12 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于nand flash的高可靠线性文件系统 |
Non-Patent Citations (2)
Title |
---|
基于Vxworks的Flash文件系统;乔峰等;《北京工业大学学报》;20050930;第1-6页 * |
适宜于嵌入式多媒体应用的Flash文件系统;董明等;《电子技术应用》;20021231;第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108038024A (zh) | 2018-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11068391B2 (en) | Mapping table updating method for data storage device | |
US10101930B2 (en) | System and method for supporting atomic writes in a flash translation layer | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
KR100843543B1 (ko) | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 | |
US9348760B2 (en) | System and method for efficient flash translation layer | |
US9053075B2 (en) | Storage control device and method for controlling storages | |
JP3662510B2 (ja) | フラッシュメモリのための再写像制御方法及びこれによるフラッシュメモリの構造 | |
JP5702348B2 (ja) | 不揮発性メモリを有するシステムの非正常シャットダウンの取り扱い | |
US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
US10061655B2 (en) | Volatile cache reconstruction after power failure | |
US20120254636A1 (en) | Control apparatus and control method | |
US8448023B2 (en) | Approach for data integrity in an embedded device environment | |
US20150378642A1 (en) | File system back-up for multiple storage medium device | |
KR101475483B1 (ko) | 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법 | |
CN103577574A (zh) | 一种基于nand flash的高可靠线性文件系统 | |
CN112631950B (zh) | 一种l2p表的保存方法、系统、设备以及介质 | |
US10289321B1 (en) | Bad block table recovery in a solid state drives | |
KR950033872A (ko) | 반도체 디스크장치 | |
US11841801B2 (en) | Metadata management in non-volatile memory devices using in-memory journal | |
US11809295B2 (en) | Node mode adjustment method for when storage cluster BBU fails and related component | |
CN115328407A (zh) | 一种缓存盘更换方法、装置、设备、存储介质 | |
CN108038024B (zh) | 一种面向NandFlash的可靠型静态规划文件系统 | |
TWI737189B (zh) | 易於從固態儲存裝置之故障中還原的方法、電腦系統,及固態儲存裝置 | |
CN111124294B (zh) | 一种扇区映射信息的管理方法及装置、存储介质和设备 | |
KR20140121013A (ko) | 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치 |
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 |