Linux flash 文件系统剖析
您之前可能听说过 Journaling Flash File System(JFFS)和 Yet Another Flash File System(YAFFS),但是您知道使用底层 flash 设备的文件系统意味着什么吗?本文将向您介绍 Linux? 的 flash 文件系统,并探索它们如何通过平均读写(wear leveling)处理底层的可消耗设备(flash 部件),并鉴别各种不同的 flash 文件系统以及它们的基本设计. 固态驱动器当前非常流行,但是嵌入式系统很久以前就开始使用固态驱动器进行存储.您可以看到 flash 系统被用于个人数字助理(PDA)、手机、MP3 播放器、数码相机、USB flash 驱动(UFD),甚至笔记本电脑.很多情况下,商业设备的文件系统可以进行定制并且是专有的,但是它们会遇到以下挑战. 基于 Flash 的文件系统形式多种多样.本文将探讨几种只读文件系统,并回顾目前可用的各种读/写文件系统及其工作原理.但是,让我们先看看 flash 设备及其所面对的挑战. Flash 内存技术 Flash 内存(可以通过几种不同的技术实现)是一种非挥发性内存,这意味着断开电源之后其内容仍然保持下来.要了解 flash 内存的辉煌历史,请参阅 参考资料. 两种最常见的 flash 设备类型为:NOR 和 NAND.基于 NOR 的 flash 技术比较早,它支持较高的读性能,但以降低容量为代价.NAND flash 提供更大容量的同时实现快速的写擦性能.NAND 还需要更复杂的输入/输出(I/O)接口. Flash 部件通常分为多个分区,允许同时进行多个操作(擦除某个分区的同时读取另一个分区).分区再划分为块(通常大小为 64KB 或 128KB).使用分区的固件可以进一步对块进行独特的分段 — 例如,一个块中有 512 字节的分段,但不包括元数据. Flash 设备有一个常见的限制,即与其他存储设备(如 RAM 磁盘)相比,它需要进行设备管理.flash 内存设备中惟一允许的 Write 操作是将 1 修改为 0.如果需要撤销操作,那么擦除整个块(将所有数据重置回状态 1).这意味着删除该块中的其他有效数据来实现持久化.NOR flash 内存通常一次可以编写一个字节,而 NAND flash 内存编写多个字节(通常为 512 字节). 这两种内存类型在擦除块方面有所不同.每种类型都需要一个特殊的 Erase 操作,该操作可以涵盖 flash 内存中的一个整块.NOR 技术需要通过一个准备步骤将所有值清零,然后再开始 Erase 操作.Erase 是针对 flash 设备的特殊操作,非常耗费时间.擦除操作与电有关,它将整个块的所有单元中的电子放掉. NOR flash 设备通常需要花费几秒时间来执行 Erase 操作,而 NAND 设备只需要几毫秒.flash 设备的一个关键特性是可执行的 Erase 操作的数量.在 NOR 设备中,flash 内存中的每个块可被擦除 100,000 次,而在 NAND flash 内存中可达到一百万次.
Flash 内存面临的挑战 除了前面提到的一些限制以外,管理 flash 设备还面临很多挑战.三个最重大的挑战分别是垃圾收集、管理坏块和平均读写. 垃圾收集 垃圾收集 是一个回收无效块的过程(无效块中包含了一些无效数据).回收过程包括将有效数据移动到新块,然后擦除无效块从而使它变为可用.如果文件系统的可用空间较少,那么通常将在后台执行这一过程(或者根据需要执行). 管理坏块 用的时间长了,flash 设备就会出现坏块,甚至在出厂时就会因出现坏块而不能使用.如果 flash 操作(例如 Erase)失败,或者 Write 操作无效(通过无效的错误校正代码发现,Error Correction Code,ECC),那么说明出现了坏块. 识别出坏块后,将在 flash 内部将这些坏块标记到一个坏块表中.具体操作取决于设备,但是可以通过一组独立的预留块来(不同于普通数据块管理)实现.对坏块进行处理的过程 — 不管是出厂时就有还是在使用过程中出现 — 称为坏块管理.在某些情况下,可以通 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |