为了延长闪存驱动器的寿命,传遍了整个设备尽可能均匀写越好。
旋转式磁存储技术已经为我们服务好长一段时间。它提供了高容量(为“高”的不断增加值),相对快速和相对统一的访问时间,以及相对良好的可靠性。人们普遍接受的是,旋转盘将是我们一段时间系统的一部分呢。对于较小尺寸,然而,盘正越来越多地通过预留固态闪存推 - 与“小”是一个不断增加的价值,以及。Flash是更紧凑,需要更少的电力,并提供真正的随机访问,所以这并不奇怪,看看它部署在更多的情况。
Flash是不是没有缺点。其相对较高的成本限制了它的应用和它带来了自己的一套必须理解和文件系统开发解决怪癖。即便如此,一些特殊用途的笔记本电脑依靠闪光灯的持久存储现在需要的,并且有在不久的将来,更多的基于闪存的系统的传闻。
上面提到的“怪癖”的最显著是:
- 闪存存储不能简单地改写像磁存储;相反,闪存块必须被明确地擦除并在两个独立的步骤重写。由操作系统所理解的“擦除块”的大小可能不匹配的块大小;通常,擦除块是比较大的。
- 是有限制的次数闪速存储器的块可擦除和它失去的能力可靠地存储数据之前重写的次数。该限制一般在10万次。
这些硬件功能有一些有趣的含义。什么,例如,发生在操作系统决定重写一个更大的闪存擦除块内的单块?甲幼稚执行将读出的全部擦除块,执行擦除操作,然后写与包括新的部分数据返回。如果系统走下来在这个操作过程中,但是,所有的擦除块中的数据可能永远失去。如果操作系统忽略块的寿命问题,它比其他人可能周期一些擦除块更频繁了,显著缩短了设备的整体寿命。当一个处理一个低占空比设备,如USB拇指驱动器,它可能逃脱忽略局限性闪光灯。当闪存驱动器是主存储装置,但是,更智能的方法被称为为。
作为聪明的是通常使用这是明确设计为带闪光灯的硬件以及工作文件系统的问题。这些文件系统可以用非常谨慎的其他文件系统必须在块的布局方式分配的 - 没有寻求与闪存盘时间或旋转延迟的问题。在另一方面,闪存感知文件系统必须考虑擦除周期被写入;这些周期中它们不能冒险丢失数据,他们应该努力在整个驱动器传播这些周期最大限度地发挥其寿命。
最终的结果是专为闪存设备的文件系统把日志结构方法。该装置被当作一种循环缓冲器的,与新的数据总是被写入到最后。这种方法使得快速写入操作,而读取端可以是一个更复杂的故事。采取一种方法是一些元数据附加到每个擦除块描述哪些文件块属于及其版本号。当擦除块被重写,一个新的副本是在具有较高版本号的结束作出;读取文件仅仅是寻找具有最高版本号擦除块的问题。
发现该块需要扫描磁盘 - 其中,最有可能的,一个不希望每一个读操作做一些事情。内核中的文件系统JFFS2由当文件系统被安装在执行扫描解决了这个问题。它建立一个存储器内数据结构,其大大加快后续访问。是有成本的,虽然:初始扫描可以使安装速度慢,并且在内存中的树可能需要相当大的空间。由于闪存的文件系统通常用于小型,嵌入式系统 - 其中两个启动时间和内存都处于溢价 - 这些费用显著。
乔恩恩格尔认为他在的形式更好的办法LogFS文件系统,目前提议列入到主线。背后LogFS的核心思想是,而不是在安装时建立文件系统树,文件系统代码应该存储在设备上的树,就像传统的文件系统做的。把树中的闪存设备上减少安装时间(JORN说的OLPC系统从JFFS2下3.3秒前进到60ms的下LogFS),并应显着地减少运行时存储器的要求。
上闪光树看起来很像由EXT2所用的结构。还有在它是如何管理的一些差异,但是。文件系统的日志结构意味着块不能到位被改写;块被更改,任何时候必须移动,并写入到一个新的位置。如果有指针的移动的块(考虑用于存储的较大的文件布局中的通常的间接块),含指针块也必须改变,并且因此移动。这反过来,将需要在树的上一级变化。因此,在树的底部将会改变一路向上传播到根。这是“流浪树”算法。优势之一是,直到根被改写旧的文件系统结构依然有效 - 崩溃可能导致最后操作的损失,却会留下以前的数据和文件系统的完整结构。
其实管理整个目录树作为一个流浪树将是昂贵的;除此之外,有多个硬链接文件,打破了树结构,使流浪树木更难实现。因此,通过LogFS执行实际的树刚刚有两个层次。存在包含对每个文件和在文件系统中存在的目录索引节点的结构的“索引节点文件”;然后每个inode指向拿着文件的数据相关的块。目录条目包含一个简单的整数索引施加inode中的索引节点文件中的偏移量。所以改变一个inode只需要编写索引节点本身和inode的文件;目录结构的其余部分不需要被感动。
为了将其结合在一起,LogFS集预留一组块为“锚区域”,其中版本指针根inode可以找到。挂载文件系统需要扫描这种定位的区域查找当前版本根inode,此时的文件系统的其余部分为访问。该机制允许根至以恒定时间发现,而无需扫描整个设备。
LogFS每次已经通过几个回合的审查,显著的变化。除非显著的问题,应该已经接近准备好了,也许它会及时被合并为2.6.23。
了解更多关于这个话题
这个故事,“内核空间:闪存设备的新的文件系统”最初发表LinuxWorld-(美国) 。