Orion版本更新到11.1.0.7

Orion版本更新到11.1.0.7

Orion是Oracle推出的一款存储测试工具,通过模拟Oracle数据库的IO请求方式来测试存储的性能,很早之前piner就推荐过。从我们的实际使用经验来看,orion的测试结果还是比较符合实际情况的。但是也发现过一些问题,尤其是AIX版本的,测试结果受cache的干扰比较严重,无法将压力压到最终的物理硬盘上去,而Linux版本的一直都还是比较准确的。

最近Oracle对orion做了更新,版本号升级到了11.1.0.7,和数据库的版本号保持一致了。虽然Oracle在网站上声明不对该工具提供支持,但看起来还是比较重视的,不过orion确实是一款不可多得的存储测试工具,尤其是测试随机IO的方法,是经得住实践的考验的。只是一直没有推出HP-UX版本的,这次依然没有,用HP的兄弟们就要有点遗憾了。

有兴趣的朋友,可以从这里下载最新的版本,只是文档一直都是老版本,很长时间都没有更新过了,但是参数都一样,改的应该都是一些bug和内部算法,所以文档是否更新不那么重要了。

SSD硬盘的IO性能测试

发现有一段时间没有写东西了,忙碌是懒惰的接口,接下来还是需要经常写点什么的,好记性不如烂笔头。最近拿到了一台SSD硬盘的测试机,今天抽空用Orion做了几个测试,结果嘛,应该说随机读的IOPS的性能是非常满意的。测试环境为Linux+Orion,一共三块32G的SSD硬盘,直接用裸盘,不做raid,不做文件系统,避免cache的影响。不多废话,看结果:

三块盘的8k随机读最高接近14000,响应时间1ms左右,可以说随机读是SSD相对传统机械硬盘的最大优势所在,按照15k转速机械盘最高200左右(此时响应时间基本到了20ms)的IOPS计算,一块SSD至少相当于24块机械盘,当然,这仅仅是指的随机读的性能。而对于像淘宝这类web应用来说,随机读的IOPS往往是最关键的问题所在。

吞吐量大约每块盘在120MB/s左右,这个相对来说,提升的空间没有IOPS明显,但也算一个不错的值了。

8K随机写,每块盘大概在300左右,相对于读来说,写还是偏慢,当然相对机械盘还是有成倍的性能提升的。

顺序写的吞吐量和读基本一致,那么吞吐量的瓶颈有可能在IO通道上,而不一定是SSD盘本身的限制。

上面只是一个初步的测试结果,没有做长时间的稳定性测试。不过从上面的数据来看,SSD在随机读方面的优势还是非常大的。目前Intel 32G的SSD报价已经在4000左右了,相对来说,也不算太贵了。但是32G的单盘容量还是太小了点,而且10w次单点写的问题也还有待新技术的解决,不管目前还存在多少问题,SSD的未来应该是光明的,我很看好你哦。

ASM如何识别磁盘

在ASM中,要创建diskgroup或者往已有的diskgroup里添加新的disk,则该disk必须已经识别,也就是要在v$asm_disk里有记录。ASM会根据asm_diskstring指定的路径去检查所有的磁盘。另外,查询v$asm_diskgroup和v$asm_disk也会导致这个识别磁盘动作的发生,所以平时最好查询v$asm_disk_stat来替代v$asm_disk。

Oracle也提供了一个工具来手工识别磁盘,就是KFOD,注意不是KFED哦。

$kfod -h
_asm_a/llow_only_raw_disks              KFOD allow only raw devices [_asm_allow_only_raw_disks=TRUE/(FALSE)]
_asm_l/ibraries         ASM Libraries[_asm_libraries='lib1','lib2',...]
_asms/id                ASM Instance[_asmsid=sid]
a/sm_diskstring         ASM Diskstring [asm_diskstring='discoverystring', 'discoverystring' ...]
d/isks          Disks to discover [disks=raw,asm,all]
g/roup          Group discover [group=controlfile]
n/ohdr          KFOD header suppression [nohdr=TRUE/(FALSE)]
o/p             KFOD options type [OP=DISKS/GROUPS/ALL]
p/file          ASM parameter file [pfile='parameterfile']
s/tatus         Include disk header status [status=TRUE/(FALSE)]
v/erbose                KFOD verbose errors [verbose=TRUE/(FALSE)]

可以看到KFOD使用起来还是比较简单的。一个实际执行的例子如下:

$kfod disks=all status=true
---------------------------------------------------------------
 Disk          Size Header    Path
==========================================================
   1:       1023 Mb FOREIGN   /dev/raw/raw1
   2:     273708 Mb MEMBER    /dev/raw/raw10
   3:     273708 Mb MEMBER    /dev/raw/raw11
   4:     273708 Mb MEMBER    /dev/raw/raw12
...
--------------------------------------------------------------
ORACLE_SID ORACLE_HOME
=========================================================
     +ASM4 /u01/oracle/product/10g/db
     +ASM3 /u01/oracle/product/10g/db
     +ASM2 /u01/oracle/product/10g/db
     +ASM1 /u01/oracle/product/10g/db

lvm2与powerpath的Found duplicate PV问题

HP的DL580,OS是Redhat Enterprise Linux 4.5,接EMC CX700的存储,在安装了powerpath多路径软件后,系统能正确的识别出路径合并后的/dev/emcpower*设备。但是如果用lvm2来管理这些设备,会发现无论是创建还是查看pv/vg/lv都会报一堆的重复pv的问题:

#pvs
  Found duplicate PV ia0wzQ0pQ8J5H4Hu8hsubKjmx0T7bCNf: using /dev/emcpowert not /dev/sdc
  Found duplicate PV OYmrYleEE05bGKm0pBWT60afWjl827a6: using /dev/sde not /dev/emcpowers
  Found duplicate PV 0MWBXuho29Gnr5WKm3v0sZbXun3Mso2x: using /dev/sdg not /dev/emcpowerr
...

这个还可以勉强忍受,最头痛的是pvcreate后的名字,也有些是/dev/emcpower*,有些是/dev/sd*,这时候你要在这些pv上创建vg,要从不同的raid组来选取lun,也就是想知道pv对应lun的关系的时候,就一个头两个大。

PV             VG     Fmt  Attr PSize   PFree 
...
  /dev/emcpowerk vg_u03 lvm2 a-   167.03G   2.34G
  /dev/emcpowerl vg_u01 lvm2 a-   167.03G   2.34G
  /dev/sdaa      vg_log lvm2 a-   127.41G 160.00M
  /dev/sdab      vg_log lvm2 a-   127.41G 160.00M
...

没有办法,只有通过修改/etc/lvm/lvm.conf中的过滤规则来强行让lvm略过非powerpath设备:

filter = [ "a/cciss*$/" "a/emcpower.*/" "r/.*/" ]

上面这个过滤串的意思是,接受(Accept)所有路径中包含cciss和emcpower的设备,拒绝(Reject)所有其他的设备。由于是HP的pc server,其本地硬盘的设备在os中的路径是/dev/cciss/cndn。假如是其他系统,本地盘是传统的sd或者hd的,则需要做相应修改。sd比较麻烦点,因为duplicate出来的也是/dev/sd*,所以需要确认哪些是需要accept的本地硬盘,哪些是需要reject的重复pv。另外,lvm识别出来的设备可以在/etc/lvm/.cache中查看,也可以根据这个文件的内容来制定过滤规则。

整个世界终于清净了

#pvs
  PV              VG   Fmt  Attr PSize   PFree 
  /dev/emcpowera       lvm2 --   100.24G 100.24G
  /dev/emcpoweraa      lvm2 --   100.24G 100.24G
  /dev/emcpowerab      lvm2 --   100.24G 100.24G
...