Oracle Exadata X5弹性扩展与SSD性能计算

在撰写本文之前,我先是阅读了Oracle Database Appliance X5-2的产品资料,并发了一条微博:

“简单看了下Oracle Database Appliance X5-2的硬件,2个1U服务器节点间用40Gb InfiniBand互连,应该是直连没有交换机。24盘位JBOD(可扩展1台)每个驱动器共享给2个服务器由ASM管理。放redo log的4个200GB SSD采用3重镜像,我估计写好1-2个就返回;缓存热数据的4个400GB SSD为双重镜像(共享还是各自独享?)”

而当我继续查看Exadata X5的资料时,发现ODA的架构显得太简单了。

伴随Oracle Exadata X5的发布,人们注意到硬件性能的又一次提升,其中包括NVMe SSD——PCIe插卡和SFF-8639驱动器的形式,具体是怎样使用的呢?

本次的新型号包括Oracle Exadata Database Machine X5-2,以及Oracle Exadata Storage Expansion Rack X5-2两款,顾名思义,后者是个存储扩展机柜。此外,计算和存储节点数量的搭配,在原有Full Rack(满配机架)、Half Rack(半配)、Quarter Rack(1/4配)和Eighth Rack(1/8配)之外,还加入了更加灵活的弹性配置和扩展方式。

笔者不是DBA(一直很崇拜DBA),因此将站在系统工程师,或者说规格参数的角度谈谈对Exadata X5的弹性扩展以及存储配置——特别是闪存性能方面的理解。

1U数据库服务器和40Gb IB内部互连,就不多讲了。

X5-2的存储服务器节点分为两种:Extreme Flash(EF) Storage,12.8TB PCIe全闪存盘;High Capacity (HC,高容量) Storage,6.4TB PCIe闪存卡+48TB SAS硬盘混合存储。

如上图,SSD用了哪家大家也知道的差不多了。每个Extreme Flash存储服务器上有8个1.6TB SSD,2U机箱容纳2.5寸盘远不止这些,那么应该是考虑容量/成本的平衡,以及匹配单个节点计算和网络资源。

接着在性能表格中,也能看出Full Rack——8个DB+14个存储服务器OLTP读/写

IOPS (8K) 都是414万。单从闪存介质的角度看写比读慢,而且ASM Normal冗余(双副本)的写开销为读的两倍,High三副本就更大了。我初步理解是SQL处理的瓶颈。

High Capacity大容量存储服务器是个混合的配置,其中1.6TB PCIe SSD用了4块,4TB SAS硬盘为12块。除了读IOPS之外,其余指标都比前面的Extreme Flash有所降低。由于SSD在这里用于读写缓存,没有全闪存配置的数量多,所以写IOPS已经低于读(SSD开始成为瓶颈)。

上图就是X5 High Capacity存储服务器节点使用的闪存卡,Oracle/Sun的型号为F160,顺便也帮Intel SSD DC P3600做广告了。(以前用LSI卡时图片上没有logo,参见我两年多以前写的《甲骨文Exadata X3:1/8机架的“数字游戏”》)

如上表,Intel P3600这块产品的性能表现在PCIe SSD中算一般水平吧。一方面没有像P3700那样使用高耐久度的High Endurance Technology (HET)闪存,也就是普通MLC而非“eMLC”,写入性能和寿命都受到影响。如上图,尽管标称最大随机读/写IOPS(4KB)为450,000和56,000,但8KB时就下降到260,000和33,000。

Intel这款SSD的一大优势是较早地支持了NVMe,担心NVMe不够成熟的人可以看看,现在至少某些Linux版本(Oracle Linux 6 Update 6 with the Unbreakable Enterprise Kernel 2)下已经可用了。

延伸阅读:《破解PCIeSSD进化:从踩坑到解决方案》

接下来我们看看“弹性配置”。上图左半边是Exadata X3-2,支持数据库服务器2-8台、存储服务器3-14台,实际上就那4款具体配置,不能随便选;而到了Exadata X5-2,支持数据库服务器2-19台、存储服务器3-18台。也就是说数据库服务器最少配1台,最多占满机柜(此时要连接存储扩展机柜了);存储服务器为了高可用还是以3台起步,最多18台。基本上就是没有限制的灵活搭配了。

需要说明的是,上述性能指标应该是在理想状态下——执行最简单的SQL;性能随节点数完全线性扩展,也是在RAC集群基本没有跨节点Cache Fusion操作的情况下。所以注释的第一行就说明了,真实环境中根据应用情况会有变化。

上表的标题为“弹性扩展”,最左边的多机架连接,以及最右边的1/8机架到1/4机架升级(实际上就是激活个License,硬件是相同的)都是Exadata X3乃至更早就有的。而中间的“扩展计算能力”和“扩展存储能力”则是X5新增。

中间用蓝色圈出的那一段,是本文中核心计算规则:“弹性配置的性能计算,来自数据库服务器性能总和,以及存储服务器性能总和的最小值。举例,一个配置包含3台数据库服务器(3×518,000=1554K读IOPs)和4台HC存储服务器(4×400,000=1600K读IOPs),将拥有1554K IOPs的性能。”

Exadata的SQL的处理既可以在数据库服务器上进行,也可以卸载数据密集型SQL操作到存储服务器,但二者的性能计算不可叠加。X5-2数据库服务器(2颗18核Intel Xeon E5-2699 v3)的最大SQL读/写IOPS为518,000,存储服务器最大SQL读IOPS为400,000(它的CPU只有2颗8核),写IOPS就可以看出闪存的瓶颈了。Extreme Flash全闪存节点为377,000,这里是SQL IOPS已经考虑到ASM冗余带来的写惩罚,那么落到每个SSD(每节点8个)上应该就是94,250——好像这个数字明显超过了Intel P3600标称的8KB写IOPS 33,000?

那么High Capacity大容量混合存储节点的192,000,落到4块闪存卡上96,000写IOPS也是类似的情况?转念一想,Intel给出的数字是随机写IOPS,而Exadata这里的SQL闪存写可以是顺序操作啊!差点被绕进去…

我想起@jametone 老师说过的一句话,大意是这样的:“实际应用中读IOPS容易离散,而写IOPS容易连续,再加上读/写比例的因素,存储的读性能成为瓶颈的情况更多一些。”这或许可以解释Exadata X5使用相对便宜的PCIe SSD吧。

最后再看看更牛B的数字——Exadata存储扩展机柜的最大配置19台,仍然是用乘法来计算的。这种资料里的性能嘛,只是厂商给出参考的一个数字罢了。

今天我这个数据库外行写了这些东西,其中难免有纰漏之处,欢迎大家批评指正,也让我能有一个学习进步的机会:)

感谢您的阅读和支持!《企业存储技术》微信公众号:huangliang_storage