存储 频道

解密企业级SSD的可靠性设计,一起来看

  【IT168 资讯】性能优异的SSD已经获得越来越多用户的认可,因为针对市场的不同,SSD的性能、价格乃至背后的技术、设计和制造工艺都有不同。按照应用场景的不同,可大致分为三个用户市场:消费级(Client,大众市场)、专业级和企业级(Enterprise,或称为数据中心级,Datacenter)。

  这个分类其实颇有争议,看似用市场阶梯来划分,但实际上则是根据SSD的可靠性来区分的。当然会有特例,比如互联网行业是SSD的消耗大户,市场规模也最大,其核心业务对可靠性的要求不逊于传统的企业级市场,但他们通常不会采购企业级SSD,而是成本相对更低的SSD,比如消费级SSD。成本考量是一方面,更重要的是,他们有较强的软件研发能力,能够通过软件在架构层面实现整个服务器集群或者数据中心的可靠性,而不用担心单个硬件的可靠性。

  与互联网不同,企业级通常要求在硬件层就实现较高水平的可靠性。那么消费级SSD和企业级SSD究竟有什么不同呢?一般而言,NAND闪存颗粒的选用会有偏好,比如SLC、MLC和TLC之分;再者,在制造成品上也有区别,比如控制器、固件等。最直观的体验就是,例如消费级SSD的容量通常为128GB、256GB、512GB等,而与之对应的企业级SSD容量则通常为120GB、240GB、480GB等。也许其内使用的是相同容量大小的NAND闪存颗粒,但出于可靠性需求,企业级SSD通常会有更高比例的预留空间(Over-provisioning,OP)用作垃圾回收(Garbage collection)、ECC以及其他数据保护技术等。

  那么,对可靠性要求严苛的企业级SSD在设计上有什么样的不同呢?正好最近企事录正在对基于Intel最新的E5 v4处理器的服务器进行测试,收到来自GreenLiant(绿芯半导体)公司的三块G7102 PCIe SSD,通过G7102这一产品,我们可以很好地揭示其在可靠性方面的设计。

 

  图1,企事录所使用的测试平台——浪潮NF5280 M4服务器,其背部设计了两个PCIe x8扩展槽,企事录实验室在服务器内部使用了3张G7102 PCIe SSD。但因为服务器设计的关系,不能窥其全貌。关于NF5280 M4服务器的测试详见《换“芯”季:浪潮至强E5 v4服务器抢先评测》

  下图即为G7102 PCIe SSD全貌:

 

  图2、GreenLiant(绿芯半导体)公司推出的G7102 PCIe SSD产品,采用全高半长设计。相对较为常见的半高半长PCIe SSD,全高意味着更大的板卡面积,能够布置更多的NAND闪存颗粒,提供更大的容量

  G7102 PCIe SSD裸容量2.75TB,但出于可靠性需求,RAID之后,实际可用容量为1.8TB,PCIe 2.0 x4规格,支持NVMe协议。

 

  图3、GreenLiant G7102 PCIe SSD背面,布满了GreenLiant公司自行研发设计的NANDrive,看起来很像其他PCIe SSD的NAND闪存颗粒,但实际上并非如此,不同之处,稍后在文中解释

  尺寸大是为了放置更多的NAND闪存,G7102 PCIe SSD在整体架构设计上也体现了相应的考虑,如下图:

  图4,GreenLiant G7102 PCIe SSD架构拓扑图。图中的G-card Controller由一个FPGA芯片实现,主要起两大作用:System Controller,主要作用是主机端过来的NVMe指令转换成针对闪存的具体操作指令,并向用户提供管理接口;NANDrive Array Controller则对NANDrive实现RAID,并执行具体的读写操作

 

  图5、拆开之后的G7102 PCIe SSD。使用了一个FPGA芯片来实现System controller和NANDrive Array Controller的功能,FPGA芯片右侧布满了GreenLiant公司的NANDrive,单面布局20个,双面共40个NANDrive;FPGA芯片下方则为Control Memory和Data Memory使用的缓存颗粒,正面6个,反面4个,共10个芯片

  G7102 PCIe SSD上的40个NANDrive,每5个NANDrive以RAID 4的方式组成一个RAID组,并通过一个NAND Array Controller进行管理,整个G7102 PCIe SSD共8个RAID 4组,8个NAND Array Controller。这是第一层数据保护,在更下层的NANDrive还有一层数据保护。

  NANDrive并不能简单地等同于我们所熟知的NAND闪存颗粒,从逻辑架构上看,更像是一个小型的SSD,其内部也分为两大部分:NAND Controller和NAND Flash。如下图所示:

 

  图6、GreenLiant公司PATA NANDrive内部架构图。每一个NANDrive内部都有一个NAND Controller,用于管理NANDrive内部的9个NAND Flash,NAND Flash以8+1形式组合,其中8个NAND Flash用于数据实际存储,1个NAND Flash用于热备。值得注意的是,ECC是使用的NANDrive上的NAND Controller来实现,而非由FPGA芯片来做,40个NANDrive只对自己辖内的闪存进行ECC,减小了计算量,降低了对FPGA芯片的性能需求,形成了“分布式”的ECC校验

  整个G7102 PCIe SSD的架构分为三层,由上到下分别为System Controller、NANDrive Array Controller以及NANDrive,有经验的同学可能已经想到了,这跟某些全闪存阵列的架构很相似啊,比如下图:

解密企业级SSD的可靠性设计,一起来看

  图7、Violin Memory 6000全闪存阵列架构图,与GreenLiant公司的G7102相比,除了是双控制器以外,整个架构颇有异曲同工之妙。

  再如IBM的FlashSystem系列全闪存阵列:

 

  图8、IBM Flashsystem 840全闪存阵列架构图。也是三层架构:RAID X-Bar Controller、Flash Gateway以及Flash Controller。值得注意的是,上图架构中两个互为冗余的PSU(Power Supply Unit,电源供应单元)还整合了BBU(Backup Battery Unit,电池备用单元)的功能

  BTW(by the way),FlashSystem系列也使用了FPGA芯片,如下图:

 

  图9、IBM Flashsystem 840中的闪存模块图,这是一个2TB容量大小的闪存模块,共40个NAND闪存颗粒,分别由2个FPGA芯片来管理。Flashsystem 840的闪存模块使用的是类似PCIe x4的物理接口,使用IBM私有协议。而G7102 PCIe SSD的PCIe x4则使用NVMe协议

  G7102 PCIe SSD只是在闪存的组织方式上有些神似全闪存阵列,但实际上还是有很大不同的。比如阵列作为相对独立的设备,允许多台主机同时访问,要通过双控制器设计保证较高的可用性。而G7102 PCIe SSD是插在服务器内部的PCIe插槽上,所以只能供本机使用。针对的用户场景不一样,当然不能牵强附会。

  另外有一点值得一说,全闪存阵列作为一个整体设备,在数据中心内使用会配备UPS来防止意外掉电导致的数据丢失风险。甚至在全闪存阵列内部还会配备BBU(如IBM Flashsystem 840,其将BBU整合到了PSU内)来应对意外掉电的情况。一般来说,作为服务器内部组件,大多数PCIe SSD产品都不会考虑这一情况,一是因为成本,二是因为半高半长板卡面积有限,多数厂商都选择了容量,而意外掉电只能依靠服务器或者数据中心的UPS(Uninterruptible Power System)/BBU来防范。

  这时候就体现了大板卡的优势,比如G7102 PCIe SSD,由于是采用全高半长设计,所以除了提供放置FPGA芯片散热片的空间之外,还为掉电保护组件提供了空间。

 

  图10、G7102 PCIe SSD拆开上部挡板,底下是密布的NANDrive。而挡板反面,则配置了9个超级电容。这一设计的目的是为了在系统突然断电的情况下,G7102能够将易失性存储Data Memory中的数据写到非易失性存储NANDrive之上,防止数据丢失。这9个超级电容相当于全闪存阵列(例如Flashsystem 840)中的BBU,提供类似的功能。不过如果只是为了保证在主机掉电时将缓存数据写到非易失性存储NANDrive之上,并不需要这么多电容组件。这些电容还有另外一层功能。众所周知,如果存储到闪存颗粒上的数据长时间不进行操作,有可能因为电子泄露导致电位丢失产生数据错误,GreenLiant针对这种情况,通过专有算法,即使在主机或闪存卡长时间断电情况下,也可以进行电位扫描,防止电位丢失,这个操作是需要供电保障的。据称,通过这一技术,GreenLiant闪存卡可以做到,在完全断电情况下,55摄氏度90天数据无错误

 

  图11,图上红框1中,即为IBM Flashsystem 840中的备用电池,如果放大,可以明显看到左下角的电池标识。图下红框2中则是G7102中的超级电容,如箭头指向图右下,为G7102拆开之后反面的3行3列布局的9颗超级电容

  超级电容技术的功能还不仅于此。众所周知,传统的磁盘(HDD,Hard Disk Drive)是通过磁极翻转来存储数据,理论上是一种永久存储介质,数据存储其内可以长期搁置(长时间不加电),但闪存是通过Cell内的电子来存储数据,电子有逃逸的特性,长期不加电搁置有可能导致数据损坏。据GreenLiant称,其通过设计在G7102电路板上的专利技术,能够在未接电的情况下,保证G7102 PCIe SSD上数据在90天内不会有数据损坏的风险。

  G7102 PCIe SSD在可靠性上下了很大的功夫,理论上媲美于全闪存阵列的可靠性(除了双控)。但是,用户对于闪存的第一印象肯定是高性能,其性能表现又是怎样的呢?

 

  图12、GreenLiant公司公布的G7100系列PCIe SSD产品的性能表现,吞吐带宽接近1GB/s,4KB数据随机读取性能为13万IOPS,随机写为6万IOPS。与目前市面上常见的PCIe SSD相比,性能处于中等水平,值得注意的是,G7100系列PCIe SSD在读或写方面都比较擅长,而且GreenLiant也着重向我们强调G7100系列产品的性能稳定性非常卓越

  那么其实际表现如何?企事录实验室先对其进行了简单的验证性测试,这一测试不代表G7102 PCIe SSD在实际环境中的真实表现,而只是用于评估。

 

  图13、GreenLiant G7102 PCIe SSD 4KB随机读取性能测试成绩。在队列深度为32时,性能趋于平稳,约320000 IOPS左右,大大超出官方公布的13万IOPS。值得注意的是,一般来说,队列深度的增加会直接导致延迟增大,二者成正比增长。但在G7102中,我们看到,随着队列深度的增加,其延迟增加并不明显,反而会有降低的可能。如上图所示,在小数据块读取测试中,其平均延迟基本控制在0.1ms以内,最大延迟也基本控制在0.3ms左右,延迟表现稳定

  图14、G7102 PCIe SSD 4KB数据块随机写入性能测试。在32队列深度时,获得52379 IOPS,延迟为0.61ms,性能与延迟的非常好的组合。而在256队列深度时,获得58800 IOPS,基本接近官方公布的写入60000 IOPS的性能水平

 

  图15、GreenLiant G7102 PCIe SSD带宽与延迟测试结果,均在2队列深度时,获得最大读写带宽,分别为1500MB/s和795MB/s。而官方公布的读写带宽为875MB/s和850MB/s,相比之下,写性能相差无几,而读性能几乎高出一倍

 

  图16、GreenLiant G7102 PCIe SSD 4KB随机写性能与顺序写带宽测试。从测试成绩来看,不管是4KB随机写入IOPS,还是顺序写入带宽,2张G7102 PCIe SSD的性能表现都2倍于1张G7102 PCIe SSD,随着SSD的加入,性能随之线性增长

  测试结果表明,GreenLiant G7102 PCIe SSD虽然官方标明的性能成绩处于中等水平,但就测试来看,同等条件下,并不弱于其他PCIe SSD。得益于其分布式ECC,和分散的“Controller”架构等优化方式,在同等IOPS表现下,其延迟表现优异,有助于企业关键业务应用的性能优化。

  并且,随着G7102 PCIe SSD数量的增加,其性能表现随之线性增长。尤其是在写入方面,不管是随机写,还是顺序写,其性能表现都以倍数增加。

  尽管只是一个评估性测试,但在一定程度上能够反映出GreenLiant G7102 PCIe SSD的一些特性,稍后一段时间,企事录实验室将针对G7102进行更详细的评测,以评估其在企业级应用中的性能表现。敬请期待!

2
相关文章