扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
固态硬盘以高于硬盘驱动器几倍的性能而著称,但是很少有人知道固态硬盘的性能可能会随着时间而降级,有基准测试显示新的固态硬盘比使用了一段时间的固态硬盘性能更高。
这个问题是企业用户在作存储购买决策时候需要考虑的一个重要因素,同时这也为那些开发在长时间内保持稳定性能的固态硬盘产品的厂商带来了机会,这其中就包括Fusion-io、Pliant和STEC。
固态硬盘和半导体市场分析公司Pbjective Analysis分析师Jim Handy表示。固态硬盘具有一个硬盘驱动器没有的难题——闪存必须在新数据写入之前被擦除。
Pliant营销副总裁Greg Goelz表示,随着更多数据被写入到NAND闪存,应用以不同读写速率访问设备,固态硬盘会随着时间推移而发生严重的性能降级(高达50%甚至更多)。
Goelz表示:“这种性能降低将会给任务关键、I/O密集型的数据中心和高性能计算环境带来大问题,这些环境要求在长时间内和不同工作负载下具有连续和可预知的性能水平。”
NAND闪存存在的问题
一个NAND闪存单元是一个小型电子存储设备,由于编程和擦除单元所带来的影响,它的使用次数是有限的。在一个编程/擦除事件中,NAND闪存单元可能会降级到一个点上,这时候过多能源被限制在这个单元中。
Fusion-io产品营销高级副总裁Lance Smith表示:“这意味着这个单元不能被耗尽而且被限制在全状态下。”
与传统硬盘驱动器不同的是,固态硬盘必须避免在相同的位置重复写入,否则一个单元就会发生损耗。固态硬盘设计者可以通过在重复写入到相同位置之前在整个驱动器的存储空间中写入来避免这个问题。这被称为“损耗均衡”。
有一个不错的设计可以通过提前擦除确保写入操作不会因为等待擦除操作而推迟,否则写入性能将会收到擦除率的限制而大大降低。
为了解决这个问题,包括Fusion-io在内的固态硬盘制造商已经开发除了一种损耗均衡算法来创建一个提取层。
Smith表示:“在这里,你有一个逻辑块和一个物理块。”
逻辑块在执行每个写入操作的时候将数据指向一个不同的物理单元中,确保信息不会被擦除且单元的长时间损耗是均衡的。一个后台维护应用(被称为groomer)回收擦除数据块,并按需地在NAND闪存芯片之间迁移数据,最大程度上利用空间和确保数据不会被擦除。
但是,这个grooming流程本身可能会导致在与新数据结合确保NAND闪存芯片数据完整性的时候数据速度降低。
过量配置提供了一个解决方案
Smith表示,Fusion-io通过允许用户过量配置解决了这个问题,根据他们的写入需求提供了额外的grooming空间。
Fusion-io 80GB ioDrives的工厂配置提供了20%的过量配置以适应企业环境中的常见用途。
然而对于写入密集型应用来说,用户可以将过量配置的比例提升到40%、50%或者60%来满足他们的需求。这样,用户就可以利用写入周期所需的空间来实现最大程度的精确性。
持续固态硬盘性能
Pliant和STEC都开发出采用了专门提供长时间稳定性能的控制器和固件的固态硬盘。
Plaint最新的企业闪存驱动器(EFD)具有一系列独特的功能和技术来避免性能降级。
Goelz表示:“我们的EFD的持续I/O性能是现有最快固态硬盘的2~4倍,在长时间内不同工作负载下提供了持续的、可预知的系统性能。”
这款EFD可以在读取或者写入数据的时候维持稳定的性能水平,即使企业应用具有不同的读取写入速率。
Goelz表示,Pliant的EFD是唯一一个能够在后台透明地执行持续内存回收这样的常见任务和其他数据完整性管理功能、而不会影响I/O性能的解决方案。
它还可以透明地管理一系列更高级的任务,包括后台Patrol Read,三倍冗余ECC保护元数据,扩展ECC确保数据完整性的同时不影响性能。
Pliant的SAS接口能够让EFD以高于单端口、半双工SATA接口连接带宽4倍的速度执行现有读取和写入操作。
STEC的方法
STEC固态硬盘技术营销高级经理Scott Shadley表示:“STEC的驱动器几乎被所有主要存储OEM厂商采用的原因有很多,其中性能是最重要的一个。”
他说:“我们的驱动器设计以解决现存于很多固态硬盘产品中的性能问题。”
“我们是如何做到的?我们的驱动器设计在主机系统下不存在任何类型的空闲时间。这是非常关键的,因为一个存在‘空闲时间’的驱动器将会有不同的性能参数。”
Shadley表示,STEC驱动器基于特定的IP和技术进行操作,允许驱动器内的所有操作同步进行,同时不会影响到主机。
STEC的驱动器还采用了嵌入式控制器和自主开发的固件,允许驱动器接受主机命令,在驱动器内迁移数据,执行ECC和其他后台操作,同时不影响主机系统的吞吐量或者性能,实现这一点与一系列主机驱动器接口内操作相关的重要设计是分不开的。
驱动器内部的原始介质功能被有意地分离开来了,在接口出现速度降低的情况下根据主机信号进行缓冲,这防止了驱动器性能的降低。