查看原文
其他

SDC 2016:EMC DSSD的过去、现在和未来

2016-09-22 唐僧 企业存储技术
本文内容非商业用途可无需授权转载,请务必注明作者及本微信公众号、微博ID:唐僧_huangliang,以便更好地与读者互动。

 


实在想不出什么好标题,现在这个估计有人会说我标题党吧:)

 

早在上学时我就不擅长写作,没料到如今竟然要经常码字。我觉得自己写的应该算说明文,虽然其中技术水平不够高深。至于文章题目,以前做过2-3年编辑时就经常被领导批,这方面我真的不敢跟文艺青年相比。每一篇大家最终看到的,可能都经过我修改好几个版本,只是希望在反映内容的同时,不要太枯燥而已。

 

919-22日这几天,一年一度的存储行业盛会2016 StorageDeveloper ConferenceSDC在美国举行。这个会议的资料,几乎是我能看懂的专业存储会议中质量最高的,一方面没有FMS闪存峰会之多的泛滥,另外估计也是SNIA自己对质量把关严一些,没有收那么多赞助费吧:)

 

2016Storage Developer Conference Presentations   全部资料下载地址

http://www.snia.org/events/storage-developer/presentations16

 

在前两天的《RedisSAS使用闪存的两种不同方式》中,第二个方案使用了EMC DSSD,有朋友说我关于DSSD的内容我写的有点少。确实是了解有限,好在这次SDC 2016大会看到了不错的新资料。

 



这个是Dell EMC DSSD联合创始人兼CTO Jeff Bonwickkeynote演讲资料,主题为《可扩展高性能闪存系统》。听说DellEMC在国内的合并会推迟,两家公司暂时还是各干各的,我就是一做技术的,也不太关心这些。之前写过一篇《解析DSSD对象机制:内存APIAtomic读写再现》,偏软件特性多一些,这次给大家分享点硬件方面的学习心得。

 

冗余全网状PCIeFabric闪存I/O路径

 



首先Jeff Bonwick举了个例子,怎么把服务器内的PCIe SSD从机箱里拿出来,用PCIe Fabric直连所有计算节点和存储。

 



这个图也不算新鲜了,许多朋友应该都知道DSSDCPU不参与数据路径,所以延时低。客户端、CPU和闪存模块都接在PCIeSwitch上,每一次I/O的逻辑请求先发到CPU,然后CPU发物理请求到闪存模块,数据从闪存模块直接DMA传送到客户端。

 


点击放大

 

这个架构图还是蛮不错的。中间是36个闪存模块,每个闪存模块应该有2PCIe x4端口,比标准化的SFF-8639带宽要大,可以看出定制闪存模块的优势。上下各有1264 lane PCIe Gen3Switch,分别位于2个全网状PCIe FabricI/O模块,见下图)上,避免单点故障。

 

这里面还有绿色的部分,控制模块——4CPU及各自的内存,我用红圈标出了其中一组。每颗CPU连接到3PCIe Switch,此外还有到同一侧和另一侧2CPU之间的连接。

 

网状图的上方有一行小字,我简单翻译一下供大家参考:

 

D51.036 x 4T FMs(闪存模块),96端口;

R/Wmix(读写混合)75/25 @8kAmp(写放大)1.33Cache 0%

129GB79R/32W),估计是测试LBA范围或者数据量的比例;

16MIOPS12R/4W),1200万读IOPS+400万写IOPS

寿命:95TB @ 30k P/E = 3.2EB / 2.3y(每天写入3.2EB可达2.3年)

 



这就是DSSD D5全网状PCIe FabricI/O模块),可以看到12IDT(现在属于MicroSemi/PMCPCIe Switch

 



DSSD D5的解剖照片。其中标出了被动式的中板、PCIeFabricIO Module)、Control ModuleFM闪存模块的位置。

 

DSSD现在还用FPGA吗?为什么

 



上图引用自一份FMS2016的资料,目前DSSDPCIe闪存模块应该是使用了PMCASIC控制器——Flashtec NVMe1032。记得以前听人说DSSD曾经用FPGA做过定制的闪存模块,估计是上一代产品吧。

 

在一些“软件定义闪存”的宣传中提到过FPGA可编程的好处,比如将每个闪存通道或者颗粒直接暴露给主机(控制器),由上层进行全局GC和磨损平衡等。然而DSSD告诉我们,通用ASIC PCIe SSD控制器也是可以这样做的(不一定要像某司说的自主SSD控制器才行),因为DSSD2D RAID就是跨18 FMs x32 Channels来实现的。

 



关于DSSDRAID算法有个专门的英文文档,国内也有同行朋友解读过,我这里就不过多展开了。如上图,在闪存模块(蓝色)和通道(黄色)这两个维度都是双校验位,再加上右下角的紫色部分总共付出17%的容量。三者配合应该是能够提高3 FMs故障时的恢复概率。

 



这个图是对前面前面一张的说明。

 

CPU软件处理压缩到3µs,下一代NVM降低到10µs

 



上面做了一个计算,DSSD D532CPU核心处理I/O,能够达到1000IOPS,折合每个核心30IOPS,或者处理每个I/O 3µs(微秒)。注意:这只是CPU处理的时间,不是主机看到的整个延时。

 


这个图我以前也列出过,DSSD在软件层引入了libflood API,硬件PCIe Fabric直连,特别是用户态的DMA Port绕过传统内核方式访问的一系列开销。最终将300µs-5000µs的延时压缩到不到100µs

 


上面图表比较直观地反映出DSSD相对传统SSD存储访问在软件延时部分的改善。这里还可以看到DSSD的几代产品,2x/1xnm)我感觉应该代表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


长按二维码可直接识别关注


点击下方“阅读原文”,查看更多历史文章↓↓↓

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存