查看: 10118|回复: 14

[原创] 关于ASM的failgroup概念的探索方法

[复制链接]
论坛徽章:
113
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:42:50现任管理团队成员
日期:2011-05-07 01:45:08ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36蛋疼蛋
日期:2011-07-24 22:25:332012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25
跳转到指定楼层
1#
发表于 2010-9-13 22:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家问到过ASM的failgroup的含义,或者问到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里有。

这里我简单的提一下重要的列的意思:
NUMBER_KFFXP:对应v$asm_file.FILE_NUMBER
XNUM_KFFXP:ASM文件的extent号。如果我们设定normal redundancy,那么一个extent会出现两份。high则出现三份。
DISK_KFFXP:对应v$asm_disk.DISK_NUMBER
LXN_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 HAO
DATA               295 +DATA/xxx/DATAFILE/HAO.295.729556673


于是我们查看这个4M大小的文件在disk上的分布情况:

select disk_kffxp disk#,
XNUM_KFFXP extent#,
case lxn_kffxp
  when 0 then 'Primary Copy'
  when 1 then 'Mirrored Copy'
  when 2 then '2nd Mirrored Copy or metadata'
  else 'Unknown' END TYPE
from x$kffxp
where
number_kffxp=295
and xnum_kffxp!=65534
order 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     DATA01
DATA02     DATA02
DATA03     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                         DATA01
DATA02                         DATA02
      



   
SQL> create tablespace HAO datafile '+DATA' size 4M;
Tablespace created.

> asm alias|grep HAO
DATA               287 +DATA/xxx/DATAFILE/HAO.287.729561149
         


select disk_kffxp disk#,
XNUM_KFFXP extent#,
case lxn_kffxp
  when 0 then 'Primary Copy'
  when 1 then 'Mirrored Copy'
  when 2 then '2nd Mirrored Copy or metadata'
  else 'Unknown' END TYPE
from x$kffxp
where
number_kffxp=287
and xnum_kffxp!=65534
order 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之间的联系了。         
所以此文仅仅叫做“探索方法”,点到为止。
        
论坛徽章:
55
马上加薪
日期:2014-02-19 11:55:142010广州亚运会纪念徽章:排球
日期:2011-04-27 13:27:19SQL大赛参与纪念
日期:2011-04-13 12:08:172011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01生肖徽章2007版:兔
日期:2011-01-20 12:58:49
2#
发表于 2010-9-13 23:04 | 只看该作者
ding dign

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
3#
发表于 2010-9-13 23:18 | 只看该作者
顶小v。。。。

使用道具 举报

回复
论坛徽章:
0
4#
发表于 2010-9-14 09:05 | 只看该作者
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都被存了两份,这是期望的。
---------------------------------------------------------------------------
补充一下,假如是normal模式,虽然数据是有2份,但
我试过,如果坏了一个failgroup,oracle继续运行没问题,假如关闭oracle后,
oracle就再也起不来了。
请教lz,不知有没有什么办法解决?

使用道具 举报

回复
论坛徽章:
0
5#
发表于 2010-12-19 15:06 | 只看该作者
看了这个文章才算明白了failgroup和redundancy 的关系   3q

使用道具 举报

回复
论坛徽章:
18
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53ITPUB十周年纪念徽章
日期:2011-09-27 16:32:492010广州亚运会纪念徽章:跆拳道
日期:2010-11-25 10:18:43ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010新春纪念徽章
日期:2010-03-01 11:04:58祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:蛇
日期:2009-10-04 11:36:14生肖徽章2007版:鼠
日期:2009-07-25 02:29:06生肖徽章2007版:狗
日期:2009-07-14 18:17:34生肖徽章2007版:龙
日期:2009-04-20 09:08:21
6#
发表于 2010-12-19 18:57 | 只看该作者
kankan

使用道具 举报

回复
论坛徽章:
10
2010广州亚运会纪念徽章:击剑
日期:2010-12-16 15:18:59ITPUB十周年纪念徽章
日期:2011-11-01 16:25:222010广州亚运会纪念徽章:帆船
日期:2011-05-12 09:06:552011新春纪念徽章
日期:2011-02-18 11:42:472010广州亚运会纪念徽章:橄榄球
日期:2011-01-09 16:56:412011新春纪念徽章
日期:2011-01-04 10:34:20数据库板块每日发贴之星
日期:2011-01-03 01:01:022010广州亚运会纪念徽章:举重
日期:2010-12-21 20:58:06数据库板块每日发贴之星
日期:2010-12-20 01:01:022012新春纪念徽章
日期:2012-01-04 11:56:01
7#
发表于 2010-12-19 21:02 | 只看该作者
只能怪我太菜 很多好的帖子都看不懂

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:332010新春纪念徽章
日期:2010-03-01 11:20:00ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
8#
发表于 2010-12-19 21:41 | 只看该作者
这个ppt有个对应的网页
https://twiki.cern.ch/twiki/bin/view/PDBService/ASM_Internals

对于X$KFFXP 的描述,根据我的经验
FLAGS_KFFXP           NUMBER     -- 0 is normal,if disk offline or missing the value will be 32

使用道具 举报

回复
招聘 : 系统架构师
论坛徽章:
372
双子座
日期:2015-08-18 12:18:21摩羯座
日期:2015-09-20 17:10:27秀才
日期:2015-09-21 09:46:16秀才
日期:2015-09-21 11:16:42秀才
日期:2015-10-08 17:57:58天枰座
日期:2015-10-28 18:28:29秀才
日期:2015-11-11 09:48:44秀才
日期:2015-11-11 10:07:14秀才
日期:2015-11-11 10:22:49秀才
日期:2015-09-11 10:43:06
9#
发表于 2010-12-19 21:57 | 只看该作者
基本没怎么在production上面用ASM.

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:332010新春纪念徽章
日期:2010-03-01 11:20:00ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
10#
发表于 2010-12-19 22:00 | 只看该作者
以后估计就不得不用了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表