Tag Archives: IOPS

关于 EMC 高端存储支持 SSD

EMC_logo_large.gif

这几天存储行业比较大的一个新闻是 EMC 宣布在高端 Symmetrix 产品支持 SSD (固态盘, Solid State Drive),注意是基于闪存(FLASH)的固态盘。不到半年前,和一些存储厂商的朋友提及 SSD 仍有人不知为何物,现在似乎一夜之间 SSD 到处都是了。EMC 虽身为市场的领先者,也敢于吃螃蟹,来者不善。

STEC.jpg

EMC 这次采用的 SSD 是 STEC 公司 Zeus-IOPS 产品线的产品。这一型号号称随机读操作的 IOPS 能达到 52000 个,采用 SLC (single-layer cell ),写也可以达到 17000 个 IOPS。只从这个数字看,单块 SSD 的性能是机械硬盘的 30 倍还多。在可靠性上,SETC 据说实现了 ECC 机制.

现有的机械硬盘的虽说在单位容量上还在不停的增加,但是性能基本上是到了瓶颈,即使用于高端存储的高速硬盘,IOPS 的能力基本上也就是 150 个左右。而 SSD 单块就能提供几万个 IOPS ,且耗电量极小,平均故障间隔时间(MTBF)又是普通硬盘的10倍之多, 这对以期得到高 IOPS 的 DBA 来说, 简直是银弹。

但是(什么都怕这个”但是”),但是 SSD 的有它固有的缺点。其中一个就是可擦写次数(这个在几个新闻稿里面可算是一笔带过的),尤其是基于 Flash 的 SSD。传统磁盘虽然有它的缺陷,但是可擦写次数几乎是无限次的。

听听来自竞争对手的声音或许也能让我们多点心眼。HDS 的 CTO Hu Yoshida 在 Blog 上撰文,提出了他对 SSD 能否被市场接受的三点疑问:

  • 1) 价格因素:SSD 大约是普通磁盘驱动器的 30 倍.
  • 2) 磁盘供应商多数是初创公司,主流磁盘生产厂家并没有上阵呢.
  • 3) Flash SSD 可擦写次数有限.

如果说前两条只是竞争对手的 FUD 的话,那么最后一条还是会令 EMC 销售很头疼,如何让客户消除这个疑虑是有些难度的。STEC 官方的技术参数是可擦写次数能达到 200 万次。这样看的话,在高端存储上用 SSD 还是有比较合适的应用场景:在 EMC 提倡的 “智能分层存储” 前提下由 SSD 提供密集读的操作能力。

EOF

关于 Oracle 的 IO 响应能力: 10 毫秒的来历

最近在 ITpub 上有几个讨论 IO 的帖子很热闹,其中一个讨论中 Biti 说”响应时间在 10ms 左右能达到的最大 IOPS 能力,是系统 IO 能力的一个最重要指标” ,下面好多网友不知道这个 10ms 怎么来的,以及为什么是 10ms .

其实如果你熟读 Oracle 手册的话,你会发现 10g 中已经涉及到这个 “10ms” 的信息了,而且,侧面透漏出很多潜在的细节。

在 Oracle 10g 中有一个新的参数: DBIO_EXPECTED ,这个参数指 DB 平均读取一个 数据库块的时间,单位是毫秒(millisecond)。由 ADDM( Automatic Database Diagnostics Monitor)用以分析系统 IO 性能的参考值。默认是 10ms ,之所以取这个值,是因为当前企业内投入使用的硬盘(存储)一般一个 IO 时间(读取一个 DB 块)大约在 10 ms 之下,超出 10 ms 一般意味着在 IO 跑得有点费劲了。这个 10ms 是个经验值,但这个经验值是有来由的。

有些慢速硬盘,比如希捷 Barracuda® ES.2,寻道时间接近 10毫秒,一些老一点的 SATA 盘肯定更慢了;而 Cheetah® 15K.5 则大约只是 3ms-4ms 的样子(DBA没事的时候不妨看看硬盘厂商的白皮书,挺好玩的)。一个 DB 系统上线时,测试一下 IO 基准能力还是必要的。注意测试的时候出现的”拐点”,意味着这个时候的 IO 响应时间是至关重要的,因为这个时候 IO 即使有应用Cache、 数据库 Cache、(主机 Cache)、存储 Cache,也还是有大量 IO 压在了后面的磁盘上,如果磁盘的 IO 到了峰值,IO 层的能力也就到了峰值了(特定响应时间下的最大 IOPS)。多数系统上,应该在 10ms 附近。所以,你盯着 DB 上离散读的平均响应时间,到了 10ms 意味着快撑不住了。

要如实使用 ADDM 衡量 IO 状况,DBIO_EXPECTED 参数还是需要作一点调整的。要注意这个参数并不是初始化参数,如果需要重新设定,则需要提交如下语句修改:

EXECUTE DBMS_ADVISOR.SET_DEFAULT_TASK_PARAMETER('ADDM', 'DBIO_EXPECTED', 4000);

上面的数值单位是微秒。

数据库 IO 是一个非常有意思的话题,本来想写一系列的东西。结果这篇写出来发现不伦不类。权作抛砖吧。

EOF