美文网首页
ASM Attributes Directory

ASM Attributes Directory

作者: 2548d1d6a965 | 来源:发表于2015-11-16 21:28 被阅读26次

    The ASM attributes directory - the ASM metadata file number 9 - contains the information about disk group attributes. The attributes directory exists only in disk groups with the COMPATIBLE.ASM (attribute!) set to 11.1 or higher.

    Disk group attributes were introduced in ASM version 11.1[1] and can be used to fine tune the disk group properties. It is worth noting that some attributes can be set only at the time of the disk group creation (e.g. AU_SIZE), while others can be set at any time (e.g. DISK_REPAIR_TIME). Some attribute values might be stored in the disk header (e.g. AU_SIZE), while some others (e.g. COMPATIBLE.ASM), can be stored either in the partnership and status table or in the disk header (depending on the ASM version).

    Public attributes

    Most attributes are stored in the attributes directory and are externalized via V$ASM_ATTRIBUTE view. Let's have a look at disk group attributes for all my disk groups.

    SQL> SELECT g.name "Group", a.name "Attribute", a.value "Value"
    FROM v$asm_diskgroup g, v$asm_attribute a
    WHERE g.group_number=a.group_number and a.name not like 'template%';
    
    Group Attribute               Value
    ----- ----------------------- ----------------
    ACFS  disk_repair_time        3.6h
         au_size                 1048576
         access_control.umask    026
         access_control.enabled  TRUE
         cell.smart_scan_capable FALSE
         compatible.advm         11.2.0.0.0
         compatible.rdbms        11.2
         compatible.asm          11.2.0.0.0
         sector_size             512
    DATA  access_control.enabled  TRUE
         cell.smart_scan_capable FALSE
         compatible.rdbms        11.2
         compatible.asm          11.2.0.0.0
         sector_size             512
         au_size                 1048576
         disk_repair_time        3.6h
         access_control.umask    026
    SQL>
    

    One attribute value we can modify at any time is the disk repair timer. Let's use asmcmd to do that for disk group DATA.

    $ asmcmd setattr -G DATA disk_repair_time '8.0h'
    
    $ asmcmd lsattr -lm disk_repair_time
    Group_Name  Name              Value  RO  Sys
    ACFS        disk_repair_time  3.6h   N   Y
    DATA        disk_repair_time  8.0h   N   Y
    $
    

    Hidden attributes

    As mentioned in the introduction, the attributes directory is the ASM metadata file number 9. Let's locate the attributes directory, in disk group number 2:

    SQL> SELECT x.disk_kffxp "Disk#",
    x.xnum_kffxp "Extent",
    x.au_kffxp "AU",
    d.name "Disk name"
    FROM x$kffxp x, v$asm_disk_stat d
    WHERE x.group_kffxp=d.group_number
    and x.disk_kffxp=d.disk_number
    and d.group_number=2
    and x.number_kffxp=9
    ORDER BY 1, 2;
    
    Disk# Extent   AU Disk name
    ----- ------ ---- ---------
       0      0 1146 ASMDISK1
       1      0 1143 ASMDISK2
       2      0 1150 ASMDISK3
    SQL>
    

    Now check out the attributes with the kfed tool.

    $ kfed read /dev/oracleasm/disks/ASMDISK3 aun=1150 | more
    kfbh.endian:                          1 ; 0x000: 0x01
    kfbh.hard:                          130 ; 0x001: 0x82
    kfbh.type:                           23 ; 0x002: KFBTYP_ATTRDIR
    ...
    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
    ...
    

    Fields kfede[i] will have the disk group attribute names and values. Let's look at all of them:

    $ kfed read /dev/oracleasm/disks/ASMDISK3 aun=1150 | 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 214748367 ; 0x4d0: length=21
    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
    

    This gives us a glimpse into the hidden (underscore) disk group attributes. We can see that the value of the _REBALANCE_COMPACT is TRUE. That is the attribute to do with the compacting phase of the disk group rebalance. We also see how the extent size will grow (_EXTENT_SIZES) - initial size will be 1 AU, then 4 AU and finally 16 AU. And the _EXTENT_COUNTS shows the breaking points for the extent size growth - first 20000 extents will be 1 AU in size, next 20000 will be 4 AU and the rest will be 16 AU.

    Conclusion

    Disk group attributes can be used to fine tune the disk group properties. Most attributes are stored in the attributes directory and are externalized via V$ASM_ATTRIBUTE view. For details about the attributes please see the ASM Disk Group Attributes post.

    [1] In ASM version prior to 11.1 it was possible to create a disk group with user specified allocation unit size. That was done via hidden ASM initialization parameter _ASM_AUSIZE. While technically that was not a disk group attribute, it served the same purpose as the AU_SIZE attribute in ASM version 11.1 and later.

    相关文章

      网友评论

          本文标题:ASM Attributes Directory

          本文链接:https://www.haomeiwen.com/subject/bgwkhttx.html