什么是磨损均衡算法?固态硬盘在原理构造上基本上和我们应用普通机械硬盘有很多相似的地方,比如模拟扇区、模拟磁道等。在固态硬盘内部,最核心的部分就算控制器了,它是整个固态硬盘的核心,里面包括很多构架,比如读写算法、接口定义等。主要影响寿命的就是读写次数,在固态硬盘的算法定义中,修改一次才算一次真正读写。由于Flash具有擦除次数有限、先擦后写的特点,会带来使用寿命有限的缺陷.为延长其预期使用寿命,普遍采用磨损均衡算法对各存储单元进行管理。均衡算法的核心在每次写操作时将新数据写入到最少被使用的物理块中,来达到整个固态硬盘存储介质的均衡,特别对算法在垃圾回收策略和对静态文件管理方式上的优化,可以大提高整个固态硬盘的寿命,垃圾回收时在遵照磨损均衡原则的前提下提高写入数据效率,同时增强算法对不同类型的文件存储单元管理能力,从而达到更加有效的磨损均衡。 分析咋一看,似乎固态硬盘的寿命问题就此搞定了。按三星的算法,一块SSD硬盘用6年没啥问题。仔细分析一下问题来了: Windows XP系统会在磁盘上建立一个虚拟内存文件,这个文件读写非常频繁。每秒钟写上数M都是很正常的。 那么这些数据会如何写入? 磨损均衡算法,每写一次数据,实际上写到最近最少写的块中。 flash典型的一个块是8K,假设现在SSD硬盘上的虚拟内存文件大小是32k,占用了块:1,2,3,4。在t0时刻,OS要求写入16K后,磨损均衡算法找到了90,91这2个块,提供写入,此时虚拟内存文件占用的块就是:1,2,90,91。 这样是不是很完美呢?其实不然,虚拟内存文件必须有个索引表,记录下它占用了哪些块,这些块的顺序如何等等。在FAT格式中下就是FAT表(下面以FAT分析,其他格式文件系统都有类似的机制),这个表也需要空间来存储,也就是说FAT表也是写入的。那我把这个类似FAT的相关记录也修改不就行了?没错,也要修改,修改后的FAT就不能在的原来的位置了,这个FAT既然不在原的位置,就需要记录它的位置,否则OS下次来就找不到FAT的位置。这样一来,就又要修改FAT的记录位置,又导致记录FAT的块也要移动。如此循环,永无止境。 我分析下来,SSD盘应该不是这样实现磨损均衡算法,很可能是FAT表实际位置不会变化,这样的一个问题就是FAT表是系统的一个瓶颈,它会最先被破坏掉。