闪存文件系统

闪存文件系统(英语:Flash file system),是一种为了在闪存设备上存储资料而设计的文件系统,如JFFS2YAFFS等。随着移动设备的日渐增加,闪存的存储能力增加以及价格下降,这类型的文件系统变得越来越普遍。

电脑上通行的大部分文件系统,都是针对碟盘存储设备设计的,应用到闪存上并不适合。一般的文件系统,可以透过闪存转换层(Flash Translation Layer,FTL)写入闪存,但是它的缺点是写入的效率较差。因此,设计闪存文件系统仍然是有必要的。

系统概述

编辑

闪存设备跟碟盘存储设备,在硬件上有不同的特性,例如:

  • 抺除区块(Erasing blocks):闪存的区块(block)在写入之前,要先做抹除(erase)的动作。抺除区块的时间可能会很长,因此最好利用系统闲置的时间来进行抹除。
  • 耗损平均技术(Wear leveling):闪存的区块有抺写次数的限制,重复抺除、写入同一个单一区块将会造成读取速度变慢,甚至损坏而无法使用,因此闪存设备的驱动程序需要将抺写的区块分散,以延长闪存寿命。用于闪存的文件系统,也需要设计出平均写入各区块的功能。
  • 随机存取(Random access):一般的硬盘,读写资料时,需要旋转磁盘,以找到存放的扇区,因此,一般使用于磁盘的文件系统,会作优化,以避免搜索磁盘的作用。但是闪存可以随机存取,没有查找延迟时间,因此不需要这个优化。

设计闪存文件系统的基本概念是,当存储资料需要更新时,文件系统将会把新的复本写入一个新的闪存区块,将文件指针重新指向,并在闲置时期将原有的区块抺除。例如JFFS2YAFFS,都是这样设计。

历史

编辑

最早的闪存文件系统之一,是微软所研发的FFS2(Flash File System 2),在1990年代,它被应用在MS-DOS上。

在1994年间,PCMCIA组织,通过了闪存转换层(Flash Translation Layer,FTL)的规格,允许Linear Flash设备能够看起来像是FAT磁盘设备,但是仍然保有耗损平均技术的能力。应用相同概念,但为了避免专利争议,资料光公司(Datalight)创造了FlashFXFlashFX Pro,作为商业产品。

Linux上实现的闪存转换层,称为MTD。MTD是一个硬件的抽象层,能够让闪存设备看起来像是一种区块设备,因此能够将既有的文件系统,如FATExtXFS等,直接应用在闪存上。

示例

编辑

参考资料

编辑