SDC 2016:EMC DSSD的过去、现在和未来
实在想不出什么好标题,现在这个估计有人会说我标题党吧:)
早在上学时我就不擅长写作,没料到如今竟然要经常码字。我觉得自己写的应该算说明文,虽然其中技术水平不够高深。至于文章题目,以前做过2-3年编辑时就经常被领导批,这方面我真的不敢跟文艺青年相比。每一篇大家最终看到的,可能都经过我修改好几个版本,只是希望在反映内容的同时,不要太枯燥而已。
9月19-22日这几天,一年一度的存储行业盛会2016 StorageDeveloper Conference(SDC)在美国举行。这个会议的资料,几乎是我能看懂的专业存储会议中质量最高的,一方面没有FMS闪存峰会之多的泛滥,另外估计也是SNIA自己对质量把关严一些,没有收那么多赞助费吧:)
2016Storage Developer Conference Presentations 全部资料下载地址
http://www.snia.org/events/storage-developer/presentations16
在前两天的《Redis和SAS使用闪存的两种不同方式》中,第二个方案使用了EMC DSSD,有朋友说我关于DSSD的内容我写的有点少。确实是了解有限,好在这次SDC 2016大会看到了不错的新资料。
这个是Dell EMC DSSD联合创始人兼CTO Jeff Bonwick的keynote演讲资料,主题为《可扩展高性能闪存系统》。听说Dell和EMC在国内的合并会推迟,两家公司暂时还是各干各的,我就是一做技术的,也不太关心这些。之前写过一篇《解析DSSD对象机制:内存APIAtomic读写再现》,偏软件特性多一些,这次给大家分享点硬件方面的学习心得。
冗余全网状PCIeFabric闪存I/O路径
首先Jeff Bonwick举了个例子,怎么把服务器内的PCIe SSD从机箱里拿出来,用PCIe Fabric直连所有计算节点和存储。
这个图也不算新鲜了,许多朋友应该都知道DSSD中CPU不参与数据路径,所以延时低。客户端、CPU和闪存模块都接在PCIeSwitch上,每一次I/O的逻辑请求先发到CPU,然后CPU发物理请求到闪存模块,数据从闪存模块直接DMA传送到客户端。
点击放大
这个架构图还是蛮不错的。中间是36个闪存模块,每个闪存模块应该有2个PCIe x4端口,比标准化的SFF-8639带宽要大,可以看出定制闪存模块的优势。上下各有12颗64 lane PCIe Gen3Switch,分别位于2个全网状PCIe Fabric(I/O模块,见下图)上,避免单点故障。
这里面还有绿色的部分,控制模块——4颗CPU及各自的内存,我用红圈标出了其中一组。每颗CPU连接到3颗PCIe Switch,此外还有到同一侧和另一侧2颗CPU之间的连接。
网状图的上方有一行小字,我简单翻译一下供大家参考:
D51.0:36 x 4T FMs(闪存模块),96端口;
R/Wmix(读写混合)75/25 @8k,Amp(写放大)1.33,Cache 0%;
129GB(79R/32W),估计是测试LBA范围或者数据量的比例;
16MIOPS(12R/4W),1200万读IOPS+400万写IOPS;
寿命:95TB @ 30k P/E = 3.2EB / 2.3y(每天写入3.2EB可达2.3年)
这就是DSSD D5全网状PCIe Fabric(I/O模块),可以看到12颗IDT(现在属于MicroSemi/PMC)PCIe Switch。
DSSD D5的解剖照片。其中标出了被动式的中板、PCIeFabric(IO Module)、Control Module和FM闪存模块的位置。
DSSD现在还用FPGA吗?为什么
上图引用自一份FMS2016的资料,目前DSSD的PCIe闪存模块应该是使用了PMC的ASIC控制器——Flashtec NVMe1032。记得以前听人说DSSD曾经用FPGA做过定制的闪存模块,估计是上一代产品吧。
在一些“软件定义闪存”的宣传中提到过FPGA可编程的好处,比如将每个闪存通道或者颗粒直接暴露给主机(控制器),由上层进行全局GC和磨损平衡等。然而DSSD告诉我们,通用ASIC PCIe SSD控制器也是可以这样做的(不一定要像某司说的自主SSD控制器才行),因为DSSD的2D RAID就是跨18 FMs x32 Channels来实现的。
关于DSSD的RAID算法有个专门的英文文档,国内也有同行朋友解读过,我这里就不过多展开了。如上图,在闪存模块(蓝色)和通道(黄色)这两个维度都是双校验位,再加上右下角的紫色部分总共付出17%的容量。三者配合应该是能够提高3 FMs故障时的恢复概率。
这个图是对前面前面一张的说明。
CPU软件处理压缩到3µs,下一代NVM降低到10µs
上面做了一个计算,DSSD D5有32个CPU核心处理I/O,能够达到1000万IOPS,折合每个核心30万IOPS,或者处理每个I/O 3µs(微秒)。注意:这只是CPU处理的时间,不是主机看到的整个延时。
这个图我以前也列出过,DSSD在软件层引入了libflood API,硬件PCIe Fabric直连,特别是用户态的DMA Port绕过传统内核方式访问的一系列开销。最终将300µs-5000µs的延时压缩到不到100µs。
上面图表比较直观地反映出DSSD相对传统SSD存储访问在软件延时部分的改善。这里还可以看到DSSD的几代产品,2x/1x(nm)我感觉应该代表NAND闪存工艺(可能是FPGA控制器);3D则表示3D NAND,也就是前面写的ASIC控制器闪存模块。
发展到现在这一代,主要的延时开销已经在闪存介质硬件上,NG-NVM应该代表未来的DSSD,使用3D XPoint之类的下一代存储级内存技术,到时候客户端的访问延时降低到10µs这个级别,可以说是个重大的飞跃吧。
这就是我在本文标题中写DSSD“过去、现在和未来”的含义。
参考资料
http://www.snia.org/sites/default/files/SDC/2016/presentations/keynote_general/Jeff_Bonwick_Scalable_High_Performance_Flash_Systems.pdf
注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。进一步交流技术,可以加我的QQ/微信:490834312。如果您想在这个公众号上分享自己的技术干货,也欢迎联系我:)
尊重知识,转载时请保留全文,并包括本行及如下二维码。感谢您的阅读和支持!《企业存储技术》微信公众号:huangliang_storage
长按二维码可直接识别关注