• 正文
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard ELF 1板卡-文件系统介绍

06/18 11:50
1056
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

文件系统概念

文件系统通常提供目录或文件夹用于记录文件,在很多系统中目录本身也是文件,在这些系统中,目录是管理文件系统结构的系统文件。从文件组织结构上来说,嵌入式Linux文件系统与普通PC/服务器上Linux的文件系统是一样的,只是嵌入式Linux文件系统根据产品功能进行过裁剪,在内容多少和体积大小上不同。进行嵌入式Linux产品开发,构建一个合适的文件系统是不可或缺的,可以基于已有文件系统进行裁剪或者定制,也可以从头开始构建。

文件系统类型

简单介绍一些常用的几种linux系统类型:ramdisk、cramfs、jffs2、yaffs/yaffs2、ubifs、NFS、Ext2/3/4等,ELF?1开发板使用的是Ext3文件系统,每种文件系统类型都有自己的特性,下面我们逐一介绍一下。

一、Ext2/3/4

Ext全称Linux extended file system, extfs,即Linux扩展文件系统,Ext2代表第二代扩展文件系统,Ext3/Ext4是Ext2的升级版,减少一致性检查的时间,增加了日志功能,一般将Ext2称为索引式文件系统,Ext3/Ext4称为日志式文件系统。

二、NFS文件系统

网络文件系统。用于系统间通过网络进行文件共享,NFS包括两部分,服务端及客户端。本地NFS客户端可以读写位于远端NFS服务器上的文件,就像访问本地文件一样。

三、jffs2文件系统

Journalling Flash File System Version 2是一个可读写,压缩,日志型文件系统。其功能是管理在MTD设备上实现的日志型文件系统。启动时间依赖于文件系统大小,通常比较长,最初只支持NOR Flash,后来添加了NAND Flash的支持但不稳定,不推荐在NAND Flash上使用。

四、ubifs文件系统

Unsorted Block Image File System UBIFS文件系统构建于MTD设备之上,支持write-back,其写入的数据会被cache,直到有必要写入时才写到NAND Flash,这样大大地降低分散小区块数量并提高I/O效率。UBIFS文件支持数据压缩。

五、YAFFS/YAFFS2文件系统

YAFFS/YAFFS2是一种和JFFSx类似的闪存文件系统,它是专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。YAFFS是第一个在GPL协议下发布的适用于大容量存储设备的日志型文件系统。和JFFS2相比它减少了一些功能,所以速度更快,而且对内存的占用比较小。此外,YAFFS自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以直接对文件系统操作。YAFFS2支持大页面的NAND设备,并且对大页面的NAND设备做了优化。Yaffs2更使用于NAND Flash上使用。

六、Cramfs文件系统

Cramfs文件系统以压缩方式存储,在运行时解压缩,所有的应用程序要求被拷到RAM里去运行,这并不代表会需求更大的RAM空间,因为Cramfs采用分页压缩的方式存放档案,在读取档案时,不会一下子耗用过多的内存空间,只针对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当我们读取的档案不在内存时,Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。

cramfs文件系统速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。但只读属性同时又是它的一大缺陷,使得用户无法对其内容对进扩充。

七、RamDisk文件系统

RamDisk就是将内存中的一块区域作为物理磁盘来使用的一种技术。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过Ramdisk放在内存中,可以明显地提高系统的性能。在Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。

RamDisk是临时性的,所以没有带日志的文件系统的必要。

文件系统目录结构

我们可以根据不同的应用场景,对嵌入式文件系统目录结构进行裁剪。下面对比较经典的几个文件目录做一下介绍。

运行cd/进入文件系统根目录,运行ls -l可以看到以下目录:

目录 内容
/bin 存放常用基本命令和工具,如ls、cp等
/dev 存放系统的设备文件,包含了所有linux系统中使用的外部设备
/etc 存放系统的配置文件,这里面的配置文件会影响系统所有用户的系统环境
/home 用户的家目录,在此目录下,每个用户都有自己的家目录
/lib 存放非常重要的系统运行库文件
/media 作为外部设备的一个挂载点,比如硬盘或者可移动设备(U盘、DVD、CD)。
/mnt 和/media一样,也是一个挂载点,但是专用于挂载临时的设备,例如网络文件系统
/proc 一个虚拟文件系统,为内核提供向进程发送信息的机制。操作系统运行时,进程以及内核信息存放路径
/sbin 包含通常只应由超级用户使用的重要管理命令
/sys 设备驱动模型中的总线、驱动、设备都可以在sysfs中找到对应的节点
/tmp 临时文件的位置
/usr 包含大多数用户命令和工具或者库文件,包括例如 /usr/bin/ 和 /usr/lib
/var 致力于可变数据,例如日志,数据库,网站和临时脱机(电子邮件等)文件
/root root 用户的家目录,不在/home/中,即使/home/不可用,也允许引导系统

相关推荐