sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

当前位置:Oracle研究中心 > 产品DBA > Oracle ASM >

【案例】Oracle ASM扩展新LAN加入asm diskgroup asm rebalance 原理

时间:2016-12-22 11:22   来源:Oracle研究中心   作者:网络   点击:

天萃荷净 Oracle研究中心案例分析:运维DBA反映Oracle数据库的ASM空间不足,需要扩展。通过划新的LAN加入asm diskgroup并分析asm rebalance 原理。

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的Oracle技术博客
本文链接地址: asm rebalance 原理

上周6,某客户进行存储扩容(11gR2 rac asm),扩容完成之后,我们需要将新划的lun加到现有的asm diskgroup中.

整个扩容过程比较顺利,唯一让人比较郁闷的是在将一个lun加到diskgroup时,时间太长。这个lun大小也就300gb,

整个数据库数据也就不到100gb,add disk rebalance需要花了3.5小时. 如下是操作节点的alert log信息 :

SQL> alter diskgroup DATADG add disk '/dev/rhdisk5' rebalance power 5 wait

NOTE: Assigning number (2,1) to disk (/dev/rhdisk5)
NOTE: requesting all-instance membership refresh for group=2
Sat Aug 03 03:10:25 2013
NOTE: initializing header on grp 2 disk DATADG_0001
NOTE: cache opening disk 1 of grp 2: DATADG_0001 path:/dev/rhdisk5
NOTE: requesting all-instance disk validation for group=2
Sat Aug 03 03:10:25 2013
NOTE: disk validation pending for group 2/0xc51feed1 (DATADG)
SUCCESS: validated disks for 2/0xc51feed1 (DATADG)
Sat Aug 03 03:10:38 2013
NOTE: initiating PST update: grp = 2
kfdp_update(): 13
Sat Aug 03 03:10:38 2013
kfdp_updateBg(): 13
NOTE: PST update grp = 2 completed successfully
Sat Aug 03 03:10:39 2013
NOTE: membership refresh pending for group 2/0xc51feed1 (DATADG)
kfdp_query(DATADG): 14
kfdp_queryBg(): 14
kfdp_query(DATADG): 15
kfdp_queryBg(): 15
SUCCESS: refreshed membership for 2/0xc51feed1 (DATADG)
NOTE: starting rebalance of group 2/0xc51feed1 (DATADG) at power 5
Starting background process ARB0
Starting background process ARB1
Sat Aug 03 03:10:43 2013
ARB0 started with pid=29, OS id=270748
Starting background process ARB2
Sat Aug 03 03:10:43 2013
ARB1 started with pid=30, OS id=1310820
Starting background process ARB3
Sat Aug 03 03:10:43 2013
ARB4 started with pid=33, OS id=1216590
NOTE: assigning ARB1 to group 2/0xc51feed1 (DATADG)
NOTE: assigning ARB2 to group 2/0xc51feed1 (DATADG)
NOTE: assigning ARB3 to group 2/0xc51feed1 (DATADG)
NOTE: assigning ARB4 to group 2/0xc51feed1 (DATADG)
Sat Aug 03 05:07:48 2013
NOTE: stopping process ARB2
NOTE: stopping process ARB3
NOTE: stopping process ARB4
NOTE: stopping process ARB1
Sat Aug 03 06:41:13 2013
NOTE: stopping process ARB0
SUCCESS: rebalance completed for group 2/0xc51feed1 (DATADG)
Sat Aug 03 06:41:15 2013
NOTE: GroupBlock outside rolling migration privileged region
NOTE: requesting all-instance membership refresh for group=2
NOTE: initiating PST update: grp = 2
kfdp_update(): 16
Sat Aug 03 06:41:19 2013
kfdp_updateBg(): 16
NOTE: PST update grp = 2 completed successfully
NOTE: initiating PST update: grp = 2
kfdp_update(): 17
kfdp_updateBg(): 17
NOTE: PST update grp = 2 completed successfully
NOTE: membership refresh pending for group 2/0xc51feed1 (DATADG)
Sat Aug 03 06:41:24 2013
kfdp_query(DATADG): 18
kfdp_queryBg(): 18
SUCCESS: refreshed memberOracleоship for 2/0xc51feed1 (DATADG)
Sat Aug 03 06:41:25 2013
SUCCESS: alter diskgroup DATADG add disk '/dev/rhdisk5' rebalance power 5 wait

可以看到,从03:10:25开始到06:41:25 才完成整个rebalance过程,也就是3小时31分钟.

到这里大家或许跟我一样,有一个疑问,那就是oracle asm 的rebalance 操作,具体包含了哪些细节? 或者说rebalance操作需要做哪些事情 ?

回答这个问题之前,首先我们需要明白,asm 在什么情况下进行rebalance操作.

实际上,rebalance主要是在diskgroup中disk member发现变化时,比如add/drop/resize disk操作.

那么,asm diskgroup的rebalance操作,到底需要做什么呢 ?或者说包含了哪些步骤 ?

不同的oracle 版本,其实rebalance操作是有所差异的,在10g版本中,asm rebalance主要包含如下2个操作:

—planning
—extent relocatyion


然而在oracle 11.1版本中,引入了asm fast rebalance特性,大概是是说可以将asm实例启动到Restricted mode然后去完成rebalance操作。

例如:

SQL> startup RESTRICT;
ASM instance started
Total System Global Area 92065792 bytes
Fixed SIZE 1297984 bytes
Variable SIZE 65601984 bytes
ASM Cache 25165824 bytes

SQL> ALTER diskgroup data1 mount restricted;
Diskgroup altered.

SQL> ALTER diskgroup data1 rebalance;
Diskgroup altered.

这一操作,在11.2中又有所变化,引入了一个compact操作,所谓compact操作,其实就是数据重组。 也就是说在11.2版本中,rebalance操作应该包含如下几个步骤了:

1) planning
2) extent relocation
3) compacting


这里针对这几个步骤简单描述一下:

planning: 也就是说oracle会自己计算,绝对需要将那些extent进行relocation以及需要move到什么地方去,应该也是用的hash算法.

extent relocation:这个其实是根据前面planning的结果,将数据按照extent为单位进行move,移动到其他的disk上,均匀分布。

我们称呼这个操作为extent relocation。一般来讲,这个操作是非常耗时的,也就是说整个rebalance操作中基本上时间大多的消耗在relocation这一步。

当进行extent relocation的时候,观察rbal的log会发现类似如下的信息:

*** 2013-08-03 03:11:09.824
ARB0 relocating file +DATADG.259.720462059 (120 entries)

*** 2013-08-03 03:13:21.610
ARB0 relocating file +DATADG.260.720462079 (120 entries)

*** 2013-08-03 03:15:12.632
ARB0 relocating file +DATADG.260.720462079 (120 entries)

*** 2013-08-03 03:16:59.255
ARB0 relocating file +DATADG.261.720462095 (1 entries)
。。。。。。。
。。。。。。。
*** 2013-08-03 05:07:19.041
ARB4 relocating file +DATADG.287.763989695 (120 entries)

*** 2013-08-03 05:07:32.945
ARB4 relocating file +DATADG.287.763989695 (120 entries)

在进行extent relocation的阶段,是可以进行并行操作的,该操作是通过我们所熟知的一个参数asm_power_limit来进行控制。
该参数在11.2.0.2以下版本中,其取值范围是0~11. 在11.2.0.2以及以上版本取值范围已经扩展为0~1024了.

该参数控制rbal的slave process个数,换句话将,通常参数越大rebalance操作也就越快,当然这样也要看系统硬件配置.

另外有一点需要注意的是,rbal的slave process的可以动态调整的,例如:

alter diskgroup diskgroup_name rebalance power 5;需要注意的是,哪怕是你alter diskgroup add disk命令已经发出了,也可以使用上面的方式来动态调整rebalance power值.

当rebalance power值大于1后,oracle 会启动多个rbal salve process,类似rba,rba1这样的命名.

这部分的消耗时间可以通过v$asm_operation.est_minutes来进行估算,但是这个值不一定准确,受cpu,io等因素的影响。

compacting: 这个操作是11gR2引入的一个未公布的特性,其目的是在前面extent relocation完成之后,oracle将diskgroup中都的每个disk中的数据进行重组。什么是重组? 这里的重组其实是disk级别,不再是整个diskgroup级别. 其目的是将数据尽可能的挪到disk的外圈,这样可以加快访问,为什么可以加快访问? 这样可以降低disk 寻道时间.

关于该特性,11gR2版本中引入了1个参数来进行控制:
_disable_rebalance_compact


我们可要通过动态调整该参数来关闭这个特性,当rebalance进行到这个步骤时,查询v$asm_operation.est_minutes会显示为0.

这也就是为什么我们上次看到est_minutes为0了,rebalance 操作却还没有完成,还进行了1.5小时.

那么最后大家可能比较关心的是,如何加快asm rebalance的速度,大概有如下几种方法:

1) 调大asm_power_limit参数
2) 将参数_disable_rebalance_compact设置为true,可动态调整
3) 设置diskgroup的attributes属性:_REBALANCE_COMPACT=false
4) 将参数_asm_imbalance_tolerance调的更低(11gR2默认为3%)
4) 调整参数_disable_rebalance_space_check,关闭compact过程中的space use检查.
5) 调大_asm_rebalance_plan_size参数,该参数控制maximum rebalance work unit,通过调大该参数
应该可以降低extent relocation的次数,但是这个也受限于系统的io能力.


最后说明一下,对于生产环境而言,大多数情况下建议调大asm_powner_limit即可,其他几个隐含参数要慎重,可能碰到bug.

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【案例】Oracle ASM扩展新LAN加入asm diskgroup asm rebalance 原理

本文由大师惜分飞原创分享,网址:http://www.oracleplus.net/arch/1429.html

Oracle研究中心

关键词:

asm rebalance 原理

扩展Oracle ASM磁盘组

新LAN加入asm diskgroup