ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 小机、数据库、存储选型

小机、数据库、存储选型

原创 Linux操作系统 作者:grace_xuxj 时间:2012-05-24 21:32:13 0 删除 编辑
小机、数据库、存储选型应该注意的几个事项(摘自ORACLE高可用环境-陈吉平)

引自: http://blog.csdn.net/csucxcc/archive/2009/11/30/4903369.aspx

document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length > 300) { text = text + "\r\n\n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData("text", text); } }, 100); } }function StorePage() { d = document; t = d.selection ? (d.selection.type != 'None' ? d.selection.createRange().text : '') : (d.getSelection ? d.getSelection() : ''); void (keyit = window.open('http://www.365key.com/storeit.aspx?t=' + escape(d.title) + '&u=' + escape(d.location.href) + '&c=' + escape(t), 'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); }
存储:

存储的几个主要指标是IOPS、带宽与响应时间。

IOPS:

指的是系统在单位时间内能处理的最大IO频度,一般是指单位时间内能完成的随机小IO个数。

带宽(throuput):

有的时候也较吞吐量,指的是单位时间按内最大的IO流量。往往是采用大的IO块、大的带宽获得的最大流量。

这几个指标即相互独立有相互关联。一般来说,当涉及更多的频繁读写时(OLTP),更多的考虑IOPS与响应时间;

而一些大量的顺序文件访问,例如数据仓库应用(OLAP),流媒体,更多的考虑带宽指标。

响应时间:

单IO的响应时间指的是一个IO请求从开始到结束的时间,它往往与cache大小以及命中率有很大关系。

决定IOPS的因素有如下几个:

磁盘个数:

首先看磁盘个数,这个是决定存储IOPS的最关键因素,因为每个磁盘的最大IOPS个数是有限制的。

目前的情况是:

FC硬盘(光通道硬盘)速率>SATA硬盘速率

15K转速FC硬盘>10K转速硬盘

 举个例子:

如果一个磁盘阵列有120块 15K rpm的光纤硬盘,他能支撑的磁盘IOPS为 120×150=18000,基本达到硬件限制的理论值。

cache命中率:

cache 如果命中,一个查询可能只需要 1-2ms就可以返回,而磁盘读取,就可能需要

5-10ms;如果读操作特别多,可能需要更高。cache读操作速度是磁盘读操作速度的5倍以上。

 一般情况下,cache越大,命中率也越高,当然命中率也和应用,数据库设计也有关。

好的应用设计可以大大的提高cache命中率。

因为读 cache  采用类似 LRU的算法设计,对于比较典型的OLTP环境是比较合适的,而在数据仓库应用(OLAP)

或者类似文件流的系统中,因为读cache很不容易命中,所以作用不是很大。

阵列的算法:

阵列算法有 cache算法、寻道算法、预读算法等,它们对IOPS与cache命中率也有直接间接的影响,

阵列不一样,算法也不一样。

cache命中:

如果数据在内存中(磁盘阵列的内存),则可以直接从内存中获得,这个称为cache命中。

 关于cache,有几个要注意的地方:

一般在生产系统中都要打开cache mirror这个功能,如果一个节点失败,另一个节点的 cache mirror镜像的存在能保证不丢失数据,

把cache 数据写回磁盘。

cache读和cache 写:

对于raid 5 格式的磁盘阵列来说, cache尤其重要,数据可以先写到cache中,再由磁盘阵列写回到硬盘上去。

否则,直接写到磁盘阵列的硬盘上,由于raid 5还要读写额外的校验信息,比 raid 10 需要更多的io。

关于RAID:

建议对OLTP数据库,采用RAID 10而不是 RAID5.

原因前面也说了,因为一个读写,同样的情况下,RAID5 需要的 io比 RAID10 更多.

 存储的第二个重要指标 带宽

 吞吐量主要取决于硬盘的个数、光纤通道的数量和带宽、阵列的构架。

与IOPS一样,每个硬盘也有自己最大能支持的流量大小,硬盘类型与最大流量的关系是

15kRPM光纤硬盘>10KRPM光纤硬盘>SATA光纤硬盘

比如说,假设一个阵列有120块,15K rpm 的光纤硬盘,那么硬盘上最大可以支撑的流量是

120*13=1650MB/s

除了硬盘,就要考虑光纤通道了,

如数据仓库环境(OLAP)中,如果1块2Gb的光纤卡,所能支持的最大流量是 2Gb/8=250MB/s的实际流量。

需要4块才能达到 1GB/s的实际流量,所以数据仓库可以考虑用 4Gb的光纤卡。

最后,阵列的构架因每个阵列的不同而不同,它们也都存在内部带宽,(类似PC的总线),不过一般情况下,

内部带宽都设计的很充足,不是瓶颈所在。

 存储的第三个重要指标 响应时间

 除了IOPS与吞吐量,另一个重要指标就是 单IO的响应时间,单IO的响应时间与IOPS的当前值、吞吐量大小以及

cache 命中率都有很大的关系。

经验值表示,一个IO的响应时间在20ms以内,应用基本可以正常工作,作为一个核心的高可用OLTP环境,

最佳的单IO响应时间建议在10ms以内。

总结存储的选型:

如果应用是一个大型的交易系统,也就是典型的OLTP环境,其中以事务与小的查询语句多,基本是离散读与

离散写,首先考虑IOPS因素,并配置合适的硬盘个数和Cache 大小。

如果应用数数据仓库环境,或者是典型的OLAP环境,其中主要运行大型的SQL语句,需要大吞吐量,读写规则

基本上是连续读和连续写,则需要考虑存储系统带宽与 存储大的光纤通道带宽之和,并配置适当的硬盘个数,

这与CACHE大小关系不大。

 存储的测试方法与测试软件

LOAD RUNNER:

ORION:

推荐使用ORION,可以用它来模拟ORACLE的运行,并获得极限压力情况下的压力数据,包括IOPS,带宽与IO响应时间。

个人对目前存储主流的选型考虑:

1.成本预算问题。一般来说,级别越高,成本也越高,处于成本的考虑,采用中低端存储成为大多数用户的选择。

2.响应速度与可靠性的问题,中端存储就可能提供高速的响应速度,在相同的磁盘数量的情况下不会和高端

存储相差多远(高端存储扩展能力更强),但是可靠性方面确要差很多,所以,如果可靠性要求非常高的系统,

可以考虑用高端存储。

3.存储的评估指标。存储的主要测评指标是IOPS、带宽、与响应时间。然后,需要根据自己的业务类型,是偏重于

IOPS的OLTP环境,还是偏重于带宽的OLAP系统。如果有了这些信息,就可以根据自己的需求,多选择几个合适

于自己的存储产品,分别去做测试。

 测试是非常重要的,存储厂商一般都会配合完成这些测试,而且测试的时候,最好不要依靠存储厂商的测试软件,

要模拟自己的真正应用,做最真实的模拟测试。另外,不同的存储厂商之间,硬件环境与测试指标要完全一样,

这样才有对比。

另外,不要轻易相信厂商的数据与指标,更不要相信他们广告式的宣传。他们的指标是在适合他们的环境下测试得到的,

如IOPS,可能全部是在存储cache命中的基础上得到的,而对于用户业务环境,这样的情况不可能发生。

随着小型机的飞速发展,很多大/中型机器上的技术已经移植到小型机上,所以,大型机与小型机的区别已经不像以前那么明显,一般只是沿用以前的叫法。
在 机器处理能力上,高端的PC SERVER可能比低端的小型机更快,高端的小型机,也可能比部分大/中型机更具有快速处理能力与优越的性价比。可靠性方面,小型机具有接近大/中型机的 可靠性,PC Server在这里是无法比较的。

小型机不仅具有高速的事物处理能力,也具有高效的稳定性,比较适合高可用的OLTP数据库业务。在评测机器的具体处理能力,也就是性能指标方面,现 在又了很多种方法,如TPC-C是一种行业标准测试项目,旨在衡量联机事物处理(OLTP)的系统性能与可伸缩性的。这种基准测试项目将对包括查询、更新 及队列式小批量事务在内的数据库功能进行测试。许多IT专业人员将TPC-C视为衡量“真实”OLTP系统性能的有效指示器。

主流小型机对比:
IBM小型机系列:
IBM 小型机系列现在基本是 I系列与P系列,从Power5开始,I与P其实是统一的硬件体系,只是
OS许可(以及微码)不一样而已。在P系列,从POWER3发展到现在的 Power6,IBM以强劲的CPU处理能力,发展了众多的型号。如完整的Power5系列中,有从P505开始到P595结束的一系列机器,在P595 中,最多可以支持到2TB的内存与64颗强劲的64位power5+的处理器内核(CORE).最近推出的POWER6,可以到到4.7GHZ的主频,并 支持更复杂的计算模式,例如十进制运算。另外,从Power6与AIX6开始支持更多的虚拟化功能,例如可以把工作负载从一个服务器转到另一个服务器,而 且不会使应用发生任何中断.

HP小型机系列:
由于HP和COMPAQ合并了,所以HP服务器的产品线显得有些复杂,即有HP本身的服务器系列,也有Compaq服务器 系列.另外,因为采用了Inter 的安腾CPU,小型机方面主要分为两个系列,一是采用Inter Itanium2的RX系列,以及采用Pa-risc的Rp系列.在Rx系列,有采用Intel Itanium2的RX1620到高性能的Superdome服务器.在Rp系列,也有从Rp3410到Superdome的众多服务器.
比如 Superdome 服务器,就有2TB的内存和192个IO插槽,可以扩展到64路\128颗处理器内核(Core),也就是最多可以采用128颗PA-8800/8900 或者是Itanium 2的CPU,是HP的高端小型机。


SUN小型机系列:
   SUN的主机的市场占有率不如IBM与HP那样高,原来的主要型号有采用 UltraSparc 3构架的V系列到采用UtralSPARC 4(+)的E系列,例如 Sun Fire V100到E20K与Sun Fire E25K服务器,E20K最多36个UltralSparc 4+双线程处理器,而E25K可达72个 UltralSparc 4双线程处理器。
   SUN在最新产品中,开发了6款基于SPARC架构、运行Solaris 10开源操作系统的主机。其中 SPARC Enterprise T1000与SPARC Enterprise T2000两款服务器基于UltralSPARC T1处理器;
   数据中心等级的SPARC Enterprise M9000与SPARC Enterprise M8000,以及中端款式的SPARC Enterprise M5000\Enterprise M4000 两类产品,均采用SPARC 64-4处理器。例如 M9000最多可以达到2TB 内存与64颗 CPU,128个核心(Core)

注:
不同的厂家,在处理器(processor,也叫CPU)的概念上出现了差异,在IBM与INTEL,AMD的CPU中,一般一个核心 (CORE)对应一个处理器,就是通常叫的CPU,而在SUN CMT技术的CPU中,一个硬件芯片,可能存在多个(CORE),但是它们只叫一个处理器(CPU).

小型机的技术:

几大关键技术
1、多核技术与CMT技术
2、SMT技术
3、虚拟化与分区技术
4、高RAS特性


1、多核技术
多核技术可以看成是一种CPU的集成技术,在一个CPU处理模块(芯片)上,也就是以前的一个CPU空间大小上,可以 集成一个或多个Core。一般情况下,因为一个Core就具有一个单独处理能力与运行能力,也具有单独的CACHE,所以,在IBM\INTEL\AMD 等CPU生产厂家,都是把一个Core当成一个CPU。
而在SUN那里,这个技术被称为CMT技术,虽然一个CPU处理模块(芯片)上集成多个 Core,但是,却把每个CPU处理模块(芯片)才叫一个CPU。这个技术解决了,单位单个CPU主频上不去,但是单位面积内的CPU芯片大小不变,确具 有更强大处理能力的问题。(注意,ORACLE的收费方式不是按物理的CPU来购买LICENSE,而是按实际的Core来收费)


2、SMT技术
如果说多核技术一般指CPU的高集成度,而并发多线程技术(SMT Symmetic Muti-Threading)则是指
单一物理处理器同时分发来自多与一个硬件线程上下文的指令,在特定的OS与特定的技术条件下,可以虚化为两 个逻辑的CPU。
如IBM的很一个物理的POWER5 CPU,也就是一个CORE,在OS层面(AIX 5.3以上),将显示为两颗逻辑的CPU。


这种技术与硬件构架以及OS都是有关系的,如SMT只有POWER5才支持,而且也要特定的OS,如AIX5.3才支持。也就是 说,POWER5上跑AIX5.2,都是不支持这样的技术的。
在这样的技术中,每个POWER5 CPU有两个硬件线程,SMT旨在利用POWER5处理器的超标量特性,以便同时执行多个指令。
它的基本理念是:没有一个单一应用可使像 POWER5这样的超标量处理器达到完全饱和的状态,因此,部署同时提供输入的多个应用效果更理想。

按照这样的设想,SMT技术将在细小的OLTP应用中受益,例如高可用的OLTP数据库环境。
而大型的计算业务,例如浮点密集型的工作(耗 费单个CPU很长时间,对浮点单元与内存带宽消耗比较大),是不适合使用SMT技术的。
当然,可以在OS级别决定是否打开SMT技术,这主要取决 于这个技术是否为我们带来好处,单AIX 5.3默认就是打开SMT的。

3、虚拟化技术与分区技术
虚拟化是一个抽象层,他将物理硬件与操作系统分开,从而提供更高的IT资源利用率和灵活性。分区技术是虚拟化技术 的一个重要体现,目前常用的分区虚拟化技术是---主机之下,硬件之上的虚拟化:
主机之下,硬件之上的虚拟化:
例如HP的电路板方式的硬 分区,IBM的静态与动态分区(LPAR).在同一个物理主机上,可以把硬件
隔离成几个部分,每个部分运行不同的OS并且互相没有影响。更高级的 主机内部虚拟化,例如动态
逻辑分区,可以实现资源在不同的分区之间的动态迁移。

4、高RAS特性
小型机与普通的服务器,也就是常说的PC-SERVER是有很大差别的,最重要的一点是小型机的
高RAS(高可靠 性、高可用性、高服务型)特性,以前这是大型机的特性,现在也开始在小型机上实现了。

RAS=RELIABILITY+AVAILABILIT+SERVICEABLITY,它反映了计算机的高可靠性、高可用性、高服务型
三 个特点。

具体的含义如下:
高可靠性,即计算机能够不停机的持续运转
高可用性,即重要资源都有备份,能够检测到潜在的问题,并且能够将正在运 行的服务转移到其他资源上去,以减少停机时间,保持生产的持续运转;具有实时在线维护和延迟性维护功能。

高服务性,既能够实时在线诊断,精确定位出问题根本问题所在,做到准确无误的快速修复。
一般小型机都有自我配置、自我诊断、自我优化、自我 保护的技术。有些小型机通过上万个故障
检测点,帮助用户定位错误根源.

关于小机和存储的关系设计的几个意见:
1.lv 的划分尽量跨RAID组。而不要在一个RAID组内做,这样可以更大的提高磁盘读写效率。
2. 尽量不要使用普通文件系统方式来存储ORACLE数据库的数据文件,在大的IO系统上,特别是高可用
的OLTP环境上,采用裸设备可以大大提高数 据库的性能,并保持性能持续稳定。
理由如下:
直接写设备文件,不通过OS级别的缓存,节约了内存使用。
提升了高强度IO写的速 度,对于频繁读写的系统来说,裸设备可以提高读写的性能。
采用裸设备避免了文件系统的开销,比如维护I-node,空闲块,超级块等。
裸 设备的异步io\并行io管理一般在内核级别上完成,比文件系统优越。
裸设备相对文件系统,有更少的BUG,而且更稳定。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23490498/viewspace-730901/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 数据库范式
下一篇: Oracle Hint
请登录后发表评论 登录
全部评论

注册时间:2010-03-10

  • 博文量
    126
  • 访问量
    97675