甲骨文Exadata F20 flash加速卡讨论

在Exadata一体机中,大量的使用了flash加速技术以提高其I/O的读写性能。在之前的文章中有提到了磁盘的性能指标,目前仅限于传统磁盘的读写速率,还无法满足I/O密集型的OLTP系统的要求,Exadata可能会在这些方面出现I/O性能瓶颈。所以在Sun的Exadata V2时代开始,每个存储节点就提供四块96G的F20卡,也就是说每个存储节点提供384G的Flash存储空间。

下面具体来看一下F20卡的部分参数指标:

注意到其中的几个关键的性能指标:随机读101000 IOPS,随机写88000 IOPS, 顺序读1.1GB/s, 顺序写567MB/s,另外其访问延迟也是非常小。不过这只是F20卡的纯粹技术指标,而没有考虑DB和Exadata。在数据库服务器上小于8k的I/O请求都是没有意义的。所以在Exadata上这个指标需要重新评估,所以在Exadata的datasheet中提到单块F20卡的 Database IOP为375000/3/4=31250, 比4k的I/O请求测试出来的IOPS慢了3倍多。

除了性能的指标以外还有容量指标,单块F20卡的实际可用空间为96GB, 实际裸容量为128G。这是怎么回事呢? 再回答这个问题之前,我们先来看一下F20卡内部结构的布局。

一块F20卡实际上是由四个固态闪存模块(FDOM)组成的, 也就是图中所表示的DOM(Disk on module), 这个词没有合适的中文翻译,可以简单的认为它是一个ssd设备,但是提供更灵活的接口机制。例如F20卡就是使用PCIe的接口,直接插在主板上的,所以Oracle公司一再强调not flash disks, 就是为了说明这个PCIe的接口能够不受到磁盘控制器接口(例如SAS和SATA)速度的限制,单卡能够提供1GB/s的带宽,而4块卡其带宽几乎是线性扩展。

每个DOM包含8个(4个在前,4个在后)4GB的SLC NAND 组件, 一共为32GB,但是确只有24GB的空间是可寻址的,也就是说只有24GB是系统可识别的,另外的8GB作为备用空间用作地址重定向使用。这种方法是固态硬盘设备为了延长使用寿命最常用的办法。不过无须担心,NAND为企业级的闪存,通常比消费电子品所用的闪存寿命更长,使用寿命一般在5年以上。

F20卡还包含有电源存储模块ESM(Energy Storage Module ), 也就是我们常说的电池。实际上它并不是常规意义上的电池,而是一个叫做超级电容(supercapacito)的东西。它和普通的电池相比, 具有寿命更长,充放电率高,功率更高的优点。不过这种ESM只有2-3年的寿命(Oracle Exadata Owner‘ Guide上说的是3-4年, 这里以 Sun Flash Accelerator F20 Energy Storage Module (ESM) Lifespan. [ID 1327000.1]文档为准,早期的计算ESM的耗损率以两年为基准,现在基本都是以三年的寿命来计算的),2-3年以后需要更换这个ESM,更换 ESM的时候,可以用rolling的方式进行,只在存储节点段逐一进行,而不需要停止数据库。

如果ESM的电量耗尽,则闪存的写模式自动从write-back切换到write-through模式,造成性能下降。当然Exadata Smart Flash Cache(ESFC)这个特性早期只能使用write-through的模式,所以通常不是什么大问题,而使用write-through模式的 FSFC性能提升比较有限。在最新版的Exadata 11.2.3.2这个版本(X3都是在这个版本以上)正式引入ESFC的write-back的写模式,这个特性才真正开始发挥ESFC的威力。