1. 首页
  2. IT资讯

关于ASM的failgroup概念的探索方法

关于ASM的failgroup概念的探索方法

分类: ORACLE Studying 87人阅读 评论(0) 收藏 举报
大家问到过ASMfailgroup的含义,或者问到failgroup跟normal/high redundancy的关联。1.是不是normal就一定是2个failgroup,high就一定是3个failgroup呢?2.如果设定normal,我如果设定许多的failgroup(>2)能行么?于是今天在搜索相关资料时,找到一篇不错的PPT,名字叫《A Closer Look inside Oracle ASM》,大家可以去google下。先从最基本的概念讲起,什么是failgroup?首先failgroup必须是diskgroup的一个子集,一个failgroup只能属于一个diskgroup。当我们有mirror的要求时(例如normal redundancy),数据会被存两份,第一份假设存在failgroup A里,那么另一份就一定会存入非failgroup A的任意一个failgroup里。所以,我们就知道了,当normal redundancy时(data copy=2),任意一个failgroup fail了,都没问题。这样就回到了前面的问题1,答案就是No。normal的redundancy可以有>2个failgroup,high的redundancy可以有>3的failgroup。2个或3个failgroup的只是他们的下限,而非上限。从文档里只是说到:A normal redundancy disk group must contain at least two failure groups.A high redundancy disk group must contain at least three failure groups.为什么说这个问题很迷惑人?因为当redundancy=normal时,并且failgroup=2时,那么每一个failgroup都包含完全的一整套数据镜像,大家认为这是最合理的。但当failgroup>2时,由于data copy=2,自然而然每一个failgroup就不能包含所有的数据了,但这也是合理的。因为failgroup带来的好处是,丢失一个(normal redundancy)或者两个(high redundancy)failgroup的所有数据,没有任何问题。这篇文章的目的是带来一种大家自己做实验来验证的方法,也其实带来的是一个x$表的用法。它就是x$kffxp。它提供的是ASM中每个文件的每个extent在disk上的mapping关系。由于通常我们的AU是1MB,所以一个10MB的文件会被切成10个extents存放在不同的磁盘上以达到分散磁盘IO的目的。它每个列的具体含义在我前面提到的PPT里有。这里我简单的提一下重要的列的意思:

uMaps file extents to allocation units
uOnly populated in ASM instance
uColumns include:
Column Name
Description
GROUP_KFFXP
Disk Group Number
NUMBER_KFFXP
File Number
COMPOUND_KFFXP
Disk Group Number || File Number
INCARN_KFFXP
Incarnation Number
PXN_KFFXP
Physical Extent Number (within file)
XNUM_KFFXP
Logical Extent Number (within file)
LXN_KFFXP
0=primary, 1=first mirror, 2=second mirror
DISK_KFFXP
Disk Number
AU_KFFXP
Allocation Unit Number (within disk)
SIZE_KFFXP
Size (# allocation units)

NUMBER_KFFXP:对应v$asm_file.FILE_NUMBERXNUM_KFFXP:ASM文件的extent号。如果我们设定normal redundancy,那么一个extent会出现两份。high则出现三份。DISK_KFFXP:对应v$asm_disk.DISK_NUMBERLXN_KFFXP:0->primary extent, 1->mirror extent, 2->2nd mirror copy (high redundancy and metadata)于是我做了个简单的小实验:首先我是normal redundancy:SQL> select type from v$asm_diskgroup;TYPE——————NORMAL建立了一个4M大小的datafile:SQL> create tablespace HAO datafile ‘+DATA’ size 4M;Tablespace created.通过我自己的脚本找到这个datafile的file number=295:> asm alias|grep HAODATA 295 +DATA/xxx/DATAFILE/HAO.295.729556673于是我们查看这个4M大小的文件在disk上的分布情况:select disk_kffxp disk#,XNUM_KFFXP extent#,case lxn_kffxpwhen 0 then ‘Primary Copy’when 1 then ‘Mirrored Copy’when 2 then ‘2nd Mirrored Copy or metadata’else ‘Unknown’ END TYPEfrom x$kffxpwherenumber_kffxp=295and xnum_kffxp!=65534order by 2; DISK# EXTENT# TYPE———- ———- —————————— 1 0 Primary Copy 2 0 Mirrored Copy 2 1 Primary Copy 1 1 Mirrored Copy 0 2 Primary Copy 1 2 Mirrored Copy 1 3 Primary Copy 0 3 Mirrored Copy 2 4 Primary Copy 0 4 Mirrored Copy 如上可以看到,每一个extent都被存了两份,这是期望的。我们有3块disks。由于在建diskgroup时我并没有指明failgroup,这里看到,每个diskgroup的failgroup就是他自己本身,于是说明了当前我拥有3个failgroups,但我现在为normal redundancy。说明其实failgroup的数量跟redundancy normal/high没有直接关系。只有下限的关系。SQL> select name,FAILGROUP from v$asm_disk;NAME FAILGROUP———- ———-DATA01 DATA01DATA02 DATA02DATA03 DATA03 接着我们来到另一个external redundancy的磁盘组上看: SQL> select TYPE from v$asm_diskgroup;TYPE——————EXTERN 同样的,由于我并没有显示指明failgroup,当前failgroup数量为磁盘数量为2。但由于data copy=2,所以不用存第二份镜像,所以failgroup此时无含义。SQL> select name,FAILGROUP from v$asm_disk;NAME FAILGROUP—————————— ——————————DATA01 DATA01DATA02 DATA02 SQL> create tablespace HAO datafile ‘+DATA’ size 4M;Tablespace created.> asm alias|grep HAODATA 287 +DATA/xxx/DATAFILE/HAO.287.729561149 select disk_kffxp disk#,XNUM_KFFXP extent#,case lxn_kffxpwhen 0 then ‘Primary Copy’when 1 then ‘Mirrored Copy’when 2 then ‘2nd Mirrored Copy or metadata’else ‘Unknown’ END TYPEfrom x$kffxpwherenumber_kffxp=287and xnum_kffxp!=65534order by 2; DISK# EXTENT# TYPE———- ———- ——————– 1 0 Primary Copy 0 1 Primary Copy 1 2 Primary Copy 0 3 Primary Copy 1 4 Primary Copy 此时只有primary copy。大家可以多用用这个视图做做实验就明白failgroup和redundancy之间的联系了。 所以此文仅仅叫做“探索方法”,点到为止

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27042095/viewspace-742323/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/196070.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code