为固态盘硬件制定计划是一项复杂的任务,要求充分地了解固态盘如何应用于存储网络环境中,因此你最好是先从阅读本系列的第一篇文章《SSD部署之企业应用和系统文件难题》开始,了解应用和软件方面的相关问题。
本文将谈到固态盘硬件问题,第三篇和最后一篇将谈到一些重要的固态盘设计问题,以及SAS和RAID控制器问题。
固态盘硬件通常有两种基本的接口类型:PCIe和光纤通道/SAS/SATA。每种接口都有自己的缺点和优点,了解两者的折衷是很重要的。
另一个问题就是固态盘管理。固态盘是应该被置于RAID控制器呢,还是通过其他接口进行连接?当然,固态盘性能是一个大问题,或者你根本就没有考虑过购买固态盘。我们都听说过一些基于闪存的固态盘存在损耗均衡和写入性能降级等性能问题。关于这方面的文章有很多,因此我就谈一些重要的细节吧。最后也是最重要的就是固态盘的可靠性。和往常一样,我们先从可靠性开始,对于企业数据存储用户来说,没有什么比可靠性更重要的了。
固态盘可靠性
我们都听说过,你向闪存单元写入的次数是有限的。这个数字根据不同的厂商和采用的是哪一代技术而大不相同,从每单元写入100000~1000000次不等,但是闪存单元的可靠性并不是固态盘的全部,我们在下一篇文章中将更深入地进行分析。可靠性的另一个关键因素就是固态盘的纠错码,它反过来会影响设备的硬错误率。硬错误率通常是针对磁盘驱动器来说的,是指扇区每位读取的错误率。对于企业级SAS/光纤通道驱动器来说,这个数字通常是每10的16次方个位有一个扇区错误,相当于每移动11PB有512字节(错误),如果你有1000个磁盘驱动器以100 MB/s的速度迁移数据,那么每33个小时就会出现一个故障。
这并不是一段很长的时间,固态盘的操作速度要比磁盘驱动器快得多,因此这可能会成为一个问题,但基本上使用1000个磁盘驱动器的例子很少见。真正要问的问题是,什么是硬错误率?厂商如何得出这个值的?主要的磁盘制造商了解潜在的ECC问题,有专门的可靠性工程师根据他们的介质设计来计算得出这些数值。对于所有固态盘初创厂商我还想问的另一个问题就是,他们的硬错误率是如何计算出来的?如果他们无法回答的话,那么说明它还不如企业级磁盘驱动器。
而且关于磁盘驱动器你要记住一点,固态盘的硬错误率与SAS/FC(注意,光纤通道固态盘很少见,因为固态盘是一项新兴的技术和行业趋势,驱动器的接口是SAS)和SATA固态盘都是不同的。企业级SATA磁盘驱动器的硬错误率远远低于SAS/FC(每10的15次方个位有一个扇区错误),非企业级SATA为每10的14次方个位有一个扇区错误。SAS/FC驱动器容量远小于SATA驱动器的原因之一就是,它的每个磁盘驱动器ECC更多,这就降低了密度,因为ECC空间是占用存储的。
除了硬错误率以外,你还要考虑另外两个因素:年故障率和每天的写开销。
硬错误率测量的是介质的故障率,而年故障率通常测量的是其他组件的故障率,用每年百分比表示。例如,企业级磁盘驱动器的年故障率通常小于1%。
因为在出现故障之前每个单元的写入次数是有限的,所以大多数固态盘在写入次数方面也是受限的。写开销通常基于设备的性能,在预期失效之前单元可以写入的次数,以及可以被重新映射到翻转值失效的单元的地址的空白单元的数量。企业级设备和非及企业级设备的写开销大不相同,因此通过固态盘类型和接口性能了解写开销是很重要的。如果你正在使用3Gb SAS (375 MB/s)或者PCIe 2.0 16道8GB/s,那么你的写开销需求就会有很大变化。我们将在下篇文章中具体谈到这一问题。
固态盘性能
不同的固态盘设备性能也不尽相同,并且通常是根据每秒读取和写入的MB/s或者IOPS来测量的。关于IOPS的一个重要问题就是,在厂商确定的IOPS性能下包的大小是多少?尽管读写性能有很大差别,但是一些厂商的写入性能比其他厂商更加接近于读取性能。这就是为什么了解你的应用要求很重要的原因。
固态盘的性能通常取决于使用的是3Gb还是6Gb技术。这是一个重要的性能局限,它不会影响到磁盘驱动器,因为单个的驱动器还没有快到要求6Gb技术,不过大多数驱动器厂商都开始采用6Gb,这样同一个通道就可以支持更多驱动器。考虑到固态盘的速度,采用6Gb技术对于企业级固态盘来说是很关键的。对于那些使用PCIe接口的固态盘来说,你需要确保固态盘性能没有超过PCIe插槽支持的范围。目前大多数小型服务器(Intel和AMD)都支持PCIe 2.0,8个PCIe 2.0甚至16个插槽都是很常见的。高端非Intel/AMD(IBM和Sun)服务器在部署PCIe方面比较滞后,因为需要设计和这些企业级服务器相关的复杂内存接口。如果你打算采用基于PCIe的固态盘,那么一定要确保你的服务器有满足或者超出厂商要求的PCIe插槽。
固态盘管理
固态盘的Smart并没有一个官方的标准,不管是SAS还是SATA。这意味着你必须了解每个固态盘专有的Smart数据的意义。当然,如果固态盘是用于RAID阵列的,那么阵列厂商在固态盘认证的时候就已经帮你搞定了这一切。我看到很多使用附加于标准SAS卡的固态盘用户存在一个问题,那就是一些厂商没有提供查看Smart数据的工具,即使你通过一些免费工具获取的Smart数据,你也无法知道这真正意味着什么。就我了解的一些厂商,如果他们有一款工具,那么这款工具就会有关于Smart值的定义,然后还设定了发送警报的上下限。当然,这在企业数据存储环境中是一个不错的工具,因为你希望在设备发生故障之前就有所察觉从而立即采取措施。
固态盘硬件接口
与SAS/SATA相比,PCIe的速度更快,但不管是PCIe还是SATA接口都允许从一台设备到另一台设备的故障转移。有一些厂商提供了外部PCIe通道扩展器,允许你通过卷管理器监控设备,但是我并不喜欢这种做法,因为这并不是一个真正利用了PCIe 2.0的好方法。也许我有些偏执了,但是我并不希望成为在生产企业环境(例如文件系统元数据)中尝试这种做法的第一人。
SAS与SATA之间的折衷比较简单,而且对于磁盘驱动器来说没有太大区别,但因为固态盘比普通磁盘驱动器更快,因此区别是很明显的。主要有以下一些区别:
·SATA驱动器不是双端口的,因此故障转移就是一个难题
·SATA在驱动器中处理更多的错误问题,因此命令处理的重试使得驱动器速度变慢,因为有更多命令问题需要处理
·考虑到命令包中的ECC(Error Checking and Correcting,错误检查和纠正)数量,SATA通道无法检测出的错误率要比SAS通道更高。这是一个重要的问题,因为这之间可能相差了4个数量级
如果你有一个企业应用,那么SAS是一个不错的选择。为你的应用选择一个合适的固态盘硬件类型并不是难,但关键的是架构设计。本系列的最后一篇文章将谈到固态盘的内部设计,以及它在RAID设备或者连接到SAS控制卡中的使用。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。