摘要两年多的时间,PCIe SSD市场经历了风云突变,之前几家专注于该领域的厂商几乎都被硬盘或闪存大厂纳入麾下。对用户而言,需要做的就是擦亮双眼,多测试,多借鉴才能找到真正适合自身业务应用的加速神器。
我们在十几年前开始使用U盘时,只看到它的便携与易用,估计很少有人能意识到闪存蕴藏着巨大的性能潜力。
今天,包括PCIe SSD在内的闪存存储在企业级应用中的普及,归根结底要归功于半导体技术的发展。一方面,CPU性能越来越快,而发展缓慢的硬盘越发显得跟不上;另一方面,以NAND闪存为代表的半导体存储容量密度增大,而且越来越便宜。当那个拐点的时间到来,人们发现用小小的SSD就能顶上几十,甚至上百块硬盘的性能。
在企业级SSD发展初期,更多的应用形式是安装在EMC等存储系统厂商的阵列中,替代磁盘的SAS SSD;或者服务器里面使用的SATA SSD。它们能够与传统硬盘控制器良好兼容,但当时主流的SATA和SAS接口带宽只有3Gb/s或者6Gb/s(300-600MB/s),如今12Gb/s SAS还没有普及,而x8 PCIe 2.0的理论带宽已经达到4GB/s,PCIe 3.0更是翻了一倍。
曾经是PCIe SSD单卡容量之冠的Fusion-io ioScale 3.2TB。当年它从Facebook走出,带有为互联网行业定制,高性价比的特点。令人可喜的是,今年全球率先达到单卡6.4TB容量的宝存科技是一家国内厂商。
此外,针对传统硬盘设计的SAS控制器自身也存在性能瓶颈,那么“有路何须搭桥”?直接将闪存做到PCIe卡上,显然速度和延时都会更好,服务器的存储架构也会变得更加简单,甚至实际量产的成本都会降低。
这就是今天PCIe SSD越发流行的原因。
产品架构之间的PK
PCIe SSD从产品架构方面来分,包括FPGA/ASIC原生控制器方案和SAS IOC转接SAS/SATA SSD两种方式。
尽管笔者一直不看好SAS转接方案的长远发展,但兼容性好和成熟的架构是它最大的优势。产品形态就是把SAS控制器连接的多个SSD盘RAID 0做在一张PCIe卡上,因此它们的Firmware(固件)和主机端驱动与SAS HBA基本通用,兼容绝大多数的服务器、各种操作系统版本都没有问题。
SAS转接方案的PCIe SSD现在很少宣传其性能,毕竟这方面对比原生PCIe闪存控制器没有优势。不过,如今几乎所有PCIe闪存卡的性能对企业级客户都不是问题。因此,目前市面上Oracle Exadata数据库一体机就用的SAS转接PCIe SSD。最近还有国内云和恩墨用EMC ScaleIO分布式SAN软件搭建的Oracle预集成系统。
总的来说,SAS转接PCIe SSD的多芯片控制方案从效率、成本上都不占优,因此,我们几乎只看到LSI这一家先天有利的厂商(该部门如今已卖给希捷)在该领域表现尚可。Intel做了一段过渡的SSD 910,今年也推出自有ASIC控制器的NVMe产品了。
FPGA(现场可编程门阵列)的特点是设计灵活性强,在现有的芯片上通过不同的软件就可以定义出差异化的闪存卡(盘),并且易于升级。这种低门槛方案非常适合中小规模的厂商。FPGA芯片的缺点是封装尺寸和发热量比ASIC较大,数量达到一定规模后,成本不如ASIC。代表厂商是PCIe闪存卡领域的先行者,被SanDisk收购的Fusion-io,被HGST收购的Virident,以及国内的Memblaze和Shannon宝存科技等。
当PCIe闪存卡向着容量越来越大、性能越来越高的方向发展,单卡的功耗就容易超过普通PCIe插槽的25W限制。像SFF-8639尺寸的2.5英寸驱动器形式,插在服务器的前端密度更大,还要注意散热的问题,这时功能相对固定,但功耗较低的ASIC就体现出价值了。只是设计出一颗优秀的ASIC,仅仅是流片成功都要付出巨大的成本。目前比较多见的原生PCIe SSD ASIC,有被芯片厂商PMC收购的IDT产品线,曾用于美光(Micron)的卡和盘。再有就是Intel和三星这样的巨头,还有Marvell和几经转手被希捷收购的SandForce。尽管后者的原生PCIe SSD控制器应该还不能量产出货,但对价格和技术门槛要求低,向来是他们的优势。
用户最该关注什么?
对于用户而言,他们应该如何衡量一款PCIe SSD呢?笔者将从兼容性、可靠性和可用性、性能和本地化支持服务等方面进行衡量。
1.软硬兼容性
软件兼容性与上述所讲的产品架构有关。无论FPGA还是ASIC方案,PCIe SSD的硬件做出来,产品好坏的关键还是在于软件。这里说的软件包括Firmware和驱动两部分。许多消费级SSD,Firmware在控制器厂商提供的公版基础上改改就可以卖了,SATA盘也不需要开发驱动。在NVMe(稍后会专门介绍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的长期考验,但它对于许多用户来说还属于新鲜事物。特别是国内外初创厂商的产品,其中也有表现好的,但为了便宜,有可能会承担更大一些的风险(尽管这不是绝对的)。为了保险起见,建议还是多做测试。另外就是看看其他用户使用的反馈情况。
可用性:可从两个方面来看,一个是由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的闪存盘。
另外,在升级SSD Firmware的时候会不会出现数据完整性的风险?尽管用户的重要数据一般会有备份,但能不用恢复的办法总是更方便的。
3.性能
其实PCIe SSD性能普遍能够满足绝大多数用户现有的需求(+关注网络世界),因此本文中不想罗列厂商们经常挂在嘴边的那些性能数字。
闪存卡一直宣传高带宽、高IOPS和低延时(无论随机还是顺序访问),但用户的体验往往不是以测试最高带宽、最高IOPS为基准的。首先,一般用户使用峰值也就15~20万IOPS,但低延时的价值会非常明显,读写的平均和最大延时会直接影响用户体验。
4.本地化支持服务
本地化服务的能力,以及响应时间是每个用户所关注的。如果同样是初创厂商,相对而言国内公司在这方面会有先天优势。特别是在产品的第一、二代还没有完全稳定成熟的情况下(毕竟都要经过这个阶段),服务支持能力就显得更加重要。
甚至有PCIe SSD厂商的受访者表示:“用户只关心稳定性及本地化支持。”
此外还有对用户数据库、虚拟化应用支撑团队的支持。这里有个例子,某国际存储巨头去年曾对国内媒体说,BAT中的某一家“再也不会从之前的PCIe SSD供应商那里买卡了,理由是用户需要数据库方面的支持时跟不上,而他们则有DBA专家来协助用户/合作伙伴解决存储本身之外的问题”。(这家巨头自己并不造卡,但可以转售或者加上闪存缓存软件来卖。)所以,PCIe产品对用户数据库、虚拟化应用的技术支持,也是用户需要考虑的因素之一。
NVMe横空出世
NVM Express(NVMe)是一种为企业级、客户端系统所用的PCI Express SSD而专门设计的高性能、可扩展主机控制接口。它由Intel等十几个发起成员公司领导,以及数十个成员组成的行业联盟共同开发。
NVMe主要解决的问题,或者说好处主要包括以下几点:
(1) 标准化的驱动,比如较高版本的Linux内核集成通用的NVMe SSD驱动程序。
(2) 精简优化的存储堆栈,提高效率。比如支持更大的队列深度、MSI-X将IO产生的中断更好地分配到多个CPU核心上,避免出现性能瓶颈。
(3) NVMe还有个好处,就是它不仅盯着NAND闪存,还宣称考虑了下一代性能更高的非易失性半导体存储介质。就眼前来看,已经有人拿DRAM放在NVMe卡上跑Demo,也有厂商做出了类似的产品。
除了性能考虑、驱动层面对热插拔更好的支持之外,如果各家的PCIe SSD都同样使用操作系统自带的驱动,无疑对用户是个好事情——至少能减少许多测试和验证工作。但另一方面,SSD个性化的增强功能目前主要是状态监控,乃至于进一步增值的缓存软件、RAID支持等,都可能要依赖厂商专门的驱动。如果是带来同质化的结果,最后比拼供应链和成本,这个市场剩下的估计只有三星、美光等NAND闪存厂商和Intel这样的业界巨头了。
戴尔是率先支持SFF-8639规格PCIe SSD的服务器大厂。如上图:尽管长得像盘,但它与主板通信走的也是PCIe信号。
NVMe最初是在Fusion-io一家独大的情况下出现,到如今PCIe SSD百花齐放的时代,NVMe产品也接近成熟。但由于各家厂商的利益不一致,对NVMe支持的力度也不尽相同。
针对NVMe,几位受访者的观点值得关注:“美国人和国内对于NVMe的态度、普及时间上有些差距。美国人觉得NVMe没有那么快成熟,而且热插拔没有行业标准,暂时还不可靠,产品之间不兼容,感觉国内几大家都已经要扑上去了。”
“注意各家的驱动不兼容都不是用的原始驱动,因为性能不够。而且目前价格真的不便宜。”
“某国外服务器厂商对NVMe的支持推迟到2015年下半年,可能仍会延期。因性价比还不如任何一家‘非标准’的PCIe SSD。”
在PCIe SSD消除了性能瓶颈之后,如何消除单点故障是许多用户接下来会考虑的一个问题。如果只是作为加速缓存或者放临时数据还好,而其他数据怎么保护呢?这也是PCIe SSD和传统磁盘阵列,乃至闪存阵列之间的一个重要区别。
PCIe SSD的性能给OLTP交易型应用带来的效果最明显,传统的共享式磁盘阵列面临着被颠覆的可能。因此,我们现在一方面看到DBA在研究闪存,另一方面有的国内闪存厂商甚至招募了多名Oracle ACE高手来推动解决方案的研发和销售。
回顾这两年来PCIe SSD的发展历程,可以发现这个市场变化是非常巨大的。当时的很多热门厂商如今都被收购了,Fusion-io被SandDisk收购,LSI被Avago收购,闪存业务后来又被转手卖给了希捷,而Virident被WD-HGST收购了。这些新兴闪存厂商几乎都是被之前以消费级产品为主的硬盘厂商或闪存大厂给并购,而SSD正是对传统企业级高转速硬盘威胁最大的。可以预想,未来的企业级SSD市场竞争将会更加激烈。
目前PCIe SSD厂商们仍在加强竞争力,包括把卡做稳定,对所有系统提供兼容性及支持。由于这些东西慢慢都能做上来,所以以后做卡的厂家会越来越多。现有的闪存卡厂商都开始往解决方案及闪存阵列上转型了。
关于全闪存阵列,国外已经有许多比较成熟的产品,而且传统阵列厂商和初创公司(其团队基本上也来自前者)都盯着这块大蛋糕,可谓竞争激烈。PCIe SSD厂商如果想进入这一领域,需要比较大的决心和勇气。
新浪微博的闪存经验谈
大约两年多以前,微博开始风靡全中国,对于微博用户而言,带来的是移动互联网的新体验,而对于新浪微博的后台运维工程师来说,这种飞速增长的业务着实令他们感到棘手。
据新浪研发中心平台部杨尚刚所说,在2011年,新浪微博业务增长非常快,导致某些地方遇到了性能瓶颈。在当时,对SATA SSD的熟悉程度也不高,因此尝试了PCIe SSD。杨尚刚表示:“新浪当前持有的PCIe SSD在百片级别,主要应用在数据库业务上。使用过程是从最初直接使用PCIe SSD作为存储,中间部分用PCIe SSD作为缓存加速,最后还是将其作为存储来用。”他坦言,PCIe SSD确实解决了新浪微博遇到的很多问题。
PCIe SSD最初的应用场合一般都是在互联网企业,而经过这几年的发展,该产品在技术方面逐渐成熟,且加入该市场的厂商越来越多,同类产品之间的差异化也越来越小。杨尚刚表示,目前PCIe SSD基本可以满足大多数用户的存储需求。杨尚刚认为,SSD未来的应用场景是非常广阔的,他比较看好的是公有云和NoSQL上应用SSD。
作为资深的PCIe SSD用户代表,杨尚刚认为,用户再考虑购买一款PCIe SSD时需要考虑以下几点:
1.IOPS和延迟时间,以及这两个技术指标的稳定性。因为很多产品的平均时间都可以达到,但是在稳定性方面还是有差距的。
2.PCIe SSD本身的稳定性,这主要体现在故障率上。
3.此外,还需要考虑的就是成本问题和SSD的寿命问题,这需要用户进行充分的寿命测试,根据磨损程度来判断寿命。
4.最后,要关注数据的安全性问题,要看产品是否能够支持端到端保护和掉电保护都安全机制。
杨尚刚表示,在关注具体的技术细节的同时,用户还要多参考一些业界的使用案例。
其实,虽然有关闪存的讨论一直比较火热,而且市场竞争也变得更加热闹,但是杨尚刚表示,PCIe SSD还是有很多不成熟的地方。他说:“新浪在两年以前开始使用PCIe SSD,但是后来基本没有采购类似产品,还是主要以SATA SSD为主,这个和BAT一样的,PCIe SSD还没有那么的成熟。”在他们的使用过程中,遇到过一些由PCIe SSD固件本身的bug导致的不可用,不过细节方面他并没有透露。另外,杨尚刚表示:“现在各家PCIe SSD厂商都是用的自家的私有协议,通用性比较差,规范化不够,而且不支持热插拔”。杨尚刚认为,未来一两年内,SATA SSD在成本方面还是非常有优势的,所以,除非有特殊的高性能需求,他会优先考虑SATA SSD。
“冷水”虽泼完了,但不可否认的是这个市场会持续前进,一方面技术不断成熟,一方面产品价格也会有所下跌,对用户而言总归是利好的消息。