M.2 SSD热插拔:Facebook和微软的两种方案
今天存储圈最大的新闻应该是Intel Optane SSD DC P4800X的正式发布,使用3D XPoint Memory的它已经不适合再叫做PCIe闪存卡了。
本文的主题不是这个卡…
不过我决定还是沉一沉,先写点别的东西。本文讨论的资料来自我上周末分享的《OCP US Summit 17会议资料开放下载》,其中的网盘链接已经更新为 https://pan.baidu.com/s/1gfmlkZp
以前我在企业存储技术微信公众号发一篇文章,会有数量不等的朋友评论或者点赞。而前天我体会到了最好的互动效果——最初共享的OCP峰会资料是按目录,百度网盘认为文件名中有敏感词被禁,我找到那个文件改名之后再次被禁… 再改另一个文件名,索性把每个子目录分享一个链接。
这时有朋友说应该整体打压缩包,是啊我怎这么笨?!于是再次上传、分享。几乎半天就这么过去了,随后几天有许多认识、不认识的朋友在文章下面留言、私信找我要新的链接。欣慰的是资料看来对大家有用,只是这种自己瞎忙活的事干了不少,感叹时间都去哪了…
M.2热插拔要点:结构、电气、软件支持
资料引用自《Lightning (PCIe JBOF): Update, challenges, and solutions》
上图就是去年我在《OCP峰会:PCIe SSD版本的Open Vault存储机箱,没有了SAS的双端口》中介绍过的LightningPCIe JBOF(由于是闪存,所以不再成为JBOD),通过在每个3.5英寸盘位放置2个M.2 SSD,两个抽屉一共可以支持60个NVMe SSD。
由于密度较大,这次的资料里给出了针对M.2 SSD设计的散热片。
Facebook Lightning M.2热插拔设计
电气方面我外行一些,上图中可以看到在这个热插拔方案中,有一个双色LED状态显示,并配合下面的按钮来实现M.2 SSD的安全添加/拔出。
由于M.2连接器的金手指本身不是针对热插拔设计,所以之前我听朋友说过单插槽的Carrier(托架)方案。如上图,在Lightning JBOF机箱中也是转接成U.2(SFF-8639)来支持热插拔的。
常规的Managed(受管理)热添加操作,应该是先插入,此时应该通电了,再按下按钮让系统“发现”它。移除时也要先按按钮,待LED显示变化后再行拔出。
这个方案密度还不错,但问题是热插拔操作是以2个M.2 SSD为单位的。
根据我之前的了解,Linux系统软件层面对PCIe SSD“Surprise”(意外)热插拔的支持还不太好,本次OCP峰会资料中提到了Intel在Kernel 4.7中对此的贡献,另外也离不开PCIeSwitch(PMC)方面的支持。
旧文参考:《关于PCIe SSD几个问题的讨论》
关于上图,我在上周的《详解OCP高密度存储服务器:从Facebook身上学到什么?》中列出过几年前的一个早期版本,现在增加了Type VII冷存储和Type VIII DisaggregateFlash(分离式闪存)节点——最右边双路服务器连接15个PCIe SSD的方案就使用了Lightning——即4台主机连接一个JBOF存储扩展机箱。
密度更高的1U 64M.2 SSD热插拔方案
与前面的Lightning相比,我还是觉得这个Project Olympus项目中的M.2热插拔设计更有意思。
怎么在1U JBOF机箱中容纳64个NVMe M.2呢?具体来说是16个热插拔的carriers,每个里面可以安装4个M.2 SSD。不错,这个密度的代价比Lighting还要大一些,要更换就得4个盘同时离线。如果是用于Cache之类的用途,当每个carriers只有一个SSD故障可以暂时不维护应该会好一些吧。
引用自《Project Olympus Flash Expansion FX-16》
由于是隶属于微软贡献的Project Olympus项目,FX-16 JBOF共用了Olympus的机箱和电源。我们能看到前面板的16个Storage Carriers,中间的PCIe Switch板——从两侧各引出一条通往外部主机的PCIe x16连线。前面板上还有一个千兆管理网口。
FX-16方案有2种选择,上图中的2颗80 lane PCIe Switch相对独立——各自连接8个M.2 Carrier(应该是8个PCIe x8,文字标注似乎有误)到两侧的PCIe x16主机接口。
而下面这个设计选项则换成了96 lane PCIe Switch。
利用多出的16个PCIe信道,两颗Switch之间增加一条InterLink链路,这样从任何一个PCIe Switch都可以访问所有64个M.2 SSD。该“池化存储”的方案能够实现Host failover,也就是前端主机的故障切换。而若是有一个PCIe Switch故障,还是会有一半SSD不能访问的。
连接到FX-16 JBOF的服务器主机,需要安装一块OCP PCIe Retimer扩展卡,其作用就是将PCIe信号从主板引出到对外的MiniSASHD(但此时不是跑SAS协议)连接器上,同时还能起到延长线缆距离,保障信号完整性的作用。
看到这块卡,以及上面的PCIe Retimer芯片,我想起在《服务器设计进化:戴尔R930跨代对比之存储篇》中提到的另一款PCIe转接卡,当然它们的连接器位置和用途不同。
在2年前未拆下散热片时,我曾经误以为R930的PCIe转接卡用的也是Retimer芯片,事实证明还是需要PCIe Switch才能达到1分4的效果。
PowerEdge R930四路Xeon E7服务器可选支持8个U.2(2.5英寸)热插拔NVMe PCIeSSD,上面这种卡需要配置2块。它的作用是将主板PCIe信号(配合线缆)引到背板上。其主控芯片是一颗PLX PEX8734 32 lane PCIe Switch,除了涵盖Retimer的特性之外,它主要是提供了交换功能。
FX-16的前面板示意图,1U机箱的两边各有4个x4 PCIe连接器。
上面介绍了单个Carrier的尺寸等特性。它里面可安装4个M.2(22110,长度给的足够)SSD,PCIe x8分到每个模块就是PCIe x2,4个SSD功耗一共不超过50W。此外它还是免工具卡锁的。
M.2热插拔服务器的展望
代号Skylake的Intel Xeon v5平台将于下半年上市,随着NVMe/PCIe SSD应用的增加,U.2热插拔驱动器位会更加普及。相比之下,M.2可以做到更高的密度,但是它能出现在主流通用服务器的热插拔盘位上吗?
上面2款机型分别为24个1.8英寸SAS/SATA SSD盘位的PowerEdge R630和18个1.8英寸+ 8个3.5英寸盘位的R730xd。可以说这是当前一代服务器的高密度尝试,SAS热插拔支持很好,同时SAS Expander端口数完全可以支撑这个规模。
另一方面,我也听有的朋友说1.8英寸SSD(可选择度)不太给力,大概是企业级型号的需求比较有限吧。此外SAS上行带宽、做为控制器的RAID卡也可能成为性能瓶颈(可参考《存储极客:服务器SSDRAID性能速查手册》)。
SAS羡慕PCIe的高性能,PCIe羡慕SAS的热插拔。回头来看本文介绍的两款M.2热插拔机型,由于是2/4个SSD一起插拔,所以在灵活性上有所不足;要是改为每个M.2一个Carrier,似乎又有些笨重。目前针对Facebook和微软的特定应用场景,出现的是JBOF形式,能否在主流服务器中大规模普及还太不好说。
注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。进一步交流技术,可以加我的QQ/微信:490834312。如果您想在这个公众号上分享自己的技术干货,也欢迎联系我:)
尊重知识,转载时请保留全文,并包括本行及如下二维码。感谢您的阅读和支持!《企业存储技术》微信公众号:huangliang_storage
长按二维码可直接识别关注
历史文章汇总(传送门):http://chuansong.me/account/huangliang_storage