Exadata特有的自动磁盘管理机制

原文链接: http://www.dbaleet.org/auto_disk_management_feature_in_exadata/

 

众所周知,Exadata使用的是自动存储管理(ASM)来管理它的物理磁盘,这意味着以前所有在ASM上的特性在Exadata上仍然是适用的,但是同时Exadata的磁盘管理方式依然有其独特之处。本文需要介绍的是Exadata特有的自动磁盘管理特性(auto disk management)。

自动磁盘管理,简而言之,就是Exadata能够自动的对磁盘的某些行为进行识别,从而对这些行为进行自动判断,从而自动完成特定的工作,以减少干预干预,减轻Exadata管理员的工作量。

这些自动管理的工作包括以下几个方面:

  • grididks自动在线离线(griddisk offline/online)

如果一块griddisk暂时无法访问,(并不意味着一定是磁盘损坏,有可能是cellsrv进程状态不正常)那么其在ASM中的状态就是自动变为offline, 如果在某一时刻变为可用,则其对应的ASM磁盘会自动变为online状态。

  • gridisk自动删除(griddisk drop)

如果一块physical disk失效了,那么在这块physical disk上所有的griddisk在ASM中会被自动的强制的drop掉(drop force)

如果physcial disk的状态变为predictive failure, 那么这块physical disk上所有的griddisk在ASM中会被自动的drop

如果flashdisk性能出现下降,那么其对应的griddisk会在ASM中被自动的强制的drop掉(drop force)

  • griddisk自动添加(griddisk add)

如果更换了一块物理盘(physical disk),那么这块physical disk对应的celldisk和griddisk会被自动创建,并且自动的加到asm磁盘组中。但是有一个重要的前提就是之前损坏的physical disk是Exadata自动强制删除的才会有效,如果griddisk是被手工使用删除并且没有使用force选项的,那么更换physical disk以后则必须手工的加回到asm磁盘组。

在正常情况下,如果我们使用force选项手工从ASM磁盘组中删除一块griddisk,那么这块griddisk会被自动重新加回到ASM中。所以在正常情况下,如果需要把一块griddisk从asm磁盘组中删除,那么请不要使用force选项。

  • cell image滚动升级的时候自动online/offline(griddisk offline/online for rolling Exadata software (storage cells) upgrade)

在进行exadata存储节点cell image升级之前,所有的griddisk在asm中会被自动offline,等到cell image升级完成以后,所有的griddisk在ASM中又会重新online。

  • griddisk手工激活与去激活(Manual griddisk activation/inactivation)

如果一块griddisk在cell上被去激活,那么其在ASM中会自动变为offline的状态,

如果一块griddisk在cell上被重新激活,那么其在ASM中又会重新变为online的状态。

下图总结概括了Exadata自动磁盘管理的触发条件:

 

 

但是依然有两类情况需要人为干预的:

1. 因同一AU在所有的镜像都已经丢失或者同时不可访问导致的磁盘组dismount,需要其可访问之时手动重新mount。

2. 将一个磁盘从一个cell使用import的方式移动到另外一个cell,需要用户手工将这个磁盘online。

 

此外,在db节点还引入了两个新的进程XDMG和XDWK来管理此行为:

XDMG是一个隶属于ASM实例的新的后台进程,它的主要功能是:

1. 监控失败的存储节点是否可访问,如果cell是可以访问的,那么则其行为来决定是online,drop还是add的动作:

它受理来自cell的以下请求:

ONLINE 一个磁盘 (例如插入一块新的physical disk)
OFFLINE一个磁盘 (例如去激活一块griddisk)
DROP/ADD一块磁盘 (例如更换一块新的physical disk)

查询griddisk的“mode_status”字段;

查询griddisk的“asmdeactivationoutcome”字段

 

XDMK则是另外一个新的ASM的后台进程。它是实际进行online、drop和add操作的进程,XDMG发送操作指令给XDWK, XDWK来实际完成这些工作,XDMK是按需生成的,也就是说只有XDMG接到online, drop或者是add操作请求的时候才会产生XDWK进程,XDWK在完成制定操作一段时间以后,如果处于空闲状态会自动关闭。

 

Exadata自动磁盘管理是通过隐含参数  _auto_manage_exadata_disks来控制的,默认参数为true,在某些情况下,例如bug,Oracle support可能会要求将其设置为false关闭这个特性。    _auto_manage_num_tries控制自动操作重复执行的次数,如果自动online,offline,drop,add操作执行失败的话,它的取值在1到10之间,也就是说最多重试的次数为10次,其默认值为2。另外还有一个相关的参数是_auto_manage_max_online_tries,此参数控制online的最大次数,取值也是位于位于1到10之间,默认值为3

 

我们可以设置一些event对Exadata auto manage disk的特性进行跟踪,这个特性分为两大部分:asm端和cell端,

再asm端,在ASM实例中,可以设置一下事件对asm端的自动磁盘管理特性其进行跟踪:

SQL> alter system set events=’trace[KXDAM] memory highest, disk highest’ scope=spfile sid=’*’;

同时,在cell端,可以设置以下事件对cell段的自动磁盘管理特性进行跟踪:

CellCLI> alter cell events=’trace[cellsrv.cellsrv_events_layer] memory=highest,disk=highest’

 

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号