Flash 文件系统
Linux 可以使用多种 flash 文件系统。下一小节将解释每种文件系统的设计和优点。
Journaling Flash File System
Journaling Flash File System 是针对 Linux 的最早 flash 文件系统之一。 JFFS 是一种专门为 NOR flash 设备设计的日志结构文件系统。它非常独特,能够解决许多 flash 设备问题,但同时也导致一些新问题。
JFFS 将 flash 设备视为一种循环的块日志。写入 flash 的数据被写到了空间的末尾,开始部分的块则被收回,而两者之间的空间是空闲的;当空间变少时,将执行垃圾收集。垃圾收集器将有效块移动到日志的尾部,跳过无效或废弃块,并擦除它们(参见图 2)。因此这种文件系统可以自动实现静态和动态平均读写。这种架构的主要缺点是过于频繁地执行擦除操作(而没有使用最佳擦除策略),从而使设备迅速磨损。
图 2. 在垃圾收集之前和之后循环日志
挂载 JFFS 时结构细节将读取到内存中,这将延缓挂载时间并消耗更多的内存。
Journaling Flash File System 2
尽管 JFFS 在早期非常有用,但是它的平均读写算法容易缩短 NOR flash 设备的寿命。因此重新设计了底层算法,去掉了循环日志。JFFS2 算法专门为 NAND flash 设备设计,并且改善压缩性能。
在 JFFS2 中,flash 中的每个块都是单独处理的。JFFS2 通过维护块列表来充分地对设备执行平均读写。clean 列表表示设备中的块全部为有效节点。dirty 列表中的块至少包含有一个废弃节点。最后,free 列表包含曾经执行过擦除操作并且可以使用的块。
垃圾收集算法通过合理的方法智能地判断应该回收的块。目前,这个算法根据概率从 clean 或 dirty 列表中选择。dirty 列表的选择概率为 99%(将有效内容移到另一个块),而 clean 列表的选择概率为 1%(将内容移到新的块)。在这两种情况中,对选择的块执行擦除操作,然后将其置于 free 列表(参见图 3)。这允许垃圾收集器重用废弃的块,但是仍然围绕 flash 移动数据,以支持静态平均读写。
图 3. JFFS2 中的块管理和垃圾收集
Yet Another Flash File System
YAFFS 是针对 NAND flash 开发的另一种 flash 文件系统。最早的版本(YAFFS)支持 512 字节页面的 flash 设备,但是较新的版本(YAFFS2)支持页面更大的新设备以及更大的 Write 限制。
大多数 flash 文件系统会对废弃块进行标记,但是 YAFFS2 使用单调递增数字序列号额外地标记块。在挂载期间扫描文件系统时,可以快速标识有效的 inode。YAFFS 保留在 RAM 中的树以表示 flash 设备的块结构,包括通过检查点(checkpointing)实现快速挂载 — 这个过程将在正常卸载时将 RAM 树结构保存到 flash 设备,以在挂载时快速读取和恢复到 RAM(参见图 4)。与其他 flash 文件系统相比,YAFFS2 的挂载时性能是它的最大优势。
相关专题
- 系统优化大全 (19029篇文章)
- 系统安全设置 (24757篇文章)
- 系统安装手册 (21854篇文章)
- 系统备份专题 (18430篇文章)
- Linux集群技术 (9282篇文章)
- 体验Linux的音影世界 (8947篇文章)
- Linux驱动大全 (9772篇文章)
- Linux下的路由的配置与应用 (12871篇文章)
- Linux命令简介 (10878篇文章)
- 系统维护手册 (17800篇文章)
- Ubuntu 8.04 中开启3D桌面特效与设置方法 (498次浏览)
- Ubuntu发烧友三部曲 进阶篇 (183次浏览)
- 经典文档:Linux网络安全配置基础详解 (149次浏览)
- 七大操作系统一季度漏洞比拼 (130次浏览)
- 用 Wubi 安装 Ubuntu 8.04 只需五步 (115次浏览)
- 实用技巧 从硬盘安装Fedora-9-i386-DVD (106次浏览)
- Ubuntu 8.04 使用感受及思考 (102次浏览)
- Linux IPv6环境下DNS服务器配置攻略 (87次浏览)
- 随身系统:Puppy Linux 4.00 初体验 (80次浏览)
- ubuntu8.04桌面边框的美化 (76次浏览)





