Oracle ASM Attributes Directory

Attributes Directory包含了关于磁盘组属性的元数据。只有当compatible.asm设置为11.1或更高版本时目录才会在磁盘组中存在。Attribute Directory在磁盘组中的文件号为9。直到ASM 11.1版本开始,才引入了磁盘组属性的概念,它被用来细粒度的调整磁盘组的属性。有些属性只能在磁盘组创建时指定(如au_size),AU_SIZE属性存储在disk header中。如果compatible.asm设置为11.1或更高版本那么compatible.asm将会存储在PST中,否则compatible.asm将会被存储在disk header中。在Oracle 11gr1中,compatible.rdbms与disk_repair_time以及compatible.asm被存储在属性目录中。有些属性可以在任何时候指定(如disk_repair_time)。

公共属性
大多数属性存放在属性目录并且可以通过查询v$asm_attribute视图获得。我们通过查询这个视图来看下我的所有磁盘组的属性信息

SQL> col "group " for a30
SQL> col "attribute" for a50
SQL> col "value" for a50
SQL> select g.name "group", a.name "attribute", a.value "value"
  2  from v$asm_diskgroup g, v$asm_attribute a
  3  where g.group_number=a.group_number and a.name not like 'template%';

group                                                        attribute                                          value
------------------------------------------------------------ -------------------------------------------------- --------------------------------------------------
ARCHDG                                                       compatible.asm                                     11.2.0.0.0
ARCHDG                                                       sector_size                                        512
ARCHDG                                                       access_control.umask                               066
ARCHDG                                                       access_control.enabled                             FALSE
ARCHDG                                                       cell.smart_scan_capable                            FALSE
ARCHDG                                                       compatible.rdbms                                   10.1.0.0.0
ARCHDG                                                       disk_repair_time                                   3.6h
ARCHDG                                                       au_size                                            1048576
CRSDG                                                        disk_repair_time                                   3.6h
CRSDG                                                        access_control.enabled                             FALSE
CRSDG                                                        cell.smart_scan_capable                            FALSE
CRSDG                                                        compatible.rdbms                                   10.1.0.0.0
CRSDG                                                        compatible.asm                                     11.2.0.0.0
CRSDG                                                        sector_size                                        512
CRSDG                                                        au_size                                            1048576
CRSDG                                                        access_control.umask                               066
DATADG                                                       compatible.asm                                     11.2.0.0.0
DATADG                                                       sector_size                                        512
DATADG                                                       au_size                                            1048576
DATADG                                                       disk_repair_time                                   3.6h
DATADG                                                       compatible.rdbms                                   10.1.0.0.0
DATADG                                                       access_control.umask                               066
DATADG                                                       access_control.enabled                             FALSE
DATADG                                                       cell.smart_scan_capable                            FALSE
ACFS                                                         disk_repair_time                                   3.6h
ACFS                                                         au_size                                            1048576
ACFS                                                         access_control.umask                               066
ACFS                                                         access_control.enabled                             FALSE
ACFS                                                         cell.smart_scan_capable                            FALSE
ACFS                                                         compatible.advm                                    11.2.0.0.0
ACFS                                                         compatible.rdbms                                   10.1.0.0.0
ACFS                                                         compatible.asm                                     11.2.0.0.0
ACFS                                                         sector_size                                        512
USD                                                          disk_repair_time                                   3.6h
USD                                                          compatible.advm                                    11.2.0.0.0
USD                                                          cell.smart_scan_capable                            FALSE
USD                                                          access_control.enabled                             FALSE
USD                                                          access_control.umask                               066
USD                                                          compatible.asm                                     11.2.0.0.0
USD                                                          sector_size                                        512
USD                                                          au_size                                            1048576
USD                                                          compatible.rdbms                                   11.2.0.0.0

42 rows selected.

可以在任何时候修改的属性是disk repair time。以下是通过asmcmd修改USD磁盘组disk repair time属性的命令

[grid@jyrac1 ~]$ asmcmd setattr -G USD disk_repair_time '8.0h'
[grid@jyrac1 ~]$ asmcmd lsattr -lm disk_repair_time
Group_Name  Name              Value  RO  Sys  
ACFS        disk_repair_time  3.6h   N   Y    
ARCHDG      disk_repair_time  3.6h   N   Y    
CRSDG       disk_repair_time  3.6h   N   Y    
DATADG      disk_repair_time  3.6h   N   Y    
USD         disk_repair_time  8.0h   N   Y    

从上面的查询可以看到成功将USD磁盘组disk repair time属性修改为8.0h了。

隐藏属性
属性目录位于ASM元数据的9号文件。现在我们定位到5号磁盘组(USD)的属性目录。

SQL> select x.group_kffxp "group#",x.disk_kffxp "disk #",d.name "disk name",d.path "disk path",x.xnum_kffxp "virtual extent",pxn_kffxp "physical extent",x.au_kffxp "au"
  2  from x$kffxp x, v$asm_disk_stat d
  3  where x.group_kffxp=d.group_number
  4  and x.disk_kffxp=d.disk_number
  5  and x.group_kffxp=5
  6  and x.number_kffxp=9
  7  order by 1,2; 

    group#     disk # disk name                      disk path                                virtual extent physical extent         au
---------- ---------- ------------------------------ ---------------------------------------- -------------- --------------- ----------
         5          0 USD_0000                       /dev/raw/raw7                                         0               0         50
         5          1 USD_0001                       /dev/raw/raw12                                        0               1         50

上面的查询结果显示属性目录有两份镜像副本(磁盘组是normal冗余),AU分布在5号磁盘组(USD)的0号磁盘(/dev/raw/raw7)的50号AU,与1号磁盘(/dev/raw/raw12)的50号AU中。

通过kfed工具来获得5号磁盘组(USD)的属性目录AU分布情况
由于1号文件总是开始在0号磁盘2号AU,记住这个位置:0号盘2号AU。这是ASM中定位文件的起点,它的作用,有点相当于磁盘上的引导区,在电脑开机后负责将OS启动起来。1号文件在最少情况下,至少有两个AU。在1号文件中,每个文件占用一个元数据块,存放自身的空间分布信息。每个元数据块大小是4K,一个AU是1M,哪么,每个AU中,可以存储256个文件的空间分布信息。这其中,0号盘2号AU中,全是元文件的信息。再具体一点,0号盘2号AU,第一个元数据块被系统占用,从第二个块开始,到255为止,共255个元数据块,对应索引号1至255的文件。其实,也就是全部的元文件了。也就是说0号盘2号AU,保存了全部元文件的空间分布信息。1号文件的第二个AU,从第一个块开始,保存256号文件。第二个块对应257号文件,等等。每次从ASM中读数据时,Oracle都要先读到1号文件,从中找出要读的目标文件在磁盘上的分布位置,然后再去读取相应的文件的数据。由于属性目录是9号文件,这可以通过读取5号磁盘组的0号磁盘(/dev/raw/raw7)的2号AU的9号块来获得

[grid@jyrac1 ~]$ kfed read /dev/raw/raw7 aun=2 blkn=9 | more
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                            4 ; 0x002: KFBTYP_FILEDIR
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:                       9 ; 0x004: blk=9
kfbh.block.obj:                       1 ; 0x008: file=1
kfbh.check:                    20914363 ; 0x00c: 0x013f20bb
kfbh.fcn.base:                     6545 ; 0x010: 0x00001991
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
kfffdb.node.incarn:                   1 ; 0x000: A=1 NUMM=0x0
kfffdb.node.frlist.number:   4294967295 ; 0x004: 0xffffffff
kfffdb.node.frlist.incarn:            0 ; 0x008: A=0 NUMM=0x0
kfffdb.hibytes:                       0 ; 0x00c: 0x00000000
kfffdb.lobytes:                 1048576 ; 0x010: 0x00100000
kfffdb.xtntcnt:                       3 ; 0x014: 0x00000003
kfffdb.xtnteof:                       3 ; 0x018: 0x00000003
kfffdb.blkSize:                    4096 ; 0x01c: 0x00001000
kfffdb.flags:                        17 ; 0x020: O=1 S=0 S=0 D=0 C=1 I=0 R=0 A=0
kfffdb.fileType:                     15 ; 0x021: 0x0f
kfffdb.dXrs:                         19 ; 0x022: SCHE=0x1 NUMB=0x3
kfffdb.iXrs:                         19 ; 0x023: SCHE=0x1 NUMB=0x3
kfffdb.dXsiz[0]:             4294967295 ; 0x024: 0xffffffff
kfffdb.dXsiz[1]:                      0 ; 0x028: 0x00000000
kfffdb.dXsiz[2]:                      0 ; 0x02c: 0x00000000
kfffdb.iXsiz[0]:             4294967295 ; 0x030: 0xffffffff
kfffdb.iXsiz[1]:                      0 ; 0x034: 0x00000000
kfffdb.iXsiz[2]:                      0 ; 0x038: 0x00000000
kfffdb.xtntblk:                       3 ; 0x03c: 0x0003
kfffdb.break:                        60 ; 0x03e: 0x003c
kfffdb.priZn:                         0 ; 0x040: KFDZN_COLD
kfffdb.secZn:                         0 ; 0x041: KFDZN_COLD
kfffdb.ub2spare:                      0 ; 0x042: 0x0000
kfffdb.alias[0]:             4294967295 ; 0x044: 0xffffffff
kfffdb.alias[1]:             4294967295 ; 0x048: 0xffffffff
kfffdb.strpwdth:                      0 ; 0x04c: 0x00
kfffdb.strpsz:                        0 ; 0x04d: 0x00
kfffdb.usmsz:                         0 ; 0x04e: 0x0000
kfffdb.crets.hi:               33043406 ; 0x050: HOUR=0xe DAYS=0x1e MNTH=0xc YEAR=0x7e0
kfffdb.crets.lo:             3959646208 ; 0x054: USEC=0x0 MSEC=0xda SECS=0x0 MINS=0x3b
kfffdb.modts.hi:                      0 ; 0x058: HOUR=0x0 DAYS=0x0 MNTH=0x0 YEAR=0x0
kfffdb.modts.lo:                      0 ; 0x05c: USEC=0x0 MSEC=0x0 SECS=0x0 MINS=0x0
kfffdb.dasz[0]:                       0 ; 0x060: 0x00
kfffdb.dasz[1]:                       0 ; 0x061: 0x00
kfffdb.dasz[2]:                       0 ; 0x062: 0x00
kfffdb.dasz[3]:                       0 ; 0x063: 0x00
kfffdb.permissn:                      0 ; 0x064: 0x00
kfffdb.ub1spar1:                      0 ; 0x065: 0x00
kfffdb.ub2spar2:                      0 ; 0x066: 0x0000
kfffdb.user.entnum:                   0 ; 0x068: 0x0000
kfffdb.user.entinc:                   0 ; 0x06a: 0x0000
kfffdb.group.entnum:                  0 ; 0x06c: 0x0000
kfffdb.group.entinc:                  0 ; 0x06e: 0x0000
kfffdb.spare[0]:                      0 ; 0x070: 0x00000000
kfffdb.spare[1]:                      0 ; 0x074: 0x00000000
kfffdb.spare[2]:                      0 ; 0x078: 0x00000000
kfffdb.spare[3]:                      0 ; 0x07c: 0x00000000
kfffdb.spare[4]:                      0 ; 0x080: 0x00000000
kfffdb.spare[5]:                      0 ; 0x084: 0x00000000
kfffdb.spare[6]:                      0 ; 0x088: 0x00000000
kfffdb.spare[7]:                      0 ; 0x08c: 0x00000000
kfffdb.spare[8]:                      0 ; 0x090: 0x00000000
kfffdb.spare[9]:                      0 ; 0x094: 0x00000000
kfffdb.spare[10]:                     0 ; 0x098: 0x00000000
kfffdb.spare[11]:                     0 ; 0x09c: 0x00000000
kfffdb.usm:                             ; 0x0a0: length=0
kfffde[0].xptr.au:                   50 ; 0x4a0: 0x00000032
kfffde[0].xptr.disk:                  0 ; 0x4a4: 0x0000
kfffde[0].xptr.flags:                 0 ; 0x4a6: L=0 E=0 D=0 S=0
kfffde[0].xptr.chk:                  24 ; 0x4a7: 0x18
kfffde[1].xptr.au:                   50 ; 0x4a8: 0x00000032
kfffde[1].xptr.disk:                  1 ; 0x4ac: 0x0001
kfffde[1].xptr.flags:                 0 ; 0x4ae: L=0 E=0 D=0 S=0
kfffde[1].xptr.chk:                  25 ; 0x4af: 0x19
kfffde[2].xptr.au:           4294967294 ; 0x4b0: 0xfffffffe
kfffde[2].xptr.disk:              65534 ; 0x4b4: 0xfffe
kfffde[2].xptr.flags:                 0 ; 0x4b6: L=0 E=0 D=0 S=0
kfffde[2].xptr.chk:                  42 ; 0x4b7: 0x2a

从kfffde[0].xptr.au=50,kfffde[0].xptr.disk=0,与kfffde[1].xptr.au=50,kfffde[1].xptr.au=50,kfffde[1].xptr.disk=1,可知属性目录有两份镜像副本(磁盘组是normal冗余),AU分布在5号磁盘组(USD)的0号磁盘(/dev/raw/raw7)的50号AU,与1号磁盘(/dev/raw/raw12)的50号AU中,这与查询语句所获得的结果相符。

现在用kfed工具进行查看属性目录的具体内容:

[grid@jyrac1 ~]$ kfed read /dev/raw/raw7 aun=50 blkn=0 | more
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           23 ; 0x002: KFBTYP_ATTRDIR
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:                       0 ; 0x004: blk=0
kfbh.block.obj:                       9 ; 0x008: file=9
kfbh.check:                  2524475834 ; 0x00c: 0x967871ba
kfbh.fcn.base:                     7211 ; 0x010: 0x00001c2b
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
kffdnd.bnode.incarn:                  1 ; 0x000: A=1 NUMM=0x0
kffdnd.bnode.frlist.number:  4294967295 ; 0x004: 0xffffffff
kffdnd.bnode.frlist.incarn:           0 ; 0x008: A=0 NUMM=0x0
kffdnd.overfl.number:                 5 ; 0x00c: 0x00000005
kffdnd.overfl.incarn:                 1 ; 0x010: A=1 NUMM=0x0
kffdnd.parent.number:                 0 ; 0x014: 0x00000000
kffdnd.parent.incarn:                 1 ; 0x018: A=1 NUMM=0x0
kffdnd.fstblk.number:                 0 ; 0x01c: 0x00000000
kffdnd.fstblk.incarn:                 1 ; 0x020: A=1 NUMM=0x0
kfede[0].entry.incarn:                1 ; 0x024: A=1 NUMM=0x0
kfede[0].entry.hash:                  0 ; 0x028: 0x00000000
kfede[0].entry.refer.number: 4294967295 ; 0x02c: 0xffffffff
kfede[0].entry.refer.incarn:          0 ; 0x030: A=0 NUMM=0x0
kfede[0].name:         disk_repair_time ; 0x034: length=16
kfede[0].value:                    8.0h ; 0x074: length=4
kfede[0].length:                      4 ; 0x174: 0x0004
kfede[0].flags:                      16 ; 0x176: R=0 D=0 H=0 H=0 S=1 C=0 S=0 V=0 I=0
kfede[0].spare1[0]:                   0 ; 0x178: 0x00000000
kfede[0].spare1[1]:                   0 ; 0x17c: 0x00000000
kfede[0].spare1[2]:                   0 ; 0x180: 0x00000000
kfede[0].spare1[3]:                   0 ; 0x184: 0x00000000
kfede[0].spare1[4]:                   0 ; 0x188: 0x00000000
kfede[0].spare1[5]:                   0 ; 0x18c: 0x00000000
kfede[0].spare1[6]:                   0 ; 0x190: 0x00000000
kfede[0].spare1[7]:                   0 ; 0x194: 0x00000000
kfede[1].entry.incarn:                1 ; 0x198: A=1 NUMM=0x0
kfede[1].entry.hash:                  0 ; 0x19c: 0x00000000
kfede[1].entry.refer.number: 4294967295 ; 0x1a0: 0xffffffff
kfede[1].entry.refer.incarn:          0 ; 0x1a4: A=0 NUMM=0x0
kfede[1].name:       _rebalance_compact ; 0x1a8: length=18
kfede[1].value:                    TRUE ; 0x1e8: length=4
kfede[1].length:                      4 ; 0x2e8: 0x0004
kfede[1].flags:                      22 ; 0x2ea: R=0 D=1 H=1 H=0 S=1 C=0 S=0 V=0 I=0
kfede[1].spare1[0]:                   0 ; 0x2ec: 0x00000000
kfede[1].spare1[1]:                   0 ; 0x2f0: 0x00000000
kfede[1].spare1[2]:                   0 ; 0x2f4: 0x00000000
kfede[1].spare1[3]:                   0 ; 0x2f8: 0x00000000
kfede[1].spare1[4]:                   0 ; 0x2fc: 0x00000000
kfede[1].spare1[5]:                   0 ; 0x300: 0x00000000
kfede[1].spare1[6]:                   0 ; 0x304: 0x00000000
kfede[1].spare1[7]:                   0 ; 0x308: 0x00000000
kfede[2].entry.incarn:                1 ; 0x30c: A=1 NUMM=0x0
kfede[2].entry.hash:                  0 ; 0x310: 0x00000000
kfede[2].entry.refer.number: 4294967295 ; 0x314: 0xffffffff
kfede[2].entry.refer.incarn:          0 ; 0x318: A=0 NUMM=0x0
kfede[2].name:            _extent_sizes ; 0x31c: length=13
kfede[2].value:                  1 4 16 ; 0x35c: length=6
kfede[2].length:                      6 ; 0x45c: 0x0006
kfede[2].flags:                      22 ; 0x45e: R=0 D=1 H=1 H=0 S=1 C=0 S=0 V=0 I=0
kfede[2].spare1[0]:                   0 ; 0x460: 0x00000000
kfede[2].spare1[1]:                   0 ; 0x464: 0x00000000
kfede[2].spare1[2]:                   0 ; 0x468: 0x00000000
kfede[2].spare1[3]:                   0 ; 0x46c: 0x00000000
kfede[2].spare1[4]:                   0 ; 0x470: 0x00000000
kfede[2].spare1[5]:                   0 ; 0x474: 0x00000000
kfede[2].spare1[6]:                   0 ; 0x478: 0x00000000
kfede[2].spare1[7]:                   0 ; 0x47c: 0x00000000
kfede[3].entry.incarn:                1 ; 0x480: A=1 NUMM=0x0
kfede[3].entry.hash:                  0 ; 0x484: 0x00000000
kfede[3].entry.refer.number: 4294967295 ; 0x488: 0xffffffff
kfede[3].entry.refer.incarn:          0 ; 0x48c: A=0 NUMM=0x0
kfede[3].name:           _extent_counts ; 0x490: length=14
kfede[3].value:  20000 20000 2147483647 ; 0x4d0: length=22
kfede[3].length:                     22 ; 0x5d0: 0x0016
kfede[3].flags:                      22 ; 0x5d2: R=0 D=1 H=1 H=0 S=1 C=0 S=0 V=0 I=0
kfede[3].spare1[0]:                   0 ; 0x5d4: 0x00000000
kfede[3].spare1[1]:                   0 ; 0x5d8: 0x00000000
kfede[3].spare1[2]:                   0 ; 0x5dc: 0x00000000
kfede[3].spare1[3]:                   0 ; 0x5e0: 0x00000000
kfede[3].spare1[4]:                   0 ; 0x5e4: 0x00000000
kfede[3].spare1[5]:                   0 ; 0x5e8: 0x00000000
kfede[3].spare1[6]:                   0 ; 0x5ec: 0x00000000
kfede[3].spare1[7]:                   0 ; 0x5f0: 0x00000000
kfede[4].entry.incarn:                1 ; 0x5f4: A=1 NUMM=0x0
kfede[4].entry.hash:                  0 ; 0x5f8: 0x00000000
kfede[4].entry.refer.number:          1 ; 0x5fc: 0x00000001
kfede[4].entry.refer.incarn:          1 ; 0x600: A=1 NUMM=0x0
kfede[4].name:                        _ ; 0x604: length=1
kfede[4].value:                       0 ; 0x644: length=1
kfede[4].length:                      1 ; 0x744: 0x0001
kfede[4].flags:                      22 ; 0x746: R=0 D=1 H=1 H=0 S=1 C=0 S=0 V=0 I=0
kfede[4].spare1[0]:                   0 ; 0x748: 0x00000000
kfede[4].spare1[1]:                   0 ; 0x74c: 0x00000000
kfede[4].spare1[2]:                   0 ; 0x750: 0x00000000
kfede[4].spare1[3]:                   0 ; 0x754: 0x00000000
kfede[4].spare1[4]:                   0 ; 0x758: 0x00000000
kfede[4].spare1[5]:                   0 ; 0x75c: 0x00000000
kfede[4].spare1[6]:                   0 ; 0x760: 0x00000000
kfede[4].spare1[7]:                   0 ; 0x764: 0x00000000
kfede[5].entry.incarn:                1 ; 0x768: A=1 NUMM=0x0
kfede[5].entry.hash:                  0 ; 0x76c: 0x00000000
kfede[5].entry.refer.number: 4294967295 ; 0x770: 0xffffffff
kfede[5].entry.refer.incarn:          0 ; 0x774: A=0 NUMM=0x0
kfede[5].name:                  au_size ; 0x778: length=7
kfede[5].value:                ; 0x7b8: length=9
kfede[5].length:                      9 ; 0x8b8: 0x0009
kfede[5].flags:                     147 ; 0x8ba: R=1 D=1 H=0 H=0 S=1 C=0 S=0 V=1 I=0
kfede[5].spare1[0]:                   0 ; 0x8bc: 0x00000000
kfede[5].spare1[1]:                   0 ; 0x8c0: 0x00000000
kfede[5].spare1[2]:                   0 ; 0x8c4: 0x00000000
kfede[5].spare1[3]:                   0 ; 0x8c8: 0x00000000
kfede[5].spare1[4]:                   0 ; 0x8cc: 0x00000000
kfede[5].spare1[5]:                   0 ; 0x8d0: 0x00000000
kfede[5].spare1[6]:                   0 ; 0x8d4: 0x00000000
kfede[5].spare1[7]:                   0 ; 0x8d8: 0x00000000
kfede[6].entry.incarn:                1 ; 0x8dc: A=1 NUMM=0x0
kfede[6].entry.hash:                  0 ; 0x8e0: 0x00000000
kfede[6].entry.refer.number: 4294967295 ; 0x8e4: 0xffffffff
kfede[6].entry.refer.incarn:          0 ; 0x8e8: A=0 NUMM=0x0
kfede[6].name:              sector_size ; 0x8ec: length=11
kfede[6].value:                ; 0x92c: length=9
kfede[6].length:                      9 ; 0xa2c: 0x0009
kfede[6].flags:                     147 ; 0xa2e: R=1 D=1 H=0 H=0 S=1 C=0 S=0 V=1 I=0
kfede[6].spare1[0]:                   0 ; 0xa30: 0x00000000
kfede[6].spare1[1]:                   0 ; 0xa34: 0x00000000
kfede[6].spare1[2]:                   0 ; 0xa38: 0x00000000
kfede[6].spare1[3]:                   0 ; 0xa3c: 0x00000000
kfede[6].spare1[4]:                   0 ; 0xa40: 0x00000000
kfede[6].spare1[5]:                   0 ; 0xa44: 0x00000000
kfede[6].spare1[6]:                   0 ; 0xa48: 0x00000000
kfede[6].spare1[7]:                   0 ; 0xa4c: 0x00000000
kfede[7].entry.incarn:                1 ; 0xa50: A=1 NUMM=0x0
kfede[7].entry.hash:                  0 ; 0xa54: 0x00000000
kfede[7].entry.refer.number:          2 ; 0xa58: 0x00000002
kfede[7].entry.refer.incarn:          1 ; 0xa5c: A=1 NUMM=0x0
kfede[7].name:               compatible ; 0xa60: length=10
kfede[7].value:                ; 0xaa0: length=9
kfede[7].length:                      9 ; 0xba0: 0x0009
kfede[7].flags:                     178 ; 0xba2: R=0 D=1 H=0 H=0 S=1 C=1 S=0 V=1 I=0
kfede[7].spare1[0]:                   0 ; 0xba4: 0x00000000
kfede[7].spare1[1]:                   0 ; 0xba8: 0x00000000
kfede[7].spare1[2]:                   0 ; 0xbac: 0x00000000
kfede[7].spare1[3]:                   0 ; 0xbb0: 0x00000000
kfede[7].spare1[4]:                   0 ; 0xbb4: 0x00000000
kfede[7].spare1[5]:                   0 ; 0xbb8: 0x00000000
kfede[7].spare1[6]:                   0 ; 0xbbc: 0x00000000
kfede[7].spare1[7]:                   0 ; 0xbc0: 0x00000000
kfede[8].entry.incarn:                1 ; 0xbc4: A=1 NUMM=0x0
kfede[8].entry.hash:                  0 ; 0xbc8: 0x00000000
kfede[8].entry.refer.number:          3 ; 0xbcc: 0x00000003
kfede[8].entry.refer.incarn:          1 ; 0xbd0: A=1 NUMM=0x0
kfede[8].name:                     cell ; 0xbd4: length=4
kfede[8].value:                   FALSE ; 0xc14: length=5
kfede[8].length:                      5 ; 0xd14: 0x0005
kfede[8].flags:                      34 ; 0xd16: R=0 D=1 H=0 H=0 S=0 C=1 S=0 V=0 I=0
kfede[8].spare1[0]:                   0 ; 0xd18: 0x00000000
kfede[8].spare1[1]:                   0 ; 0xd1c: 0x00000000
kfede[8].spare1[2]:                   0 ; 0xd20: 0x00000000
kfede[8].spare1[3]:                   0 ; 0xd24: 0x00000000
kfede[8].spare1[4]:                   0 ; 0xd28: 0x00000000
kfede[8].spare1[5]:                   0 ; 0xd2c: 0x00000000
kfede[8].spare1[6]:                   0 ; 0xd30: 0x00000000
kfede[8].spare1[7]:                   0 ; 0xd34: 0x00000000
kfede[9].entry.incarn:                1 ; 0xd38: A=1 NUMM=0x0
kfede[9].entry.hash:                  0 ; 0xd3c: 0x00000000
kfede[9].entry.refer.number:          4 ; 0xd40: 0x00000004
kfede[9].entry.refer.incarn:          1 ; 0xd44: A=1 NUMM=0x0
kfede[9].name:           access_control ; 0xd48: length=14
kfede[9].value:                   FALSE ; 0xd88: length=5
kfede[9].length:                      5 ; 0xe88: 0x0005
kfede[9].flags:                      18 ; 0xe8a: R=0 D=1 H=0 H=0 S=1 C=0 S=0 V=0 I=0
kfede[9].spare1[0]:                   0 ; 0xe8c: 0x00000000
kfede[9].spare1[1]:                   0 ; 0xe90: 0x00000000
kfede[9].spare1[2]:                   0 ; 0xe94: 0x00000000
kfede[9].spare1[3]:                   0 ; 0xe98: 0x00000000
kfede[9].spare1[4]:                   0 ; 0xe9c: 0x00000000
kfede[9].spare1[5]:                   0 ; 0xea0: 0x00000000
kfede[9].spare1[6]:                   0 ; 0xea4: 0x00000000
kfede[9].spare1[7]:                   0 ; 0xea8: 0x00000000

kfede[i]字段包含了磁盘组属性的名称和值。使用kfed read path | egrep  "name|value"命令查看所有的ASM磁盘组的属性值
[grid@jyrac1 ~]$ kfed read /dev/raw/raw7 aun=50 blkn=0  |  egrep "name|value"
kfede[0].name:         disk_repair_time ; 0x034: length=16
kfede[0].value:                    8.0h ; 0x074: length=4
kfede[1].name:       _rebalance_compact ; 0x1a8: length=18
kfede[1].value:                    TRUE ; 0x1e8: length=4
kfede[2].name:            _extent_sizes ; 0x31c: length=13
kfede[2].value:                  1 4 16 ; 0x35c: length=6
kfede[3].name:           _extent_counts ; 0x490: length=14
kfede[3].value:  20000 20000 2147483647 ; 0x4d0: length=22
kfede[4].name:                        _ ; 0x604: length=1
kfede[4].value:                       0 ; 0x644: length=1
kfede[5].name:                  au_size ; 0x778: length=7
kfede[5].value:                ; 0x7b8: length=9
kfede[6].name:              sector_size ; 0x8ec: length=11
kfede[6].value:                ; 0x92c: length=9
kfede[7].name:               compatible ; 0xa60: length=10
kfede[7].value:                ; 0xaa0: length=9
kfede[8].name:                     cell ; 0xbd4: length=4
kfede[8].value:                   FALSE ; 0xc14: length=5
kfede[9].name:           access_control ; 0xd48: length=14
kfede[9].value:                   FALSE ; 0xd88: length=5

上面的信息还窥探到了许多隐藏的磁盘组属性。可以看到_rebalance_compact属性是TRUE。这个属性关系到磁盘组rebalance中的compact环节。我们还可以看到extent的增长方式(extent_sizes),初始化大小会从1个AU到4个AU再到16AU。_extent_counts表示extent增长的断点,前20000个extent只包含1个AU,接下来20000个extent包含4个AU,再往后的extent会包含16个AU。cell属性是FALSE,access_control属性是FALSE。

小结:
每个磁盘组都具有一些磁盘组的属性,磁盘组属性用来细粒度的控制磁盘组的特性。大多数属性存放在属性目录并且可以通过查询v$asm_attribute视图获得。] 在ASM 11.1之前的版本,我们也可以在创建磁盘组时指定AU的大小,这是通过ASM隐含参数_ASM_AUSIZE来实现的,在ASM 11.1及之后的版本,由于ASM磁盘组属性的出现,就可以通过设置ASM磁盘组的AU_SIZE属性值来达到同样的目的。

发表评论

电子邮件地址不会被公开。