嵌入式Linux文件系统及其存储机制分析
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-19
装后向用户层提供MTD char和MTD block类型的设备.MTD char类型的设备包括/dev/mtd0, /dev/mtdl等,它们提供对Flash原始字符的访问.MTD block类型的设备包括/dev/mtdblock0,/dev/mtdblock1等,MTD block设备是将Flash模拟成块设备,这样可以在这些模拟的块设备上创建像Cramfs, JFFS2等格式的文件系统. MTD驱动层也支持在一块Flash上建立多个Flash分区,每一个分区作为了一个MTD block设备,可以把系统软件和数据等分配到不同的分区上,同时可以在不同的分区采用不用的文件系统格式.这一点非常重要,正是这一点才为嵌入式系统多文件系统的建立提供了灵活性. 2. 基于Flash的文件系统 鉴于Flash存储介质的读写特点,传统的Linux文件系统己经不适合应用在嵌入式系统中,像Ext2fs文件系统是为像IDE那样的块设备设计的,这些设备的逻辑块是512字节、1024字节等大小,没有提供很好的扇区擦写支持,不支持损耗平衡,没有掉电保护,也没有特别完美的扇区管理,这不太适合于扇区大小因设备类型而划分的闪存设备.基于这样的原因,产生了很多专为Flash设备而设计的文件系统,常见的专用于闪存设备的文件系统如下: ● Romfs 传统型的Romfs文件系统是最常使用的一种文件系统,它是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存;它按顺序存放所有的文件数据,这种文件系统格式支持应用程序以XIP方式运行,在系统运行时,可以获得可观的RAM节省空间.uClinux系统通常采用Romfs文件系统. ● Cramfs Cramfs是Linux的创始人Linus Torvalds开发的一种可压缩只读文件系统在Cramfs文件系统中,每一页被单独压缩,可以随机页访问,其压缩比高达2:1,为嵌入式系统节省大量的Flash存储空间.Cramfs文件系统以压缩方式存储,在运行时解压缩,不支持应用程序以XIP方式运行,所有的应用程序要求被拷到RAM里去运行,但这并不代表比Ramfs需求的RAM 空间要大一点,Cramfs是采用分页压缩的方式存放档案,在读取档案时,不会一下子就耗用过多的内存空间,只针对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当我们读取的档案不在内存时, Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中.另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性;但是它的只读属性同时又是它的一大缺陷,用户无法对其内容对进扩充.Cramfs映像通常是放在Flash中,但是也能放在别的文件系统里,使用loopback设备可以把它安装别的文件系统里.使用mkcramfs工具可以创建Cramfs映像. ● Ramfs/Tmpfs Ramfs也是Linus Torvalds开发的,Ramfs文件系统把所有的文件都放在RAM里运行,通常是Flash系统用来存储一些临时性或经常要修改的数据,相对于ramdisk来说,Ramfs的大小可以随着所含文件内容大小变化,不像ramdisk的大小是固定的.Tmpfs是基于内存的文件系统,tmpfs驻留在RAM 中,写/读操作发生在RAM 中.tmpfs文件系统大小可随所含文件内容大小变化,能够最理想地使用内存;tmpfs驻留在RAM,读和写几乎都是瞬时的.tmpfs的一个缺点是当系统重新引导时会丢失所有数据. ● JFFS2 JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,JFFS2也可以用在Linux,uCLinux中.JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统.JFFS2是一个可读写的、压缩的、日志型文件系统,并提供了崩溃/掉电安全保护,克服了JFFS的一些缺点:使用了基于哈希表的日志节点结构,大大加快了对节点的操作速度;支持数据压缩;提供了“写平衡”支持;支持多种节点类型;提高了对闪存的利用率,降低了内存的消耗.这些特点使JFFS2文件系统成为目前Flash设备上最流行的文件系统格式 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: linux下 查询第三方安装包版本下一篇: Linux下的PDF阅读器Foxit
关于嵌入式Linux文件系统及其存储机制分析的所有评论