了解固态硬盘中的wear leveling技术存储与灾备

2013-03-18    来源:TechTarget中国    编辑:轶名
经过重复新的写循环后,flash内存将会出现损坏。制造商开发了一种wear-leveling技术来将新数据平均写入到整个内存设备当中,并且确保数据不会出错或者丢失。
  Flash内存是一种快速、廉价和可重复的存储方式,和U盘和数码相机一样,其在多种电子设备上已经成为一种不可或缺的基础技术了。最近,通过一级固态硬盘产品(SSD)的使用,其已经被应用于数据中心。

  但是经过重复新的写循环后,flash内存将会出现损坏。为了防止这种情况发生,制造商开发了一种wear-leveling技术来将新数据平均写入到整个内存设备当中,并且确保数据不会出错或者丢失。

  Flash存在的问题

  现在所有的flash内存单元在设计上,都只允许一定次数的写入循环。存储新数据过程包括更改flash内存设备上的bit位,首先需要将其归零,然后写入新的数据bit位。每次的写入过程都会对物理内存单元造成影响。

  在大约5000次写入循环之后(根据不同flash内存的设计和生产方式而不同),物理内存单元会变得不稳定。这种损耗会使得文件数据存储在一个不稳定的单元之中,而导致内存最终损坏。(这种损耗在可编程内存设备上是很普遍的,但是不会影响传统的动态随机读写内存[DRAM],其能够无限制性的刷新和重写。)

  有限的使用寿命仅仅是flash的一部分。Flash内存经常被用于替代磁盘空间,而大多数文件系统(比如传统的FAT和最近的NTFS)通常会在同样的区域进行数据写入。对于磁性媒介设备,比如硬盘或者基于DRAM的存储来说,这并不是问题,但是其很有可能引起flash内存的过早损坏。

  Wear Leveling的工作原理

  来介绍一下wear leveling。这项技术在flash设备的微控制器上使用了一种算法,来跟踪flash内存上存储空间的使用情况。这使得数据每次能够重写到内存中的不同地方,而不是一直写入到内存中的同一个位置。在理想状态下,wear leveling可以保证在重新使用空间之前,所有的物理flash内存空间都已经被使用过。使用这种方式,最大限度的使用了flash内存单元,而尽量减少了损耗的程度,所以可以保证flash设备的最长使用期限。但如果最终达到了最大使用次数,整个flash还是将会损坏。

  所有的wear leveling技术都要从建立同一种映射开始,其会将flash内存位置和操作系统能够识别的存储位置联系在一起,通常情况下是逻辑块地址(或者LBAs)。这之后,有两种可行的wear leveling方式:动态的和静态的。

  如果使用动态方式的wear leveling,需要更新的内存块空间将会被写入到其他内存块当中。使用算法更新映射来反映这种改变。之前的内存块只是被简单的标记为不可用,直到flash设备上没有其他可用的块时,它们才会被重新使用。那些没有被改动过的内存块会被单独留下来。动态wear-leveling方式的做法比较直接,而且相对来说速度更快。因此,动态wear leveling经常被用在简便的flash设备上,比如USB闪存。

  静态方式的wear leveling使用同样的方法来进行映射和移动变化的数据,但是现在wear-leveling算法会周期性地移动未变化的(或静态的)数据。这允许变化更为频繁的数据使用之前被静态数据占用的更新的、更少被使用的内存空间。由于更加复杂的算法会移动Flash设备中的数据,其性能有可能会比动态方式的wear leveling有所降低,但是可以改进静态方式的wear leveling可靠性。这对于针对这种企业级市场的SSD来说是至关重要的。

  IT经理们将会需要选择支持wear leveling技术的闪存盘,以达到性能和操作可靠性之间的平衡。

1
3