[zt] Oracle10g ASM Auto IO Rebalance新特性及ASM体系结构

ASM ( Automatic Storage Management ) 的一个重要特性是可以进行在线磁盘重配置及动态均衡。

当我们向已有磁盘组中增加磁盘后,Oracle会自动进行IO均衡,为了完成这个任务,Oracle引入了一个新的后台进程:

[Oracle@danaly ~]$ ps -ef|grep ora_rbal*
Oracle    3815     1  0 Jan23 ?        00:00:01 ora_rbal_danaly
Oracle   31601 23407  0 14:33 pts/2    00:00:00 grep ora_rbal* 

这个进程用来进行IO均衡。

IO调整是自动进行的,并且这个平衡速度是可以控制的。

Oracle通过一个新增的参数:asm_power_limit 来控制速度。
该参数取值范围为1~11,参数值越大平衡速度越快。

Oracle文档对该参数解释为:

ASM_POWER_LIMIT specifies the maximum power on an Automatic Storage Management instance for disk rebalancing. The higher the limit, the faster rebalancing will complete. Lower values will take longer, but consume fewer processing and I/O resources.

If the POWER clause of a rebalance operation is not specified, then the default power will be the value of ASM_POWER_LIMIT.

 该参数缺省值为1:

SQL> show parameter power
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ----------------
asm_power_limit                      integer                1
 

该参数也可以在增加磁盘时指定: 

SQL> alter diskgroup ORADG add disk 'ORCL:VOL6' rebalance power 11;
Diskgroup altered. 

我们可以看一下,最初我的磁盘使用情况为: 

SQL> select name,total_mb,free_mb from v$asm_disk;
NAME                   TOTAL_MB    FREE_MB
-------------------- ---------- ----------
                           2870          0
VOL1                      19077       6571
VOL2                      19077       6497
VOL3                      19077       6558
VOL4                      12228       4321
VOL6                     104187      97622
6 rows selected. 

经过Oracle的自动调整均衡之后,磁盘空间使用情况变为:

SQL> select name,total_mb,free_mb from v$asm_disk;
NAME                   TOTAL_MB    FREE_MB
-------------------- ---------- ----------
                           2870          0
VOL1                      19077      13337
VOL2                      19077      13381
VOL3                      19077      13337
VOL4                      12228       8548
VOL6                     104187      72966
6 rows selected. 

ASM在存储管理上实在是给我们带来了更多的便利之处。

 

 

---------------------------------------------------------------------------------------------------- 

 

ASM体系结构

 

1 ASM 作为Oracle推荐的首选方案,除了具有集群文件系统的功能,同时还集成了冗余,I/O分散等卷管理器的功能.可以通过两种方式使用ASM,
包括建立在裸设备上,如果安装ASMLIB,也可以建立在块设备上.

2 ASM Instance 与RDBMS 的交互
当ASM实例挂载一个磁盘组之后,ASM会把Disk Group Name, ASM Instance Name, Oracle Home Path等信息注册到CSS,这些信息会被用来构造Connect String.
当RDBMS启动过程中需要访问某个ASM File时, RDBMS会和CSS联系,从CSS中获取Connect String,然后发起一个到ASM实例的连接,这条ASM和RDBMS实例之间的初始连接叫作
Umbilicu(脐带),只要RDBMS打开ASM File,这个连接就会保持活动.直到所有ASM File都被RDBMS实例关闭之后,这个连接才会关闭.

3 SGA
ASM 的SGA和RDBMS没有区别, 也包括Buffer Cache, Shared Pool, Large Pool等部分,需要注意的是Shared Pool, 因为Extent Map也放在这部分内存中.
Extent Map: 存储RDBMS实例中的存储分配单元Extent与ASM实例中的分配单元AU的对应关系.

4 后台进程
ASM实例:
1) RBAL: reblancer进程,负责规划ASM磁盘组的Reblance活动

2) ABRn: 是RBAL进程的子进程,真正完成Reblance活动

RDBMS实例:
1) RBAL: 负责打开每个磁盘组的所有磁盘
2) ASMB: 这个进程作为ASM实例和数据库实例之间的信息通道.这个进程负责与ASM实例的通信,它先利用Diskgroup name从CSS获得管理该Diskgroup的ASM实例的连接串,然后建立到ASM的持久连接,两个实例通过这条连接定期交换信息,同时也是一种心跳机制.
3)O0nn 01-10:这组进程建立到ASM实例的连接,某些长时间操作比如创建数据文件,RDBMS会通过这些进程向ASM发送信息


5 文件
ASM实例的运行表面上看不需要任何文件,实际上ASM也需要许多"文件"用来保证正常运行,只是这些文件是Oracle内部维护的,对于DBA不可见,而且也不需要DBA的干预.


6 存在的问题

问题记录:
1) Oracle文档一再强调的在添加/删除DiskGroup, Disk,在ASM层面的管理操作时不影响应用系统的理解是, 在RAC层面, 对某一个节点上ASM操作,这个节点上的RDBMS必须Shutdown,ASM 实例必须Dismount. 但由于这是RAC,业务不会受到影响,还可以走另一个节点. 不是这样的.
ASM 与RAC 并没有必然的关联, Oracle一再强调的可以在线管理,是指DiskGroup组之间不会互相影响.
假定你想删除一个DiskGroup,只要这个DiskGroup上的文件在RDBMS不是 ACTIVE的就行.


2) 对ASM的理解,ASM其实就是LVM披上了Oracle的马甲,
 Disk 对应PV, Diskgroup 对应VG,

3) ASM 实例的Spfile, 或pfile 在哪里呢?
$ORACLE_HOME/dbs/spfile+ASM.ora

 

请使用浏览器的分享功能分享到微信等