Linux flash文件系统剖析
http://tech.ddvip.com 2008年06月10日 社区交流
内容摘要:本文将向您介绍 Linux® 的 flash 文件系统,并探索它们如何通过平均读写(wear leveling)处理底层的可消耗设备(flash 部件),并鉴别各种不同的 flash 文件系统以及它们的基本设计。
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 列表包含曾经执行过擦除操作并且可以使用的块。
来源:developerWorks 中国 作者:M. Tim Jones 责编:豆豆技术应用
- Linux/Unix 新闻
- Linux/Unix 入门
- Linux/Unix 命令
- Linux/Unix 安装
- Linux 嵌入式系统
- Linux/Unix 编程
- Linux/Unix 管理
- Linux/Unix 桌面
- Linux/Unix 内核
- Linux/Unix 软件
- SCO Unix
- NetBSD
- OpenBSD
- Redhat/Fedora Linux
- 手机
- Linux/Unix find 搜索命令
- Linux/Unix vi 命令
- Linux/Unix kde 桌面环境
- Linux/Unix GNOME 桌面环境
- Linux/Unix Make 命令
- Linux/Unix crontab 命令
- Linux/Unix ext3 文件系统
- Linux/Unix 文件系统详解
- Linux/Unix ADSL 拨号设置
- Linux/Unix GRUB 配置及应用
- Linux/Unix nfs配置
- Linux/Unix 硬件信息查看及管理
- Linux/Unix 优化
- Linux/Unix 交换分区Swap管理及应用
- Linux/Unix 用户管理
- Linux/Unix Ramdisk
- Linux/Unix 密码恢复管理
- Linux/Unix 文件删除恢复
- Linux/Unix fdisk分区
- Linux/Unix lvs负载均衡管理
- Linux/Unix root用户
- Linux/Unix 集群
- Linux/Unix 日志
- 更多Linux/Unix专题……