什么是FLASH闪存文件系统?
在嵌入式领域,FLASH是一种常用的存储介质,由于其特殊的硬件结构,所以普通的文件系统如ext2,ext3等都不适合在其上使用,于是就出现了专门针对FLASH的文件系统,比较常用的有jffs2,yaffs2,logfs,ubifs。
闪存文件系统(Flash file system),是一种为了在闪存设备上存储数据而设计的文件系统。随着移动设备的日渐增加,闪存的存储能力增加以及价格下降,这类型的文件系统变得越来越普遍。
闪存文件系统介绍
• JFFS2 : Journaling Flash File System version 2
(David Woodhouse)
– Has been integrated in Linux kernel since 2001.
– Commonly used for low volume flash devices.
– Compression is supported.
• YAFFS2 : Yet Another Flash File System version 2
(Charles Manning)
– YAFFS is the first file system designed specifically for NAND (since 2001).
– Version 2 supports 2KB large page NAND (since 2005).
– Compression is not supported.
• LogFS : Log Flash File System
(Jörn Engel)
– Mounting time is short (since 2005)
– Under development (Needs more testing on large devices)
– User data is not compressed, while meta data is compressed.
(Jörn said that user data is also compressed in ELC2009, but we could not see it in our
testing. We used the default settings.)
• UBIFS : Unsorted Block Image File System
(Artem Bityutskiy, Adrian Hunter)
– Mainlined in 2.6.27 in Oct 2008.
– Works on top of UBI volumes.
– Compression is supported.
闪存设备跟碟盘存储设备,在硬件上有不同的特性:
抺除区块(Erasing blocks):闪存的区块(block)在写入之前,要先做抹除(erase)的动作。抺除区块的时间可能会很长,因此最好利用系统闲置的时间来进行抹除。
耗损平均技术(Wear leveling):闪存的区块有抺写次数的限制,重复抺除、写入同一个单一区块将会造成读取速度变慢,甚至损坏而无法使用,因此闪存设备的驱动程序需要将抺写的区块分散,以延长闪存寿命。用于闪存的文件系统,也需要设计出平均写入各区块的功能。
随机存取(Random access):一般的硬盘,读写数据时,需要旋转磁盘,以找到存放的扇区,因此,一般使用于磁盘的文件系统,会作优化,以避免搜索磁盘的作用。但是闪存可以随机存取,没有查找延迟时间,因此不需要这个优化。
设计闪存文件系统的基本概念是,当存储数据需要更新时,文件系统将会把新的复本写入一个新的闪存区块,将文件指针重新指向,并在闲置时期将原有的区块抺除。例如JFFS2与YAFFS,都是这样设计。
最早的闪存文件系统之一,是微软所研发的 FFS2(Flash File System 2),在1990年代,它被应用在MS-DOS上。
在1994年间,PCMCIA组织,通过了闪存转换层(Flash Translation Layer,FTL)的规格,允许Linear Flash设备能够看起来像是FAT磁盘设备,但是仍然保有耗损平均技术的能力。应用相同概念,但为了避免专利争议,数据光公司(Datalight)创造了 FlashFX与 FlashFX Pro,作为商业产品。
在Linux上实现的闪存转换层,称为MTD。MTD是一个硬件的抽象层,能够让闪存设备看起来像是一种区块设备,因此能够将既有的文件系统,如FAT、Ext、XFS等,直接应用在闪存上。
本文是对FLASH闪存文件系统的一个概括性介绍,让大家了解什么是闪存文件系统,在哪些领域应用,接下来中存储的编辑会分别介绍这些闪存文件系统(jffs2,yaffs2,logfs,ubifs)的架构及工作原理。《UBIFS闪存文件系统详解篇》《JFFS2文件系统内部工作机制详解及优势和不足分析》