Linux flash文件系统剖析

http://tech.ddvip.com   2008年06月10日    社区交流

内容摘要:本文将向您介绍 Linux® 的 flash 文件系统,并探索它们如何通过平均读写(wear leveling)处理底层的可消耗设备(flash 部件),并鉴别各种不同的 flash 文件系统以及它们的基本设计。

  这两种内存类型在擦除块方面有所不同。每种类型都需要一个特殊的 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 内部将这些坏块标记到一个坏块表中。具体操作取决于设备,但是可以通过一组独立的预留块来(不同于普通数据块管理)实现。对坏块进行处理的过程 — 不管是出厂时就有还是在使用过程中出现 — 称为坏块管理。在某些情况下,可以通过一个内部微控制器在硬件中实现,因此对于上层文件系统是透明的。

来源:developerWorks 中国    作者:M. Tim Jones    责编:豆豆技术应用

正在加载评论...