查看原文
其他

ASM 翻译系列第十九弹:ASM Internal ASM Continuing Operations Directory

2016-07-29 魏兴华 沃趣科技

原作者:Bane Radulovic

译者:    魏兴华

审核:    魏兴华

ASM Continuing Operations Directory
ASM中一些运行时间较长的操作,例如rebalance, drop disk, create/delete/resize file,这些信息ACD的简要结构不足以描述其变化,这些操作需要通过ASM的COD目录去追踪,COD是ASM的4号文件,每一个磁盘组都会有一个COD。如果进程在执行长时间操作未正常完成前异常终止,将会有恢复进程查看COD区域的记录尝试完成或回退这个操作,有两种类型的持续性操作:background 和 rollback。

Background operation
后台操作是由ASM实例的后台进程去执行的,它作为磁盘组的维护任务的一部分,而非特殊要求,直到完成或者ASM实例挂掉,如果ASM实例挂掉,执行恢复的实例需要重新执行后台操作,磁盘组的rebalance就是一个很好的后台操作的例子。我们查询内部视图X$KFFXP找到磁盘组3的COD的AU分布,COD是ASM的文件4,因此在查询中设置了number_kffxp=4。
SQL> SELECT x.xnum_kffxp "Extent",
x.au_kffxp "AU",
x.disk_kffxp "Disk #",
d.name "Disk name"
FROM x$kffxp x, v$asm_disk_stat d
WHERE x.group_kffxp=d.group_number
and x.disk_kffxp=d.disk_number
and x.group_kffxp=3
and x.number_kffxp=4
ORDER BY 1, 2;
  Extent         AU     Disk # Disk name
---------- ---------- ---------- ------------------------------
       0          8          0 ASMDISK5
SQL>
以上输出说明ACD位于磁盘ASMDISK5的AU 8,我们来通过kfed查看一下(注意这里的磁盘组AU大小为4MB)
$ kfed read /dev/oracleasm/disks/ASMDISK5 ausz=4m aun=8 blkn=0 | more
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                            9 ; 0x002: KFBTYP_COD_BGO
...
kfrcbg.size:                          0 ; 0x000: 0x0000
kfrcbg.op:                            0 ; 0x002: 0x0000
kfrcbg.inum:                          0 ; 0x004: 0x00000000
kfrcbg.iser:                          0 ; 0x008: 0x00000000
$
上面显示了一个COD的块,kfbh.type=KFBTYPCODBGO显示为background类型的操作,不过此刻并没有后台操作发生,因为所有的kfrcbg区域都是0,这代表了当前没有活跃的后台操作,如果操作代码kfrcbg.op为1,那么将表示有活跃的磁盘的rebalance操作在进行。

Rollback operation
Rollback操作类型类似于数据库的事务。ASM的前台进程发起请求,为了能够记录这个rollback操作,必须在ASM的COD目录中申请一个槽位,COD目录的block 1展示了所有的槽位和使用状态,如果所有的槽位当时都是忙的,那么这个操作会休息一段时间,直到发现其中一个可以使用。rollback类型操作过程中,磁盘组是一个不一致的状态,这个操作需要完成或者回退所有它对磁盘组的更改。数据库实例大多时候会去执行这个操作(例如添加数据文件)。如果数据库实例挂掉或者ASM前台进程挂掉,一个不可恢复的错误会发生,然后这个操作会被终止。创建文件是一个rollback操作非常好的例子,如果在文件空间分配过程中发生错误,那么已经分配过的空间需要被删除,如果数据库实例没有提交文件的创建操作,这个文件必须被自动删除,如果ASM实例挂掉,这个删除操作会由恢复实例来执行。我们来看一下COD的block 1:
$ kfed read /dev/oracleasm/disks/ASMDISK5 ausz=4m aun=8 blkn=1 | more
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           15 ; 0x002: KFBTYP_COD_RBO
...
kfrcrb10[0].opcode:                   1 ; 0x000: 0x0001
kfrcrb10[0].inum:                     1 ; 0x002: 0x0001
kfrcrb10[0].iser:                     1 ; 0x004: 0x00000001
kfrcrb10[0].pnum:                    18 ; 0x008: 0x00000012
kfrcrb10[1].opcode:                   0 ; 0x00c: 0x0000
kfrcrb10[1].inum:                     0 ; 0x00e: 0x0000
kfrcrb10[1].iser:                     0 ; 0x010: 0x00000000
kfrcrb10[1].pnum:                     0 ; 0x014: 0x00000000
...
$
kfrcrb10[i] 区域跟踪了所有活跃的rollback类型操作,我们看到有一个操作正在进行中,kfrcrb10[0]的值都是非0值,从操作代码我们可以知道这是一个文件的创建操作,kfrcrb10[0].inum=1意味着这个操作运行在ASM的实例1。rollback操作类型的代码参照表如下:
1 - Create a file
2 - Delete a file
3 - Resize a file
4 - Drop alias entry
5 - Rename alias entry
6 - Rebalance space COD
7 - Drop disks force
8 - Attribute drop
9 - Disk Resync
10 - Disk Repair Time
11 - Volume create
12 - Volume delete
13 - Attribute directory creation
14 - Set zone attributes
15 - User drop

Conclusion
ASM的COD目录跟踪所有长时间运行的ASM操作,对于由于任何原因导致的问题,COD目录中相关记录可以用来把这些操作完成或回退。这些操作可能由另一个实例来完成或者由故障实例重启后来完成。



关于译者
魏兴华,沃趣科技高级技术专家,主要参与公司一体机产品、监控产品、容灾产品、DBaaS平台的研发和设计。曾就职于东软集团,阿里巴巴集团,Oracle ACE组成员,DBGEEK 用户组发起人,ITPUB认证博客专家,ACOUG、SHOUG核心成员。曾在中国数据库大会、Oracle技术嘉年华、ORCL-CON、YY分享平台等公开场合多次做过数据库技术专题分享。对Oracle 并行机制、数据库异常恢复方法、ASM等有深入的研究,人称”Oracle Internal达人”,对企业数据库架构设计、故障恢复、高并发下数据库性能调优有丰富的经验,擅长从等待事件角度分析解决数据库性能问题,是OWI方法论的提倡者和践行者。
往期精彩

ASM 翻译系列第一弹:基础知识 ASM AU,Extents,Mirroring 和 Failgroups

ASM 翻译系列第二弹:ASM 12C 版本新特性

ASM 翻译系列第三弹:基础知识 About ASM disk groups, disks and files

ASM 翻译系列第四弹:高级知识 kfed 元数据编辑器

ASM 翻译系列第五弹:高级知识 ASM 元数据概述

ASM 翻译系列第六弹:高级知识 如何映射asmlib管理的盘到它对应的设备名

ASM 翻译系列第七弹:高级知识 How many partners?

翻译系列第八弹: 高级知识ASM file extent map

ASM 翻译系列第九弹:高级知识ASM Toolbox

ASM 翻译系列第十弹:ASM Internal ASM DISK header

ASM 翻译系列第十一弹:高级知识 Offline or drop?

ASM 翻译系列第十二弹:ASM Internal amdu - ASM Metadata Dump Utility

ASM 翻译系列第十三弹:ASM 高级知识 - Forcing the issue

ASM 翻译系列第十四弹:ASM Internal Rebalancing act

ASM 翻译系列第十五弹:ASM Internal ASM File Directory

ASM 翻译系列第十六弹:ASM Internal ASM Active Change Directory

ASM 翻译系列第十七弹:ASM Internal ASM Disk Directory

ASM 翻译系列第十八弹:ASM Internal ASM file number 5

关于沃趣

杭州沃趣科技股份有限公司创建于2012年,创始团队为原阿里巴巴数据库及系统运维团队核心骨干,凭借着多年的运维经验,为行业客户提供专业数据库、系统相关的服务和产品;专注为用户提供基于高性能、高可用、可扩展的开放数据库云平台解决方案的国产厂商。

沃趣科技的产品已广泛应用于证券、保险、医疗、广电传媒、银行、电信、能源电力、快递物流、公共事业、大型企业等,为这些行业用户持续提供行业解决方案及服务支持。

研发中心位于杭州,同时在北京、上海、广州、南京、兰州、沈阳建立了分支机构,建立了辐射全国的销售和服务体系。

我们始终坚信,数据是驱动企业创新的源动力!坚持围绕企业数据库做好一件事

                        ——让高性能触手可及!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存