关闭
关闭
首页 > 嵌入式硬件 > 驱动开发

Linux 支持多种文件系统,包括 ext2 、 ext3 、 vfat 、 ntfs 、 iso9660 、 jffs 、 romfs 和 nfs 等,为了对各类文件系统进行统一管理, Linux 引入了虚拟文件系统 VFS(Virtual File System) ,为各类文件系统提供一个统一的操作界面和应用编程接口。

Linux 下的文件系统结构如下:

 

Linux 启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。

不同的文件系统类型有不同的特点,因而根据 存储 设备的硬件特性、系统需求等有不同的应用场合。在嵌入式 Linux 应用中,主要的 存储 设备为 RAM(DRAM, SDRAM) 和 ROM( 常采用 FLASH 存储器 ) ,常用的基于存储设备的文件系统类型包括: jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs 等。

1. 基于 FLASH 的文件系统

Flash ( 闪存 ) 作为嵌入式系统的主要存储媒介,有其自身的特性。 Flash 的写入操作只能把对应位置的 1 修改为 0 ,而不能把 0 修改为 1( 擦除 Flash 就是把对应存储块的内容恢复为 1) ,因此,一般情况下,向 Flash 写入内容时,需要先擦除对应的存储区间,这种擦除是以块 (block) 为单位进行的。

闪存主要有 NOR 和 NAND 两种技术 ( 简单比较见附录 ) 。 Flash 存储器的擦写次数是有限的, NAND 闪存还有特殊的硬件接口和读写时序。因此,必须针对 Flash 的硬件特性设计符合应用要求的文件系统;传统的文件系统如 ext2 等,用作 Flash 的文件系统会有诸多弊端。

嵌入式 Linux 下, MTD(Memory Technology Device, 存储技术设备 ) 为底层硬件 ( 闪存 ) 和上层 ( 文件系统 ) 之间提供一个统一的抽象接口,即 Flash 的文件系统都是基于 MTD 驱动层的 ( 参见上面的 Linux 下的文件系统结构图 ) 。使用 MTD 驱动程序的主要优点在于,它是专门针对各种非易失性存储器 ( 以闪存为主 ) 而设计的,因而它对 Flash 有更好的支持、管理和基于扇区的擦除、读 / 写操作接口。

顺便一提,一块 Flash 芯片可以被划分为多个分区,各分区可以采用不同的文件系统;两块 Flash 芯片也可以合并为一个分区使用,采用一个文件系统。即文件系统是针对于存储器分区而言的,而非存储芯片。

(1) jffs2

JFFS 文件系统最早是由瑞典 Axis CommunicaTIons 公司基于 Linux2.0 的内核为嵌入式系统开发的文件系统。 JFFS2 是 RedHat 公司基于 JFFS 开发的闪存文件系统,最初是针对 RedHat 公司的嵌入式产品 eCos 开发的嵌入式文件系统,所以 JFFS2 也可以用在 Linux, uCLinux 中。

Jffs2: 日志闪存文件系统版本 2 (Journalling Flash FileSystem v2)

主要用于 NOR 型闪存,基于 MTD 驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃 / 掉电 安全 保护,提供 “ 写平衡 ” 支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使 jffs2 的运行速度大大放慢。

目前 jffs3 正在开发中。关于 jffs 系列文件系统的使用详细文档,可参考 MTD 补丁包中 mtd-jffs-HOWTO.txt 。

jffsx 不适合用于 NAND 闪存主要是因为 NAND 闪存的容量一般较大,这样导致 jffs 为维护日志节点所占用的内存空间迅速增大,另外, jffsx 文件系统在挂载时需要扫描整个 FLASH 的内容,以找出所有的日志节点,建立文件结构,对于大容量的 NAND 闪存会耗费大量时间。

(2) yaffs : Yet Another Flash File System

yaffs/yaffs2 是专为嵌入式系统使用 NAND 型闪存而设计的一种日志型文件系统。与 jffs2 相比,它减少了一些功能 ( 例如不支持数据压缩 ) ,所以速度更快,挂载时间很短,对内存的占用较小。另外,它还是跨平台的文件系统,除了 Linux 和 eCos ,还支持 WinCE, pSOS 和 ThreadX 等。

yaffs/yaffs2 自带 NAND 芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的 API ,用户可以不使用 Linux 中的 MTD 与 VFS ,直接对文件系统操作。当然, yaffs 也可与 MTD 驱动程序配合使用。

yaffs 与 yaffs2 的主要区别在于,前者仅支持小页 (512 Bytes) NAND 闪存,后者则可支持大页 (2KB) NAND 闪存。同时, yaffs2 在内存空间占用、垃圾回收速度、读 / 写速度等方面均有大幅提升。

(3) Cramfs : Compressed ROM File System

Cramfs 是 Linux 的创始人 Linus Torvalds 参与开发的一种只读的压缩文件系统。它也基于 MTD 驱动程序。

在 cramfs 文件系统中,每一页 (4KB) 被单独压缩,可以随机页访问,其压缩比高达 2:1, 为嵌入式系统节省大量的 Flash 存储空间,使系统可通过更低容量的 FLASH 存储相同的文件,从而降低系统成本。

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

另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。

由于以上特性, Cramfs 在嵌入式系统中应用广泛。

但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容对进扩充。

Cramfs 映像通常是放在 Flash 中,但是也能放在别的文件系统里,使用 loopback 设备可以把它安装别的文件系统里。

(4) Romfs

传统型的 Romfs 文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以 XIP(eXecute In Place ,片内运行 ) 方式运行,在系统运行时,节省 RAM 空间。 uC linux 系统通常采用 Romfs 文件系统。

换一批

延伸阅读

[新鲜事] Twitter 成为 Linux 基金会新成员

Twitter 成为 Linux 基金会新成员

继英伟达和三星之后,Twitter 日前宣布他们也将于本周在加州举行的北美站 LinuxCon 大会上正式成为 Linux 基金会的成员(英特尔、IBM、Google 等:「鼓掌欢迎!」)。Twitter 的开源业务经理 Chris An......

关键字:Twitter Linux 基金会

[真心话] 神技能get:实现1秒启动Linux?

神技能get:实现1秒启动Linux?

尽可能快的启动系统,对于自动化设备是非常重要的。系统能够在用户无法感知的时间内启动,也就意味着在不需要工作时,可以完全切断电源,而不是挂起进入休眠状态。本文基于Atmel AT91系列片上系统和NAND闪存,经过一......

关键字:Linux 自动化设备 启动 系统

[新鲜事] Windows、Mac、Linux 3 版 Skype 更新齐发

Windows、Mac、Linux 3 版 Skype 更新齐发

在今天一天内 Windows、Mac、Linux 3 个平台上的 Skype 都获得了更新。在 Windows 版本中 UI 得到了一些改进,包括可以将联系人「钉」到联系人列表顶部、在配置较差的电脑上加入了影像渲染的反向兼容性以及更好的 ......

关键字:Windows Linux Skype Mac

[新鲜事] Valve老大G胖:支持Linux因Win8是个灾难

Valve老大G胖:支持Linux因Win8是个灾难

华尔街日报》旗下科技博客AllThingsD报道,昨日Valve老大Gabe Newell出席了由Google风投等私募公司在西雅图举行的一场晚宴,期间和前微软游戏发行部门副总裁Ed Fries谈到了他近期对业界一些的看法。Valve在上周......

关键字:Valve Linux Win8

[新鲜事] 针对 Linux 的木马程序Wirenet出现

针对 Linux 的木马程序Wirenet出现

以往Linux其中一个卖点是“没有病毒”,然而Linux日益普及却令它也开始成为恶意程式的目标。根据俄罗斯保安方案开发商Dr Web的报告、继 Mac OS X之后,在Linux也发现了意图取得用户密码的木马程序。 ......

关键字:Wirenet Linux 木马 程序

[真心话] Windows、Linux、OS X 版 Opera 12.10 正式发布:支持 Windows 8 触控、Retina 屏幕、SPDY 协议

Windows、Linux、OS X 版 Opera 12.10 正式发布:支持 Windows 8 触控、Retina 屏幕、SPDY 协议

Opera 日前正式在 Windows、Linux、OS X 三大平台上推出了 12.10 版本。作为 Opera 12 的后续版本,Opera 12.10 新加入了对 OS X 通知中心、Retina 屏幕、Windows 8 触控......

关键字:Windows Retina Linux 12.10

[新鲜事] CentOS系统宣布为ARM(armhfp)硬件架构发布CentOS Linux 7(1611)镜像

CentOS系统宣布为ARM(armhfp)硬件架构发布CentOS Linux 7(1611)镜像

今天,CentOS系统开发人员Fabian Arrotin非常高兴的宣布为ARM(armhfp)硬件架构发布CentOS Linux 7(1611)镜像。该GNU/Linux发行版本深受单板计算机和嵌入式设备的喜爱,支持树莓派3、树莓派2、......

关键字:ARM CentOS Linux

[新鲜事] Intel买下超算文件系统Lustre 目标百亿亿次

Intel买下超算文件系统Lustre 目标百亿亿次

做为在2020年前达成百亿亿次计算工程的一部分,Intel今天宣布已经收购Whamcloud,同时也得到了其专为超级计算机和集群设计的文件系统Lustre。Lustre是一个面向大规模集群的存储架构,基于Linux平台的开源集群并行文件......

关键字:Lustre Intel 文件系统

[猎聘集] 全世界最成功的程序员:远见卓识会毁了Linux

全世界最成功的程序员:远见卓识会毁了Linux

Linux发明者称,正因为我不知道它将来会怎样,所以我对别人的建议和影响才表现得格外开放。......

关键字:程序员 Linux 开源

[新鲜事] Linux Steam Beta 版将会在十月封测

Linux Steam Beta 版将会在十月封测

Valve 旗下的 Steam 一直以来都是 Windows 的好伙伴,不过他们的创办人 Gabe Newell 早前曾经高调说过:「Windows 8 是一场灾难」,并会将 Steam 平台移植到 Linux 作为「避险策略」。直到现在......

关键字:Linux Steam Beta 封测

[新鲜事] 最奇闻:使用Mac和Linux系统的脑部结构不一样

最奇闻:使用Mac和Linux系统的脑部结构不一样

美国一项最新研究表明,进行脑部扫描的时候,使用不同的PC软件和平台会呈现不一样的脑部结构。该研究用一款 FreeSurfer 的图像工具分析了30幅大脑 MRI 扫描图像, 图像主要来自Mac和Linux用户。根据使用Mac系统还是Li......

关键字:Linux Mac 系统

[新鲜事] Linux内核修复Ryzen线程数目识别错误,多线程性能将会飙升

Linux内核修复Ryzen线程数目识别错误,多线程性能将会飙升

Linux已经在官网发布最新的内核修复这一问题,预计Ryzen 7处理器又能纵横在Linux系统上。......

关键字:Linux内核 Ryzen 多线程
条评论

我 要 评 论

网友评论

大家都爱看

  • 华为的优势,就是自家的各种自研芯片

    CPU即中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

    2017-08-16
  • 你不知道Ryzen芯片有多火?来看看AMD的股票吧

    据外媒报道,美银美林认为,AMD最新的Ryzen芯片可能会引发一波销售浪潮,进而推动该股继续上涨。它认为AMD股票还有40%以上的上涨空间。

    2017-08-16
  • 国产芯片:厚积薄发,强势崛起

    关于国产芯片,是近几年才有崛起的势头,可是在几年之前,国产芯片还处于“沉睡”的状态,尤其是手机芯片,几乎大部分都依赖进口,而且国外的市场几乎被高通和联发科所垄断,也就展讯还在市场边…

    2017-08-16
  • 为了数据安全 大疆无人机增加隐私飞行功能

    大疆周一表示,在美国陆军因为“网络缺陷”而要求其成员停用大疆无人机后,这家中国无人机制造商将加强无人机的数据安全性。 大疆政策和法务副总裁布伦丹&middot…

    2017-08-15
  • Intel代工 展讯发布14nm SC9853I手机SoC

    SC9853I采用的Intel的14nm FinFET制程,架构为8核64位Airmont架构,主频1.8GHz,GPU为Mali-T820 MP2,号称面向799~1299元档次的手机。…

    2017-08-15