User:Guanchunsheng/sandbox

闪存文件系统 是一种专为闪存设备的文件存储而设计的文件系统. 随着移动设备数量的增长，存储器成本降低及容量的提升，这类文件系统变得越来越流行.

可以在闪存设备上使用磁盘文件系统，但是这样有一些不理想的地方： 日志结构的文件系统具备闪存文件系统所需的所有特性. 诸如JFFS2和YAFFS.
 * 区块擦除: 闪存存储器的区块在写入之前必须进行擦除. 擦除区块需要一定时间，因此最好利用设备的空闲时间擦除未使用的区块. 磁盘文件系统没有这方面的考虑.
 * 随机存取: 磁盘文件系统的搜索需要大量的时间，为此进行了特别的优化. 闪存设备的搜索不会产生延迟，无需这类优化.
 * 损耗平均技术: 对闪存设备同一区块的反复写入超过一定次数会造成损坏，因此闪存文件系统必须有均衡写入压力的设计.

由于闪存存储器的特性，最好的方案是使用闪存控制器实现损耗平均技术和自动纠错，或者使用闪存文件系统，对均衡写入及NAND闪存区块的擦除时间有做特殊设计. 闪存文件系统的基本思想是：当闪存需要更新时，文件系统会复制更新后的数据到一个新的区块中，重新映射文件指针，然后在适当的时候擦除原区块.

现实中，只有“存储器技术设备”（“MTD”）需要闪存文件系统，因为它们内嵌的闪存没有控制器. 便携式闪存存储卡和闪存盘具有内部控制器，按照特定的算法进行管理， 诸如损耗平均技术，坏块修复，掉电恢复，垃圾回收和自动纠错，因此这样的设备无需使用闪存文件系统.

起源
最早的闪存文件系统是TrueFFS，由以色列的M-Systems公司开发，1992年7月在圣克拉拉州作为PC-Card Expo的一个软件产品发布，并于1993年申请专利. 这个系统把闪存阵列作为可自由写入的磁盘来管理.

微软的FFS2也是最早的闪存文件系统之一，用于MS-DOS，发布于1992年秋天. FFS2得名于更早的一个产品，称为“FFS”，“FFS”作为闪存文件系统有点勉强，它将闪存阵列作为WORM（一次写入，多次读取）管理，而不是可自由写入磁盘.

在1994年间，PCMCIA组织通过了基于TrueFFS设计的Flash Translation Layer (FTL)规范. 此规范由M-Systems和SCM Microsystems联合提出，后者同时也提供了FTL的第一个具体实现. 经过Intel 和其他业内领袖的认可，FTL闪存文件系统设计在PCMCIA之外也流行起来.

JFFS/JFFS2/YAFFS
JFFS 是第一个用于Linux的闪存专用文件系统，但是很快它就被JFFS2取代，JFFS2一开始是为了NOR闪存开发的. YAFFS于2002年发布，专门处理NAND闪存，其后 JFFS2也进行了更新，可以支持NAND闪存.

UBIFS
UBIFS 从2008年开始并入Linux 2.6.22. UBIFS从最开始并入就一直在积极开发中. UBIFS documentation 同JFFS2和MTD设备一起由infradead.org主管. 一些初步的比较显示启用压缩功能的UBIFS比F2FS速度快.

LogFS
LogFS，另一个Linux闪存专用文件系统，是为了解决JFFS2中的地址扩展性问题而开发的.

F2FS
F2FS 加入到 Linux kernel 3.8.

Overlayfs/Unionfs/aufs
这几种是联合文件系统，允许合并多种文件系统然后为用户呈现一个单一文件树. 这样允许系统设计者将操作系统某部分，通常是只读的，存放于与普通可读写区域不同的媒介中. OpenWrt 通常安装在不含FTL的原始闪存芯片中，使用overlayfs 将压缩后的只读SquashFS与JFFS2联合起来.

翻译层
还有一些子系统经常称为闪存文件系统，但更确切的说是区块驱动，因为它们没有真正的文件系统接口. 包括：

TrueFFS
尽管是叫这个名字，但TrueFFS并不是一个文件系统. 它不提供文件系统接口，只提供磁盘接口. TrueFFS准确来说是一个闪存翻译层. True flash file system或者TrueFFS是为了在原始固态硬盘（大部分现在的消费级SSD并不是原始的）上运行而设计. TrueFFS实现了自动纠错，坏区重映射和损耗平均技术. 在外部，TrueFFS提供一个正常的硬盘接口.

TrueFFS由M-Systems 在著名的“DiskOnChip 2000”产品线上开发，与2006年被闪迪公司收购. TrueFFS的一个衍生产品，称为TFFS或者TFFS-lite在VxWorks操作系统上创立，是一个闪存翻译层，不是一个完全的闪存文件系统. 闪存翻译层的作用是使得完全的文件系统能够适用于闪存设备的介入.

ExtremeFFS
ExtremeFFS 是由闪迪公司开发的一种技术，相对于传统的闪存系统，例如TrueFFS，它可以提高闪存的随机写入性能. 闪迪公司声称该技术可以将固态硬盘的随机写入速度提高100倍. 该公司计划在即将上市的多层cellNAND闪存的中，使用ExtremeFFS技术.

请参阅

 * List of flash file systems

外部链接

 * Presentation on various Flash File Systems - 9/24/2007
 * Article regarding various Flash File Systems - 2005 USENIX Annual Conference
 * Survey of various Flash File Systems - 8/10/2005
 * Anatomy of Linux Flash File Systems - 5/20/2008

 Category:Computer memory Category:Computer file systems