嵌入式Linux常用文件系统

转载 2015年07月07日 08:56:14

Linux支持很多文件系统,在选择时应根据应用的功能选择文件系统


内核只认识VFS(虚拟文件系统),不同的文件系统实现的都是和VFS的相互调用,进而通过VFS访问内核
MTD(Memeory Technology Device,存储技术设备):针对Flash做的底层驱动程序

Rootfs(根文件系统):
   嵌入式系统中一般从Flash启动,最简单的方法是将rootfsload到RAM的RAMDisk,稍为复杂的就是直接从Flash读取的Cramfs,更复杂的是在Flash上分区,并构建JFFS2等文件系统。
       
基于Flash(NOR和NAND)的文件系统
    NORFlash和NANDFlash的比较:http://blog.ednchina.com/ic_net66/43188/message.aspx
    jffs2:RedHat基于jffs开发的
        特点:可读写、支持数据压缩、支持哈希表的日志型文件系统,提供了崩溃/掉电安全保护,提供“写

             平衡”支持等。
        缺点:不适合在体积和容量比较大的NANDFlash中使用,当文件系统已满或者快满时,因为垃圾收集的

             关系使它的运行速度大大放慢。
   yaffs:专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。
       特点:1.减少了一些jffs2的功能,但是速度更快,占用内存更少,能够实现错误检测和坏块处理,能

               够提高文件系统的加载速度。采用多策略混合的垃圾回收算法。
              2.跨平台文件系统,除了Linux还支持WinCE、pSOS、ThreadX。
              3.自带NAND芯片驱动,并为嵌入式系统提供直接访问文件系统的API,用户可不使用Linux中的

               MTD与VFS,直接对文件系统操作。也可与MTD驱动程序配合使用。
    Cramfs:Linux开发的只读的压缩文件系统,基于MTD驱动程序
              特点:速度快,效率高,保护文件系统免受破坏,提高了可靠性。
              缺点:内容无法扩充。
    Romfs:简单的、紧凑的、只读的文件系统,不支持动态擦写保存,安顺序存放数据。ucLinux通常采用本

           文件系统。
基于RAM的文件系统
    Ramdisk:将一部分固定大小的内存当作分区来使用。它并非一个实际的文件系统,而是一种将实际的文

             件系统装入内存的机制,并且可以作为根文件系统。将一些经常被访问而又不会更改的文件通过

             Ramdisk放在内存中,可以明显的提高系统的性能。
             在Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。
   ramfs/tmpfs:
        1.Ramfs是LinusTorvalds开发的一种基于内存的文件系统,工作于虚拟文件系统(VFS)层,不能格式

         化,可以创建多个,在创建时可以指定其最大能使用的内存大小。(实际上VFS本质上可看成一种内存

         文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。)
        2.Ramfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在RAM中,可以用ramfs/tmpfs

         来存储一些临时性或经常要修改的数据,例如/tmp和/var目录,这样既避免了对Flash存储器的读写

         损耗,也提高了数据读写速度。
        3.Ramfs/tmpfs相对于传统的Ramdisk的不同之处主要在于:不能格式化,文件系统大小可随所含文件内

 

        容大小变化。
        4.Tmpfs的一个缺点是当系统重新引导时会丢失所有数据。
网络文件系统NFS (Network File System)
    NFS:是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。

   以上讨论的都是基于存储设备的文件系统(memory-based filesystem),它们都可用作Linux的根文件系统。实际上,Linux还支持逻辑的或伪文件系统(logical or pseudofilesystem),例如procfs(proc文件系统),用于获取系统信息,以及devfs(设备文件系统)和sysfs,用于维护设备文件。    

嵌入式linux 内核和根文件系统烧写方式简介

总体来说,嵌入式Linux内核和根文件的引导与PC机差不多。 嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我们将内核和根文件系统直接烧入到Flash中(包括NOR和NA...
  • sickbe
  • sickbe
  • 2016年08月22日 23:43
  • 2914

深入理解Linux文件系统编程(一)

深入理解Linux文件系统编程(一)    Jiangdg_VIP http://blog.csdn.net/u012637501        文件系统是linux操作系统组织系统资源的一种方...
  • u012637501
  • u012637501
  • 2014年11月12日 10:33
  • 1479

(转)物联网这么火爆,存储之家介绍几种嵌入式文件系统

物联网这么火爆,介绍几种嵌入式文件系统 2016年物联网应用越来越受到国内外开发者的关注,一方面说明物联网行业应该具有比较大的潜力,另一方面传统的市场热点正在逐渐趋于成熟和饱和,所有人都期待有一...
  • youdianhai
  • youdianhai
  • 2016年04月07日 23:15
  • 1618

几种源码开放的嵌入式文件系统分析与比较

几种源码开放的嵌入式文件系统分析与比较 张明磊、尚利宏 第 115 期2008/3/1 由于嵌入式系统自身存在一些特殊要求,使得一些传统的文件系统(如FAT、EXT2等) 并不十分适合。...
  • september98
  • september98
  • 2012年10月28日 08:41
  • 1650

文件系统(嵌入式)对比分析

在嵌入式领域,FLASH是一种常用的存储介质,由于其特殊的硬件结构,所以普通的文件系统如ext2,ext3等都不适合在其上使用,于是就出现了专门针对FLASH的文件系统,比较常用的有jffs2,yaf...
  • firstlai
  • firstlai
  • 2016年02月03日 21:43
  • 2980

嵌入式Linux根文件系统制作和挂载

嵌入式Linux系统由三部分组成: uboot、kernel、根文件系统, 还是这张老图 这里的根文件系统可以说是包含两个部分: 一个是根,一个是文件系统 那么什么是根呢?哈哈 其实根表示...
  • coding__madman
  • coding__madman
  • 2016年05月02日 20:33
  • 10953

嵌入式Linux常用文件系统

Linux支持很多文件系统,在选择时应根据应用的功能选择文件系统 内核只认识VFS(虚拟文件系统),不同的文件系统实现的都是和VFS的相互调用,进而通过VFS访问内核 MTD(Memeory ...
  • hisense20112784
  • hisense20112784
  • 2015年07月07日 08:56
  • 389

嵌入式根文件系统的移植和制作详解

老邮局 琼楼挂月钓流云,梦里瑶台暂借春 网址:http://www.cnblogs.com/hicjiajia/archive/2012/07/10/2582642.html ...
  • a746742897
  • a746742897
  • 2016年11月19日 23:08
  • 1807

[转贴]几种源码开放的嵌入式文件系统分析与比较

幾種源碼開放的嵌入式文件系統分析與比較張明磊、尚利宏第115期 2008/3/1由於嵌入式系統自身存在一些特殊要求,使得一些傳統的文件系統 (如FAT、EXT2等)並不十分適合。專用的嵌入式文件系統應...
  • xlongfeng
  • xlongfeng
  • 2009年09月27日 12:40
  • 1499

嵌入式文件系统镜像制作及烧写

将rootfs和userdata两个目录分别制作为镜像文件进行烧写: 镜像文件对应文件系统类型的选择,采用: rootfs制作为rootfs.img镜像,采用的文件系统类型为cramfs,只读,用于保...
  • qq_29350001
  • qq_29350001
  • 2016年08月16日 17:25
  • 3058
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式Linux常用文件系统
举报原因:
原因补充:

(最多只允许输入30个字)