对于用户而言,他们应该如何衡量一款PCIe SSD呢?笔者将从兼容性、可靠性和可用性、性能和本地化支持服务等方面进行讨论。
1.软硬件兼容性
软件兼容和产品设计架构有关:包括FPGA/ASIC原生控制器方案,和SAS IOC转接SAS/SATA SSD模块的表现不同。无论FPGA还是ASIC方案,PCIe SSD的硬件做出来,产品好坏的关键还在于软件,这里说的软件包括Firmware和驱动两部分。许多消费级SSD,Firmware在控制器厂商提供的公版基础上改改就可以卖了,SATA盘也不需要开发驱动。在NVMe之前,由于企业级SSD没有这方面通用的标准,因此每家厂商都要提供自己的SCSI块设备驱动。
硬件方面,相信这个领域中的厂商几乎都遇到过PCIe SSD插在某款服务器主板上不兼容的情况,这可能就会涉及到Firmware的bug,或者说需要为兼容性做些改动。必要的时候,与服务器/主板厂商对接联合解决问题应该也是有的。
至于操作系统,目前该类产品以互连网和电商行业用户为主,大都是Linux,但具体有RedHat、Debain/Ubuntu等几大发行版分支,各种不同的update小版本和Kernel。能否良好兼容每家用户具体使用的版本,乃至于对用户定制化Linux版本的支持力度,都是很现实的问题。
2.稳定性、可靠性
谈完了软硬件兼容性,只是过了第一关,毕竟产品能用不等于一定就好用。R.A.S.这个常用的概念分别表示可靠性、可用性和可服务性。
可靠性:对于闪存产品来说一个是写寿命,因为NAND有自身的PE Cycle(编程/擦除周期)限制。SLC、MLC(包括消费级的cMLC和企业级eMLC)、TLC闪存的结构和制造工艺导致它们能容忍的写入次数不同,3D NAND理论上对寿命有益但实际效果还有待观察,磨损均衡算法也会影响到写入放大率。另一方面,用户放在SSD里的数据如果丢失或者出错也不是个小问题;在消费级SSD上出现过的“8MB变砖门”,以及长期不读取的数据访问性能下降(信号变弱?)这类问题,在企业级产品上也是有可能遇到的。
设备的形态,以及系统中可能要插多块卡/盘的密度,决定了对PCIe SSD的散热措施不可能像CPU被“照顾”的那样好,不同服务器系统的局部风量(单位是LFM)也是不同的。我们曾听说有的FPGA方案PCIe SSD能达到90℃以上的高温(应该是表面温度),如果散热设计不好会导致闪存卡过热,对闪存卡寿命以及数据存储有影响?
接着引出一个价值点:部署多了,用户需要对闪存卡的性能,寿命,温度有统一监控管理软件,或者闪存卡厂商对用户的网管平台能提供统一接口定制。
尽管PCIe SSD在近些年接受了Facebook等大客户和OEM的长期考验,但它对于许多用户来说还属于新鲜事物。特别是国内外初创厂商的产品,其中也有表现好的,但为了便宜有可能会担更大一些的风险(尽管这不是绝对的)。为了保险起见,建议还是多测试没坏处,另外就是看看其他用户使用的反馈情况。
可用性:我也想分成2方面。一个是(由SSD)导致的停机时间,即使闪存卡/盘做得再稳定,服务器也难免会遇到异常掉电的情况。为了提高写入性能和降低延时,SSD通常都会用少量DRAM内存来作为缓存,这也是我们看到厂商公布的写延时低于读延时的原因。有些SSD把元数据放在内存里也有助于提高性能。
企业级产品为了保护异常掉电时内存中数据的完整性,通常会有电容能将内存里的数据备份到闪存。不过再次加电时往往需要一个元数据校验的恢复时间,就像文件系统的fsck检查那样。不同品牌和型号,这个有的1-2分钟,也有的8-40分钟。当然它不会影响最终数据的完整性,如果用户机房的UPS比较好的话也许可以不在意吧。
另一方面,NAND闪存介质的特点,决定了它的写入性能不会像磁盘那样精确地稳定。从FOB到稳态之间的随机写IOPS差距不小(当然降低后也远高于HDD)。我们认为,IO稳态写入时是否有过大波动?IO稳态写入是否有数据库异常的现象出现?在极端偶然的特定情况下,如果IO性能突然降低,可能造成系统宕机的风险。这些都会影响到用户的使用体验。
可服务(维护)性:因为PCIe闪存卡更换需要关机,再开机箱盖对用户传统体验有影响,这才有了SFF-8639接口,支持热插拔;当然也有NVMe(本身对硬件形态没要求,这里指的也是8639 2.5英寸盘),但对热插拔背板等硬件及系统(包括主板BIOS)版本都有要求,所以现阶段比较靠谱的还是SFF-8639的闪存盘。
图2:戴尔是率先支持SFF-8639规格PCIe SSD的服务器大厂。如上图:尽管长得像盘,但它与主板通信走的也是PCIe信号。
另外,在升级SSD Firmware的时候会不会出现数据完整性的风险?尽管用户的重要数据一般会有备份,但能不用恢复的办法总是更方便的。
3. 性能
前面我们表达过PCIe SSD性能普遍满足绝大多数用户的现有需求,因此本文中不想罗列厂商们经常挂在嘴边的那些性能数字。
闪存卡一直宣传高带宽、高IOPS和低延时(无论随机还是顺序访问),但用户的体验往往不是以测试最高带宽、最高IOPS为基准的。首先一般用户使用峰值也就15-20万IOPS,但低延时的价值会非常明显,读写的平均和最大延时直接影响用户体验。
4. 本地化支持服务
本地化服务的能力,以及响应时间是每个用户所关注的。如果同样是初创厂商,相对而言国内公司在这方面会有先天优势。特别是在产品的第一、二代还没有完全稳定成熟的情况下(毕竟都要经过这个阶段),服务支持能力就显得更加重要。
甚至有PCIe SSD厂商的朋友表示:“用户只关心稳定性及本地化支持。”
此外还有对用户数据库、虚拟化应用支撑团队的支持。这里给大家讲个笑话:某国际存储巨头,去年曾对国内媒体说BAT中的某一家“再也不会从之前的PCIe SSD供应商买卡了,理由是用户需要数据库方面的支持时跟不上,而他们则有DBA专家来协助用户/合作伙伴解决存储本身之外的问题”。注:这家巨头自己并不造卡,但可以转售或者加上闪存缓存软件来卖。