专利名称:一种Flash文件系统的快速启动方法及装置的制作方法
技术领域:
本发明涉及Flash存储系统领域,特别是涉及一种Flash文件系统的快速启动方法及装置。
背景技术:
Flash,也称闪存,是一种电子式可擦除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。自问世以来,Flash以其低功耗、非易失性和抗震动性等特点,得到广泛关注,并被大量地应用到嵌入式和移动式设备中。再者,由于工艺进步、成本下降,Flash在很多场合下大有取代传统磁盘的趋势。很多采用Flash构建高性能存储系统的方案以及文件系统设计和优化的方法相应被提出来。 较磁盘而言,Flash有以下几个显著的特点。第一,Flash由若干个块组成,每个块中又有若干个页;第二, Flash有读、写及擦除三种基本操作,并且在重写之前必须先擦除,另外写是以页为单位,擦除则是以块为单位;第三,Flash的寿命是由其块的最大可擦除次数所决定,擦除超过该次数的块将不可再用,所以需考虑到损耗平衡问题,即尽量将擦除操作均衡到各个块中。 由于Flash自身的这些特点,使得现有基于磁盘的文件系统不能很好地发挥Flash的优势。当前Flash文件系统解决方案一般有两种采用转换层将Flash模拟成块设备,再配用以传统文件系统;另一种方案是设计专用Flash文件系统。在以Flash为二级存储设备的系统中,通常使用专用Flash文件系统。本文中Flash文件系统无特殊声明,均指专用Flash文件系统。Flash文件系统通常采用日志结构文件系统,实现异地更新策略。系统启动时,须扫描Flash上的内容,在内存中建立元数据索引信息。随着Flash容量的增大,内容扫描过程成为系统启动性能的主要因素。由此,快照和日志两种解决方案被提出来,这两种策略的单独应用均能加速系统启动,但仍存在一些局限性。 如图1所示,Flash中有若干个块(block),每个块又由若干个页(page)组成;由于重写之前必须先擦除,且写是以页为单位,擦除是以块为单位,所以对Flash专用文件系统一般实现异地更新策略,即当有数据需要更新时先不擦除要更新的页而是另外分配一个空页写入数据,并将原来对应的页标志为失效(Invalid),即图1中页之前所记的I标志。
日志和快照是用于系统恢复的常用策略,这些数据不属于文件系统本身,只是有助于在系统启动时在内存中快速建立文件信息,称之为启动信息。其中快照是指将文件系统组织结构信息直接存放在存储设备上,当文件系统正常卸载,存在有效快照时,能够只通过1/0操作读取快照便可有效地加载文件系统。但是当系统由于意外断电,不存在有效快照时,系统重新启动时须扫描整个Flash空间来建立文件信息。已有的日志策略虽然能够有效解决意外断电问题,但日志跟踪记录系统中的所有更新信息,在任何情况下启动都需要先读取日志并经过运算处理才能建立文件系统的组织信息。因此对于系统正常卸载的情况,日志策略的性能稍逊于快照策略。 进一步的,在已有的策略中启动信息大多是集中存放在某些特定的块中,这会导致损耗不均衡。即使现有的有些算法可以将启动信息存放在Flash中的任意页上,但由于在同一个块中这些启动信息与所存的文件系统数据不具有一致的有效性,便容易因需要实现块擦除导致了多次无效的搬移。
发明内容
本发明所要解决的技术问题在于,提供一种Flash文件系统的快速启动方法及装
置,既能加快Flash文件系统的启动速度,又可以实现Flash的损耗平衡。 为达到上述目的,本发明的Flash文件系统的快速启动方法,包括 日志记录步骤,用于在所述Flash文件系统中以块为单位进行日志记录; 快照存放步骤,用于将快照数据存放在独立的块中,以使快照数据与文件系统数
据分离; 启动步骤,用于当所述文件系统中存在有效快照时,直接读取快照,在系统内存中构建文件系统的相关信息;当文件系统中不存在有效快照时,从各块中读取日志,在系统内存中构建所述文件系统的相关信息。 上述Flash文件系统的快速启动方法,其特征在于,所述日志记录步骤中,以块为单位进行日志记录是通过取一个块中的若干页存放所述文件系统数据,其余的若干页存放该块中本页的文件系统数据的更新信息。 上述Flash文件系统的快速启动方法,其特征在于,还包括一在对块进行写操作时,在系统内存中分配一块缓存的步骤,用于在对所述块进行写操作时,先将其日志记录缓存在内存中,当更新完后,再将缓存中的日志写回到该块中。 上述Flash文件系统的快速启动方法,其特征在于,所述以块为单位进行日志记录时,存放日志的页在该块中所在的比例由该块的大小决定。 上述Flash文件系统的快速启动方法,其特征在于,当块中有数据更新,需要擦除一个块时,该块中的日志记录将成为无效页面,不进行拷贝操作;该块中的有效页面搬移到新数据块后,将生成新的日志记录文件系统的更新信息。 上述Flash文件系统的快速启动方法,其特征在于,所述快照独立存放步骤中,快照数据所占的块是Flash中的任意位置。 上述Flash文件系统的快速启动方法,其特征在于,当所述文件系统正常卸载时,保存该文件系统的快照数据。 进一步的,本发明还提供了一种实现上述Flash文件系统的快速启动方法的启动装置,包括 日志记录模块,用于在所述Flash文件系统中以块为单位进行日志记录; 快照存放模块,用于将快照数据存放在独立的块中,以使快照数据与文件系统数
据分离; 启动模块,用于当所述文件系统中存在有效快照时,直接读取快照,在系统内存中构建文件系统的相关信息;当文件系统中不存在有效快照时,从各块中读取日志,在系统内存中构建所述文件系统的相关信息。 上述Flash文件系统的快速启动装置,其特征在于,所述日志记录模块中,以块为单位进行日志记录是通过取一个块中的若干页存放所述文件系统数据,其余的若干页存放该块中本页的文件系统数据的更新信息。 上述Flash文件系统的快速启动装置,其特征在于,将快照数据存放在独立的块中时,快照数据所占的块是Flash中的任意位置。 与现有技术相比,本发明的策略可在现有的多种Flash文件系统基础上得到应用,不仅能够快速启动Flash文件系统,且能有效实现损耗平衡。其相对于现有技术具有以下特点 1)在文件系统中保存快照,保证正常卸载后的快速启动; 2)在文件系统中应用日志机制,实现系统意外断电后的快速启动; 3)尽量使每个块均衡存储启动数据,以实现Flash的损耗平衡。
图1为Flash的基本存储模型; 图2为本发明Flash文件系统的快速启动方法的流程图; 图3为实现本发明的Flash文件系统的存储模型; 图4为本发明中以块为单位的日志记录方法示意图; 图5为本发明中快照的存放方法示意图; 图6为本发明Flash文件系统的快速启动装置的结构框图。
具体实施例方式
以下结合附图和具体实施例对本发明进行详细描述,以进一步了解本发明之目的、方案及功效,但不作为对本发明的限定。 本发明的Flash文件系统的快速启动方法结合了已有日志策略与快照策略的优
点,实现文件系统正常卸载或意外断电等情况下,均能有效加速系统的启动过程。 图2为本发明Flash文件系统的快速启动方法的流程图,参考图2,本发明的
Flash文件系统的快速启动方法,包括 步骤S10 :在Flash文件系统中以块为单位进行日志记录; 步骤S20 :将快照数据存放在独立的块中,以使快照数据与文件系统数据分离存放; 步骤S30 :当所述文件系统中存在有效快照时,直接读取快照,在系统内存中构建文件系统的相关信息;当文件系统中不存在有效快照时,从各块中读取日志,在系统内存中构建所述文件系统的相关信息。 在上述步骤S10中,记录文件系统的更新信息时,内存中分配一块缓存,缓存对块中文件系统的修改信息,更新完成后将缓存中的日志数据写回Flash中,以减少对Flash的更新操作。应用本发明的以块为单位的日志记录方式,当块中有数据更新,需要擦除一个块时,块中的日志记录将成为无效页面,不需要进行拷贝操作,块中的有效页面搬移到新数据块后,将生成新的日志记录文件系统的更新信息。 在上述步骤S20中,应用本发明的快速启动方法的文件系统正常卸载时,保存文件系统的快照数据。 图3为采用本发明的Flash文件系统的存储模型,以下结合附图详细说明本发明Flash文件系统中存储方式。参考图3,Flash 30包含若干个块,图中仅示出Block 301、Block 302、 Block 303,其中每一个块中,根据具体块的大小取其中的若干页用来存放文件系统数据FS Date,其余的若干页存放该块中文件更新信息即文件系统数据的日志Log。快照数据是独立存在Block 302中,当然本发明快照数据的存放范围并不设定在某些特定的块中,快照数据所占的块可以是Flash30中的任意位置。 本发明的Flash文件系统的快速启动策略采用的以块为单位的日志记录方法再如图4所示,一个块40中前面若干个页401用来存放文件系统数据FSDate,后续的几个页402存放401范围内文件数据的更新信息,402在块40中所占比例由块40的大小决定。本发明中,在记录文件系统的更新信息时,内存中分配一块缓存403,当对401进行写操作时,其日志记录缓存在内存中,当更新完401后,将缓存中的日志写回402中。所述的以块为单位的日志记录方法中,如需擦除一个块,日志记录402将都成无效页面,不需要进行拷贝操作。块中的有效页面搬移到新数据块后,生成新的日志记录文件的更新信息。该种以块为单位的日志记录方法,以实现Flash损耗平衡,且避免多余的数据移动。
图5进一步示意了本发明采用独立的快照存放方法。如图5所示,在Flash50中,将快照数据所占的块502与文件系统数据块501 、503等分离,快照数据Snapshot存放在独立的块502中,且该存放快照数据的块502可以是Flash50中的任意位置,以实现损耗平衡。 本发明进一步提供了 一种实现上述方法的装置,参考图6 ,本发明的Flash文件系统的快速启动装置60包括日志记录模块601,用于在Flash文件系统中以块为单位进行日志记录;快照存放模块602,用于将快照数据存放在独立的块中,以使快照数据与文件系统数据分离;启动模块603,用于当文件系统中存在有效快照时,直接读取快照,在系统内存中构建文件系统的相关信息;当文件系统中不存在有效快照时,从各块中读取日志,在系统内存中构建所述文件系统的相关信息。上述日志记录模块601,在记录文件系统的更新信息时,内存中分配一块缓存,缓存对块中文件系统的修改信息,更新完成后将缓存中的日志数据写回Flash中,以减少对Flash的更新操作。本发明的日志记录模块以块为单位的日志记录方式,当块中有数据更新,需要擦除一个块时,块中的日志记录将成为无效页面,不需要进行拷贝操作,块中的有效页面搬移到新数据块后,将生成新的日志记录文件系统的更新信息。引用本发明快速启动策略的文件系统在正常卸载时,上述快照存放模块602要保存文件系统的快照数据。 综上,本发明的Flash文件系统的快速启动策略,采用快照与日志结合的形式,降低Flash文件系统的启动代价,并采用合理的存放策略实现损耗平衡。其中,采用快照机制,保证文件系统正常卸载时的快速启动;采用日志机制,加速Flash文件系统意外断电后的启动过程;针对Flash特性合理地存放数据,实现损耗平衡。本发明实现了对Flash文件系统正常卸载与意外断电后启动过程的加速,并满足Flash文件系统的损耗平衡需求,对系统启动后的性能无明显影响。 虽然本发明已以一较佳实施例揭露如上,然其并非用以限定本发明,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
一种Flash文件系统的快速启动方法,其特征在于,包括日志记录步骤,用于在所述Flash文件系统中以块为单位进行日志记录;快照存放步骤,用于将快照数据存放在独立的块中,以使快照数据与文件系统数据分离;启动步骤,用于当所述文件系统中存在有效快照时,直接读取快照,在系统内存中构建文件系统的相关信息;当文件系统中不存在有效快照时,从各块中读取日志,在系统内存中构建所述文件系统的相关信息。
2. 根据权利要求1所述的Flash文件系统的快速启动方法,其特征在于,所述日志记录步骤中,以块为单位进行日志记录是通过取一个块中的若干页存放所述文件系统数据,其余的若干页存放该块中本页的文件系统数据的更新信息。
3. 根据权利要求2所述的Flash文件系统的快速启动方法,其特征在于,还包括一在对块进行写操作时,在系统内存中分配一块缓存的步骤,用于在对所述块进行写操作时,先将其日志记录缓存在内存中,当更新完后,再将缓存中的日志写回到该块中。
4. 根据权利要求2所述的Flash文件系统的快速启动方法,其特征在于,所述以块为单位进行日志记录时,存放日志的页在该块中所在的比例由该块的大小决定。
5. 根据权利要求2所述的Flash文件系统的快速启动方法,其特征在于,当块中有数据更新,需要擦除一个块时,该块中的日志记录将成为无效页面,不进行拷贝操作;该块中的有效页面搬移到新数据块后,将生成新的日志记录文件系统的更新信息。
6. 根据权利要求l所述的Flash文件系统的快速启动方法,其特征在于,所述快照独立存放步骤中,快照数据所占的块是Flash中的任意位置。
7. 根据权利要求l所述的Flash文件系统的快速启动方法,其特征在于,当所述文件系统正常卸载时,保存该文件系统的快照数据。
8. —种实现上述权利要求1 7中任一项所述的Flash文件系统的快速启动方法的启动装置,其特征在于,包括日志记录模块,用于在所述Flash文件系统中以块为单位进行日志记录;快照存放模块,用于将快照数据存放在独立的块中,以使快照数据与文件系统数据分离;启动模块,用于当所述文件系统中存在有效快照时,直接读取快照,在系统内存中构建文件系统的相关信息;当文件系统中不存在有效快照时,从各块中读取日志,在系统内存中构建所述文件系统的相关信息。
9. 根据权利要求8所述的Flash文件系统的快速启动装置,其特征在于,所述日志记录模块中,以块为单位进行日志记录是通过取一个块中的若干页存放所述文件系统数据,其余的若干页存放该块中本页的文件系统数据的更新信息。
10. 根据权利要求8所述的Flash文件系统的快速启动装置,其特征在于,将快照数据存放在独立的块中时,快照数据所占的块是Flash中的任意位置。
全文摘要
本发明公开了一种Flash文件系统的快速启动方法及装置,该方法包括日志记录步骤,用于在所述Flash文件系统中以块为单位进行日志记录;快照存放步骤,用于将快照数据存放在独立的块中,以使快照数据与文件系统数据分离;启动步骤,用于当所述文件系统中存在有效快照时,直接读取快照,在系统内存中构建文件系统的相关信息;当文件系统中不存在有效快照时,从各块中读取日志,在系统内存中构建所述文件系统的相关信息。
文档编号G06F17/30GK101789004SQ20101010052
公开日2010年7月28日 申请日期2010年1月22日 优先权日2010年1月22日
发明者刘姝, 程旭, 管雪涛, 苏永刚 申请人:北京北大众志微系统科技有限责任公司