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属性值来达到同样的目的。