这是因为现在磁碟机的IO频宽已经很快,但是受限于磁头磁轨移动的机械动作加速有限,和磁碟转动到所需的磁区也需要的时间,让机械动作比较少的连续磁区读取,速度远比需要大量机械动作的随机读取快。但是根据研究,
unix的档案系统,约略80%是8K以下小档,分散在各地的小档,会造成大量随机读取,而让磁碟I/O明显变慢。 LFS就是想解决这样的问题。
LFS为了能充分地利用磁碟I/O频宽,减少随机读写,他定义了Segment为基本的磁碟存取单位,Segment 是由连续的小磁区组成,大小为512KB(1024个磁区)。 LFS假设系统有足够大的快取记忆体,让磁碟机的动作会集中在写入(因为读取大多会从快取),因此我们只要把小档集中起来成为一个个segment 大小再集中写入,就可以理想上使用100%磁碟频宽。
顾名思义,LFS本身就是把档案系统当成一个巨大的log,它的好处是可以很容易处理异常关机产生的问题,只需要检查最后写入的磁区就可以。但相对有个缺点,就是必须保持log尾端有足够的free space 才能新增/异动档案。因此,一但log 满了,就必须清理log中所有删除的档案来释放空间,并且把空出来的空间往后移,移到尾端再利用,这个动作称做Segment
Clean。
此外,LFS 虽然把小档案clusted 起来成为Segment,让写入效能大增,但读取时仍可能需要到各个Segments中读取小档,由于Segment是很大的IO单位,造成IO瓶颈。当快取没有这些档案,读取效率就会变慢。这些都是有待改进的地方。
Linux
对数结构闪存文件系统(Linux log-structured Flash file System,LogFS)是在Linux上,使用对数结构,并可扩展的闪存文件系统之一,打算用于大容量
闪存存储设备上,并与UBIFS相互竞争,作为JFFS2的后继文件系统之一。这个文件系统主要是由Jörn Engel,部分是由Linux消费电子论坛(CE Linux Forum)所撰写。
截至2008年11月,LogFS的测试包终于能够通过所有的测试案例──这表示LogFS趋于成熟。但是由于还有大量的开发工作正在进行,目前在业界还没有任何已知的系统安装LogFS。