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

原作者: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方法论的提倡者和践行者。

原文发布于微信公众号 - 沃趣科技(woqutech)

原文发表时间:2016-07-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

Red Team 工具集之远程控制软件

上图是一个 Red Team 攻击的生命周期,整个生命周期包括:信息收集、攻击尝试获得权限、持久性控制、权限提升、网络信息收集、横向移动、数据分析(在这个基础上...

24500
来自专栏北京马哥教育

高流量站点NGINX与PHP-fpm配置优化

使用Nginx搭配PHP已有7年的这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置。 以下正是这方面的一些提示和建议: 1. 将TCP切换为...

56850
来自专栏数据和云

安全预警:独立发布的Oracle严重 CVE-2018-3110 公告

在 2018年8月10日,Oracle 独立的发送了一封"安全警告"邮件给所有的 Oracle 用户,这封邮件的标题是:Oracle Security Aler...

15620
来自专栏FreeBuf

32764端口后门重出江湖,影响多款路由器

在年初的时候已经发布关于秘密后门——“TCP 32764”的报道,利用该后门漏洞,未授权的攻击者可以通过该端口访问设备,以管理员权限在受影响设备上执行设置内置操...

23590
来自专栏张伟博客

2016 Google hosts 持续更新【更新于:2016-12-29】

17770
来自专栏小狼的世界

HP-UX培训学习笔记

HP-UX操作系统全称为Hewlett Packard UniX,是惠普服务器上所有的操作系统。其发源自 AT & T SRV4系统,可以支持HP的PA-RIS...

18220
来自专栏Java架构沉思录

Web安全的三个攻防姿势

关于Web安全的问题,是一个老生常谈的问题,作为离用户最近的一层,我们大前端确实需要把手伸的更远一点。

11020
来自专栏微服务生态

论代码级性能优化变迁之路(一)

大家好,很久没有和大家一起讨论技术了,那么今天我将和大家一起探讨我负责的某项目的性能变迁之路。

9220
来自专栏运维

用Openfiler制作iSCSI添加为vSphere集群的共享存储

用Openfiler制作iSCSI添加为vSphere集群的共享存储 实验环境 物理机:DELL  IPTIPLEX 990 PC机    I52400处理...

15410
来自专栏散尽浮华

解决Jira和Confluence访问打开越来越缓慢问题

Jira和Confluence部署在同一台服务器上,跑一段时间后,发现访问jira和confluence时,打开越来越缓慢。这是因为根据主机物理内存不同,默认的...

45330

扫码关注云+社区

领取腾讯云代金券