一种基于Linux的flash文件系统存储策略

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:piscisboy
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着嵌入式系统的广泛应用,嵌入式系统中的数据存储和数据管理显得日益重要。本文主要介绍flash存储器的存储特点,Linux文件系统的两类存储策略:块式存储和线性存储,并在此基础上提出了一种改进的简单日志文件系统的存储策略。
  关键词:Flash;Linux;文件系统存储策略
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)17-31448-02
  A Method on Flash File Storage System Base on Linux
  SUN Jing
  (College of Computer Science, Jilin Normal University, Siping 136000, China)
  Abstract:With extensive application of embedded system, data storage and data manage become very important on embedded system. This paper describes the characteristic of flash storage and two kinds of storage method on Linux file system: block storage and chain storage. And put forward a new storage method based on Linux file system, named simple log file system.
  Key words:Flash; Linux; File system storage method
  
  1 引言
  
  在当前数字信息技术和网络技术高速发展的后PC(Post-PC)时代,嵌入式系统已经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文件艺术、娱乐业以及人们的日常生活等方方面面中。随着嵌入式系统越来越广泛的应用,嵌入式系统中的数据存储和数据管理已经成为一个重要的课题摆在设计人员面前。
  
  2 Flash的特点
  
  Flash存储器作为一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据不丢失等一系列优点。目前已经逐步取代其它半导体存储元件,成为嵌入式系统中主要数据和程序载体,大部分的嵌入式系统都把文件系统建立在Flash存储器上。
  Flash存储器在读取方面与普通的SRAM存储器类似,一般可以实现完全随机的读取。Flash存储器最大的不同在于写操作方面。Flash存储器的写操作需要经过“擦除—写入”两个操作过程。
  
  3 Linux文件系统的存储策略
  
  Linux文件系统的存储策略主要有两大类:块式存储和线性存储策略。
  3.1 块式存储策略
  该文件系统往往使用超级块来记录文件系统的结构和参数信息,该信息用于文件系统的管理和维护。当虚拟文件系统访问某一个具体的文件系统时,首先操作系统要获取该文件系统的超级块,解析出必要的文件系统信息。同时当文件系统写文件时,也经常要修改超级块,已确定指定的存储空间是否为空。因此,块式存储策略主要采用以块为单位进行存储。基本上采用改写方式对Flash存储器进行操作,即将文件所在的块的全部内容读出到RAM,在RAM中改写之后,将此信息顺序写入到Flash存储器中原先的块中。采用这种方式的文件系统主要是一些原先存储在磁盘上的文件系统,如ext2等。
  3.2 线性存储策略
  该存储策略中,数据不是以块为单位进行存储,而是按线性方式存储在Flash存储器上。即第一个文件创建之前,必须进行初使化,将所有分配给文件系统的Flash空间探险。当创建第一个文件时,起始位置从文件系统的起始地址开始,写入文件创建信息、文件数据,得到新的空闲地址空间的起始地址。然后,当写入其它文件时,从新的空闲地址空间的起始地址开始顺序写入到Flash存储器中,文件在整个Flash存储空间内的存储顺序是连续的,其情况如图1所示。
  
  4 简单日志文件系统
  
  综合上述两种存储策略的优点,提出了一种新的文件存储策略。此存储策略分为两层:下层为块存储层,上层为文件存储层。
  图1 线性存储空间分布
  4.1 块存储层
  主要是对块进行管理,将分配给文件系统的Flash存储器空间看作一个循环队列,每一个存储块是队列中的一个节点。文件系统对队列编号,队列中第一块的块号是0,依次类推,物理地址空间最大的块号是系统中块的总数减一。最开始时,此队列中的每一个节点都是空闲节点。当文件存储层申请新的空闲块时,从Flash存储空间的开始处顺序的分配块。当Flash存储空间只剩下最后一个空闲块时,执行垃圾清理程序。假设共有n个脏块(即此块上不再有未删除的文件),将这n个脏块清空,使之成为空闲块。然后,将从最后一个空闲块开始的n个块上的数据移到这些空闲块上,并将这n个块清空,使之成为空闲空间。这样,循环往复地使用块。整个Flash存储器的可能出现的使用情况如图2所示。如果Flash存储器未进行过垃圾清理,则基本上是图2中(1)的状态。如果进行过垃圾清理,则由于最后一个空闲块出现的位置不同,以及删除的块数不同,垃圾清理后Flash的使用情况也会出现不同,但总体上来说只有图2中的四种情况。
  图2 Flash存储器空间使用情况
  图2中(1)(2)(3)中空闲块在物理上和逻辑上都是连续的,而在(4)中只是在逻辑上是连续的。正因为空闲块在逻辑上是连续的,而且每一次分配空闲块,都是从逻辑块首进行分配(在(1)(2)(3)中是物理上第一个空闲块,在(4)中物理上第二个连续空闲块中的物理上的第一个空闲块)。垃圾清理后,又会从最后一个空闲块的逻辑上的下一块开始按顺序进行清理,所以基本上可以保证每个被探险的次数基本相等。所以能够保证整个文件系统的负载平衡。
  4.2 文件存储层
  基本思想 在简单日志文件系统中,文件在Flash存储器上是以一个或多个节点的形式存在的。文件的建立、数据写入、数据修改、文件删除等都是以向Flash存储器上写入节点的方式完成的,通过写入节点完成日志功能。文件存储层中以节点的形式在Flash存储器上存储文件数据。
  在Flash存储器存储一个文件时,可能有多个节点存储数据,每个节点的总长度最大为一个块(64K或32K)的大小。节点的结构如图3所示。
  图3 节点结构
  节点结构组成如下:
  信息段:魔数,文件号,父节点号,建立时间,最后存取时间,最后修改时间,文件拥有者标识号,文件拥有者所在组的标识号,数据段大小,名字大小,校验和,替换数据大小,写入文件的逻辑位置,写入顺序等信息(其中魔数,父节点号,替换数据大小,写入文件的逻辑位置,版本号等作息是本文件系统特有的,其余信息是每个Linux操作系统下的文件系统所必须具有的)。
  名字段:文件名,其大小可以为0。
  数据段:此次写入的数据,大小可以为0。
  节点分为四种类型:
  (1)头节点:即建立文件时建立的节点,此节点无数据,ver字段为1。
  (2)无数据节点:关节点、目录文件节点、设备文件节点、删除节点(删除一个文件时写入的节点)。
  (3)普通文件节点L写入数据时建立的节点,此节点中有ver字段,标志数据写入的先后顺序。
  (4)特殊文件节点:目录文件节点、设备文件节点等。
  对于文件的存储,文件存储层采用日志存储策略。由于Flash存储器的读写特殊性,因此改写方式浪费时间,影响负载平衡,且极易出错。因此为了适应这种读写特殊性,所以文件存储层采用不同于磁盘的日志存储策略。即每次存储数据时,并不直接修改已写入的数据,而是写入新的节点。文件以节点为单位进行存储,节点不能越块存储。当一次写入数据较多,一个块的空间不够时,则将数据分配给多个节点存储。一个文件的数据尽可能写到同一个块内,节点中有ver字段,以表示存储的先后顺序,如果是修改文件,节点中有记录写入数据替换字节数的信息,和写入数据在文件中的逻辑位置的信息。删除文件时并不直接擦除文件所在的块,而是向Flash存储器中写入一个节点来表示此文件已被删除。
  
  5 结束语
  
  该文件系统存储策略在测试平台MCF5272上实现,测试较好。为进一步研究嵌入式系统的文件系统方面有一定的借鉴作用。
  
  参考文献:
  [1]陈峰, 尹寒. 嵌入式系统中的Flash存储管理[J]. 单片机与嵌入式系统应用,2003,(2).
  [2]吴雨俊. 嵌入式系统中的线性Flash文件系统设计[J]. 单片机与嵌入式系统应用, 2003,(10).
  [3]黄珊. 军用嵌入式系统中的Flash文件系统设计[J]. 现代电子技术, 2003,(16).
  [4]张红兵, 魏波. 大容量内存文件系统设计及μC/OS下的实现[J]. 单片机与嵌入式系统应用, 2004,(3).
  [5]金明亮, 游大海. 基于CC/CCS的Flash文件系统设计[J]. 单片机与嵌入式系统应用, 2005,(1).
  [6]付助荣, 王建华. 基于虚拟扇区的Flash存储管理技术[J]. 单片机与嵌入式系统应用, 2004,(6).
  [7]陈文华, 郭培源, 陈岩. S3C44B0X嵌入式系统中Flash文件系统的设计与实现[J]. 北京工商大学学报(自然科学版),2006,(3).
  [8]吉峰, 白瑞林. 基于Flash存储器的嵌入式文件系统设计[J]. 江南大学学报(自然科学版),2006,(1).
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:本文主要阐述如何使用虚拟机软件VMware workstation来构建网络环境,实现网络监视器的实验教学。  关键词:网路监视器;教学实验;帧  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)17-31469-01  Using Virtual Ware VMware Workstation to Achieve Experimentation Teachi
期刊
摘要:该文通过介绍PowerPoint视频控件的使用方法,总结了常见视频媒体在PowerPoint中的运用技巧,对读者提高该软件的使用技能有着积极的意义。  关键词:PowerPoint;控件;视频媒体  中图分类号:G434 文献标识码:B文章编号:1009-3044(2007)17-31441-02  How to Employ "Video Control" in PowerPoint So
期刊
摘要:首先阐述了在实践教学中采用Proteus软件仿真的优势,然后对Proteus软件进行介绍,最后举例说明。  关键词:软件仿真的优势;Proteus软件;实例  中图分类号:TP319文献标识码:A文章编号:1009-3044(2007)17-31477-02  The Application of Proteus in Embedded System Teaching  REN Qin, C
期刊
摘要:本论文主要比较了两种多用户上行链路同步估计算法—时域同步与频域同步的性能;最后提出一种新的频率补偿算法使剩余频率快速降到±0.25子载波间距左右,使得频偏估计更具鲁棒性,并说明了算法仿真的有效性。  关键词:多用户OFDM;时域;频域  中图分类号:TN919文献标识码:A文章编号:1009-3044(2007)17-31386-04  Simple Analysis on Multiuse
期刊
摘要:压力测试是Web应用程序测试必不可少的一项工作。现以一个用ASP.NET开发的信息管理系统为例,详细论述如何使用ACT对Web应用程序进行压力测试。  关键词:Web应用程序;压力测试;ACT  中图分类号:TP306文献标识码:A文章编号:1009-3044(2007)17-31405-02  Briefing on Stress Testing of Web Application Pr
期刊
摘要:FLASH设计是目前设计业界界中使用比较广泛的一种形式,本文将着重介绍FLASH设计的现状,并对其发展前景进行详细的分析。  关键词:FLASH;动画;前景  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)17-31475-02  FLASH Design of the Status and Outlook  LI Qiao-jun,TAO Lin  (Hena
期刊
摘要:随着高等教育改革的进一步深化,许多课程的理论教学学时都不同程度地压缩了。如何在有限的学时内让学生掌握所学知识,是每个教师所面临的新问题。论文主要介绍了在数字电子技术课程的课堂教学中,引入MAX+plusⅡ软件,利用其方便、强大的仿真功能,帮助学生理解课程中的难点和重点,从而提高课堂教学的效率。  关键词:MAX+plusⅡ;数字电子技术;课堂教学  中图分类号:TP311文献标识码:A 文章
期刊
摘要:在C语言中,函数是实现程序模块化设计思想的手段。函数在调用过程中常常存在着实参和形参之间的数据传递。文章阐述了调用函数的过程中实参和形参之间数据传递的实质和属性,即值传递和单向性。  关键词:函数;形参;实参;数据传递  中图分类号:TP312文献标识码:A 文章编号:1009-3044(2007)17-31457-01  Analysis of Data Transferring from
期刊
摘要:VB是高校计算机基础课程之一,适合各种管理信息系统的开发。本文主要对VB基础教学中建构主义思想的运用进行了研究,并分析设计了VB教学过程中的教学方法。  关键词:VB;基础教学;建构主义  中图分类号:G642文献标识码:A 文章编号:1009-3044(2007)17-31455-02  Research of VB Teaching Based on Constructivism  GA
期刊
摘要:基于ASP.NET(C#)Web开发平台,对远程备份与恢复SQLServer数据库的方法进行了简单、详细地介绍;解决了基于WEB方式的远程数据库恢复中我们常常会遇到“因为数据库正在使用,所以未能获得对数据库的排它访问权,RESTORE DATABASE操作异常终止”等问题;高效地实现了远程数据库备份与恢复功能。  关键词:ASP.net;C#;远程备份与恢复;SQLServer数据库  中图
期刊