在三环边上的小餐馆,我们撸着串,喝着冰红茶,龙哥自动开启了吹牛模式,把市面上各家厂商的2U4多节点服务器都给点评了一番,不愧为老司机,车开的多了,感受都要更深刻一些。我也很好奇,为什么龙哥对看似已寻常的多节点服务器有这么大的兴趣。
2U"x"的世界
“2U4确实省地儿啊,你想想,现在机房有几个不缺空间,不缺电的?机架空间紧张,还没有足够的电,可是IT应用却排着队等着上线,你说说,这CIO该怎么办?上虚拟化、用SDS?说起来都简单!”龙哥左手挥舞着一大把签子比划着:”当你要把几台几十台机器组成一个集群的时候,就会发现,传统的机架式服务器并不是那么美好,复杂的网络连线,部署没你想的那么快,运维也……”
眼见龙哥扯的要没边了,我赶紧提出了我的疑问:“龙哥,在2U的机架空间里,您认为2U4更适合还是2U8更适合呢?”
听到这个问题,龙哥放下手中的签子,从他手机上翻出一张图,这是戴尔模块化服务器的演化史,可以看到Dell PowerEdge
FX2的三个显著特点是支持PCIe灵活分配,既能Scale-out(横向扩展)又能Scale-up(纵向扩展)……“图中没有透露的是,戴尔FX2在2014年发布之后还有小幅的演进优化,再加上之前类似形态的刀片产品,则有十多年的积累了,肯定比刚跟风涉足2U4领域的厂商更有心得。
如果用户需要的计算密度高,对存储没有太多要求,或者配合外接SAN存储,2U8自然是占优势了;如果用作软件定义存储(SDS),2U4的模式更适合,因为可以为存储留出足够的空间;如果对单一节点的计算性能要求高,2U2的双4路服务器节点也是可以考虑的。所以啊,FX2能从2U8支持到2U2,具体上什么形态要看用户需要什么,灵活组合就能满足用户各种不同的需求。”
听到龙哥讲到SDS,我眼前一亮,这阵子一直被CIO追着屁股后面要SDS市场分析和产品选型建议,可是这SDS市场鱼龙混杂,一时间也理不清头绪,正好问问龙哥:“SDS现在除了商业化的产品,开源的大都基于Ceph环境吧?”
“的确,现在Openstack的流行带着Ceph已经成为开源SDS的标杆了,不过要想玩儿好Ceph,是件困难的事儿……”龙哥撸完最后一根串后,眼神产生了变化:“我最近刚在实验室的FX2上部署了一套Ceph的SDS环境,借助FX2的统一管理平台,可以实现快速部署Ceph环境,哥这就回去让你见识见识!”
“3+1”的模式
回到龙哥的实验室,龙哥拉开另一个机柜的门,我一眼就看到这么一套组合,相比上午给我反复讲解的2U8节点FC430的配置,这套环境给我的启发更大,因为我觉得已经清楚怎么在自己的环境中使用FX2了……
老司机开腔了,让我的思绪转回到“如何落地”上:
这是一套致力于高可用的关键业务系统,由两套FX2节点构成,上面这套是3台FC630双路计算节点+1台FD332存储节点构成的全闪存储池+HDD存储池的SDS环境,运行的正是你刚才问的Ceph;下面的一眼就能看明白了——两台FC830全宽四路计算节点构成的双机高可用(HA)计算平台。
看图学画“SDS”
接着龙哥开始为在FX2上搭建一套基于Ceph的Server
SAN分布式存储系统做准备。“当然了,社区版的Ceph不能称为产品(连界面都没有),不适合你这样的用户,我这里用的是XSKY的X-EBS。XSKY(星辰天合)与戴尔同属未来就绪企业云联盟(Future
Ready Enterprise Cloud
Organization,FRECO)的成员,我去他们的研发机房看过,大量使用戴尔的服务器,对戴尔服务器的优化工作肯定没问题——你知道SDS与硬件的紧密集成还是很重要的……”
戴尔与XSKY联合推出的飞云存储系统
“R730xd被大量用于SDS这我知道,还是接着说FX2吧。”我太了解龙哥了,这家伙思维很跳跃,必须及时把他拉回正题。
“好吧。看看我这套配置:2U4节点的FX2中使用3个FC630计算节点,和一个FD332存储节点(分配给两台FC630,形成HDD存储池);每个FC630分配至少两个PCIe扩展槽,分别安装双端口万兆网卡和PCIe NVMe SSD(形成的SSD存储池)。”
整个Server SAN架构大致如下图所示:
“理论上,使用FX2的网络模块FN
IO就可以构建一套Server SAN,但遗憾的是,这台FX2上配置的是较老的千兆模块,对于多副本数据保护机制的Server
SAN来说,使用万兆网络更有利于性能发挥,所以添加一台Mellanox(迈络思)的万兆交换机来连接FX2的各个节点。“追求架构“优美”的龙哥一脸遗憾地解释。
我问了龙哥关于FX2的一些详细的配置,最后整理成下表:
平台/子系统 | 详细配置 |
计算平台 | 戴尔 PowerEdge FC630 ×3 每节点:Intel Xeon E5-2690 v3 ×2,2.6GHz,12核24线程 64GB内存,2133MHz |
存储平台 | SSD资源池:1.6TB NVMe SSD ×3(每FC630节点1个) 硬盘资源池:戴尔 PowerEdge FD332 ×1 15,000 RPM SAS HDD 600GB ×8 10,000 RPM SAS HDD 600GB ×8 软件:XSKY X-EBS 2.2 |
网络平台 | Mallanox SX1024交换机 |
操作系统及软件 | 操作系统:CentOS 7.2.1511 |
FD332:存储拆分小秘辛
我正在整理这套FX2的具体配置,突然想到一个问题:FD332里面的硬盘怎么分配?
设置存储资源池的第一个小目标:把FD332上的16个2.5英寸SAS硬盘分配给2个FC630节点
抬头一看,龙哥早就进入了FX2的CMC(Chassis Management Controller,机箱管理控制器)管理界面,手指着屏幕正回头看我,似乎已经“恭候多时”了。
我顺着龙哥的手指望过去,“存储模式”下面有三个选项,不由得问:拆分式双主机、拆分式单主机、联合的,这都什么意思?”
龙哥反问道:你知道FD332是什么吗?
我感到有些奇怪:你不一直说它是JBOD?Just a Bunch of Disks,简单说,就是把一堆硬盘连在一起,供主机访问,自身没什么智能。
龙哥笑道:说FD332是JBOD,是叫着方便。实际上,它的官方名称是“超高密度直连存储(DAS)模块”,可不仅仅是JBOD——你听说过Dual PERC吗?
PERC我知道,是戴尔PowerEdge RAID Controller的缩写,戴尔服务器里面全有这个组件,还有不同的型号可选。至于Dual PERC……是两个RAID控制器?
FD332后部的两个RAID控制器——Dual PERC,上有2个LSI(已被Avago收购)的8端口12Gb/s SAS控制芯片,支持RAID功能
“没错!FD332支持两个RAID控制器。”龙哥在赞许中掩饰不住得意。“当然,你也可以不启用Dual PERC的RAID功能,只是把它们当成两个普通的SAS HBA使用——这对不希望底层硬件启用RAID功能的SDS软件来说,是很重要的。”
“那么,FD332为什么要……”
“支持Dual PERC?就是为了拆分啊!”龙哥实在忍不住了,大笑几声之后,继续解释。
原来,FD332上面的16个2.5英寸SAS/SATA硬盘或SSD,既可以全部分给一个计算节点(如FC630/430),也可以对半分给两个计算节点,这时就要用上Dual PERC——各带8个硬盘/SSD,供对应的节点使用。
“这岂不是说,由于FD332自带SAS HBA/RAID功能,计算节点上连这块儿都可以省了?”我有点儿理解龙哥对FX2的浓厚兴趣了。
“是啊,要不怎么说FX2的架构设计,把传统的内置存储功能,尽可能的与计算节点解耦了呢,这样才能初步实现存储硬件资源分配的灵活性,也有利于计算节点达到更高的密度。”说着,龙哥已经从他的电脑上调出一幅图来。
FD332三种分配方式架构示意图
“你看,最上面的就是拆分式双主机,16个2.5英寸硬盘拆分给两个PERC,各划分给一个FC430计算节点,这样每个节点都有8个2.5英寸硬盘。就像上午跟你说的,这种4个FC430配2个FD332的组合,最适合做成超融合系统。当然,Dual
PERC各连一个FC630也是可以的,就像我们现在的配置。”
“那拆分式单主机就是一台FD332上的两个PERC都连接在同一个计算节点上?而且这个计算节点还可以连接多个这样的FD332?”
“Absolutely right!”飙英文表明龙哥找到了共鸣。“16个硬盘还是拆分给两个PERC,但都划拨给同一个计算节点。我想,这在FD332里面大量使用SSD的时候,是很有必要的,可以保证计算节点获得较高的性能,而不仅是容量。”
“联合式是不是就是更注重容量的方案?和拆分式单主机一样,也是每台FD332的全部16个2.5英寸硬盘都划给一个计算节点,也允许多台FD332连到同一个计算节点。区别在于FD332只启用一个PERC,而不是拆分给两个PERC,所以出口带宽仅为拆分式单主机的一半。如果FD332里面装的都是SSD,这个PERC可能成为性能瓶颈。”
“孺子可教啊!都会举一反三了!”一转眼的功夫,龙哥又切换到了成语模式,这灵活性都快赶上FD332啦。
“不管是三种模式中的哪一种,FD332上的PERC自身还有一些设置项吧?”
“年轻人有前途!这么快就能跟上哥的节奏啦!”龙哥一边颌首赞许,一边转到(已配给FD332的)FC630的iDRAC界面,“这个PERC用起来和计算节点内置的PERC没啥区别,对咱们来说最重要的是这个选项:在面向比较传统的Scale-up(纵向扩展)应用时,我们可以启用该PERC的RAID功能,就像是FX2内置的小型磁盘阵列;在面向SDS这种典型Scale-out(横向扩展)的场景时,则需要设置为HBA模式,CPU直通(pass
through)访问SAS/SATA硬盘或SSD。”
在FC630的iDRAC存储管理界面,可以对FD332分配到该节点的存储资源(PERC控制器设置和磁盘)进行管理
PCIe的奥妙
终于搞明白了FD332里面的道道,想起来撸串时龙哥给我看的那张戴尔模块化服务器发展史上,FX2的三个关键词,Scale-up和Scale-out都提到了,可是……PCIe呢?
龙哥又恢复了“一切尽在掌握”的神秘笑容,问道:你猜,FD332与FC630之间是通过什么协议连接起来的?
“这有什么难的,肯定是SAS啊!”我没经过大脑,脱口而出。
“再想想,这个Dual PERC可是在FD332上的哈!”龙哥给出提示。
我一下就悟了:对啊,就是PCIe!
“没错,是通过PCIe连接的。并且,结合FX2背部的8个PCIe插槽设计来看,FX2的背板核心是PCIe
Switch。包括FD332、PCIe插槽及其旁边的FN IO网络模块都是通过PCIe Switch与前面的服务器节点连接。正是因为PCIe
Switch的存在,所以其连接更加灵活,而且也可以实现更多功能。”
我真的被震惊了,没想到外观看似如此简单的一个小东西,内部设计却如此的有“门道”……既然FD332的连接都可以如此灵活,借助PCIe Switch,PCIe插槽的灵活性也就毋庸置疑了。龙哥接下来的操作证明了这一点。
这是FX2当前的PCIe分配模式:
节点1上有4个PCIe插槽,但只有两个插槽接入了PCIe设备,节点2和节点4上各有两个接入了PCIe设备的插槽。
为什么节点1上面会有4个PCIe插槽?节点3又到哪里去了?这台FX2里明明是有4个半宽节点的啊。
龙哥耐心地解释说:FX2后面的8个PCIe插槽,默认分别对应一个四分之一宽插槽位。譬如,8个FC430的配置,每个FC430分到自己对应的1个PCIe插槽;4个FC630的话,每个节点分到2个PCIe插槽,以此类推。当某节点不能拥有PCIe插槽时,譬如我们这个配置里节点3是FD332,不需要也无法接入PCIe设备,它原本对应的2个PCIe插槽,就被FX2自动分配给靠前的节点,也就是节点1。
如果我们对这种“将无主的PCIe插槽追加到第一台服务器节点上”的分配方式不满,FX2也提供了另一种选项:在PCIe插槽的“设置”页面,勾选“PCIe重新分配”,FX2就会用另一种规则自动分配PCIe插槽,如下图:
在PCIe插槽的“设置”页面,勾选“PCIe重新分配”选项,然后点击“应用”即可重新分配PCIe插槽
与默认的自动分配方式不同,“PCIe重新分配”希望在有权瓜分PCIe插槽的节点之间尽可能做到平均分配。比如在当前的这台FX2中,其有8个PCIe插槽,无法平均分配到3台FC630服务器上,“PCIe重新分配”的策略是干脆舍弃最后面的服务器节点,将8个PCIe插槽,平均分配到靠前的2台FC630服务器上,每台FC630上会有4个PCIe插槽。
两种不同的分配方式,具体可见下面的逻辑拓扑图:
图上为PCIe默认分配方式,首先满足每个FC630上都有基本的2个PCIe插槽,再将FD332空出的2个PCIe插槽追加给第一个FC630节点;图下为开启“PCIe重新分配”选项,舍弃一个FC630节点,将8个PCIe插槽平均分配到2台FC630上。
由于我们为安装Server SAN准备的SSD资源池,需要在每个FC630上都安装1个PCIe NVMe SSD,最终还是采用了默认的PCIe插槽分配方式。
看到这里我终于想明白了:FX2的FD332直连存储模块和PCIe插槽,分配方式都既支持Scale-out(尽可能分给多个节点),也支持Scale-up(尽可能分给一个节点),而这种灵活性就是PCIe交换所赋予的……
“安装Server SAN需要的硬盘资源池和SSD资源池都准备好了,接下来看哥用一个小时给你装好Server SAN,还有超融合!”龙哥的话又打断了我的思绪。能有这么快?我看了眼手机,龙哥不想跟我吃晚饭,也不用这么拼吧?!