ASM Disk Group Attributes
磁盘组的属性是ASM 11.1版本引入的,是磁盘组层面而非ASM实例层面的。磁盘组的属性有一些只能在创建磁盘组时指定,有一些只能在创建之后指定,还有一些可以在任何时候指定。
本篇内容是对本系列文章-【ASM Attributes Directory】的展开。
ACCESS_CONTROL.ENABLED
ACCESS_CONTROL.ENABLED属性指定了一个磁盘组的ASM File Access Control是否启用,参数的值可以设置为true或者false(默认)。
如果这个属性设置为true,ASM文件的访问权限就会受到控制。如果设置为false,任何用户都可以访问磁盘组上的任意文件。该属性只影响文件的访问,不影响其他操作。
这个属性可以用alter disk group语法来修改。
ACCESS_CONTROL.UMASK
ACCESS_CONTROL.UMASK属性与通常os层面的umask类似。用来设置ASM文件的属主,属组和其他用户的权限。这个特性对磁盘组中所有文件生效。
属性的值是3位数的组合,每一位可以是0,2,6数字中的一个。默认情况下为066.
某一位的值设置为0表示不排除任何权限;设置为2,表示排除掉写权限;设置为6表示把读写权限都排除。
在设置该属性之前,要先设置ACCESS_CONTROL.ENABLED为true。
这个属性只能使用alter diskgroup 语法设置。
AU_SIZE
AU_SIZE属性控制了磁盘组au的大小,只能在创建磁盘组时指定。值得一提的是每个磁盘组可以有不同的au_size。
CELL.SMART_SCAN_CAPABLE [Exadata]
在Exadata环境下,使用来自存储节点的磁盘创建的磁盘组可以设置CELL.SMART_SCAN_CAPABLE属性。对于磁盘组中的对象,这个属性可以开启smart scan功能。
COMPATIBLE.ASM
COMPATIBLE.ASM属性指定了可以使用磁盘组的ASM实例的最低软件版本。
这个属性也会影响ASM元数据结构的格式。
当使用create diskgroup语法,asmcmd mkdg命令和EM中的create disk group页面时,COMPATIBLE.ASM默认为10.1。在ASM版本11gR2中,当使用asmca创建磁盘组时,默认为11.2,在版本12.1中,默认为12.1.
COMPATIBLE.RDBMS
COMPATIBLE.RDBMS属性指定了可以使用磁盘组的db实例的最小COMPATIBLE参数值。
在修改该属性的值之后,要确保所有正在访问磁盘组的db实例COMPATIBLE参数大于等于这个值。
COMPATIBLE.ADVM
COMPATIBLE.ADVM属性指定了磁盘组是否可以包含ASM卷,其值要不小于11.2.
要设置该属性,COMPATIBLE.ASM必须在11.2(含)以上,环境中需要加载ADVM卷驱动。默认情况下,该属性的值为空。
CONTENT.CHECK [12c]
CONTENT.CHECK属性的作用是控制磁盘组在rebalance时,是否进行内容校验。该属性的值可以设置为true或者false。
内容校验包括用户数据的HARD(Hardware Assisted Resilient Data)校验,文件目录中文件类型和文件目录信息的校验,以及镜像内容的对比。
该属性设置为true以后,将启用所有rebalance操作的逻辑校验。内容校验也被称为磁盘清理特性。
CONTENT.TYPE [11.2.0.3, Exadata]
CONTENT.TYPE属性将磁盘组指定为几种类型:DATA, RECOVERY或者SYSTEM。它还决定了到最近的partner磁盘或者failgroup的距离。默认值是DATA,同时指定了距离为1;值为RECOVERY则指定了距离为3;值为SYSTEM指定了距离为5.
距离为1的意思是ASM认为所有的磁盘都具有partner关系。
距离为3的意思是每第三个磁盘具有partner关系。距离为5的意思是每第五个磁盘具有partner关系。
该属性可以在创建磁盘组时指定,也可以通过alter diskgroup语法指定。如果用alter diskgroup语法修改 ,新配置将在下一次显式地指定了rebalance之后生效。
该属性只在normal或者high冗余的磁盘组中可用。并且COMPATIBLE.ASM要设置为11.2.0.3及以上才能启用该属性。
DISK_REPAIR_TIME
DISK_REPAIR_TIME的值指定了ASM保持磁盘offline状态的时间,超过这个时间之后,将该盘drop。和fast mirror resync特性一样,COMPATIBLE.ASM属性要设置为11.1或者更高。 该属性只能使用alter diskgroup语法修改。
FAILGROUP_REPAIR_TIME [12c]
FAILGROUP_REPAIR_TIME属性指定了磁盘组中failgroup的修复时间。当ASM判定一整个failgroup发生故障时,这个参数就会启用。默认值为24小时。如果在alter diskgroup offline disk语句中加入drop after子句,指定的repair time会覆盖FAILGROUP_REPAIR_TIME。
这个属性只能通过alter fiskgroup设置,并且只对normal和high冗余的磁盘组可用。
IDP.BOUNDARY and IDP.TYPE [Exadata]
这两个属性用来配置Exadata存储,和Intelligent Data Placement 特性相关。
PHYS_META_REPLICATED [12c]
PHYS_META_REPLICATED属性用来跟踪磁盘组元数据的复制状态。当磁盘组的ASM兼容性设置为12.1或者更高时,每个磁盘的物理元数据会做复制。这些元数据包括此盘头,FST表和AT表。
元数据的复制是在线异步做的。如果磁盘组中每个磁盘的元数据都做了复制,那么该属性的值就会被ASM设置为true.
该属性只有在COMPATIBLE.ASM设置为12.1或者更高的磁盘组中才可以定义。用户无法设置或者修改该属性的值,只是用来提供元数据复制状态的信息,要么为true,要么为false.
SECTOR_SIZE
SECTOR_SIZE属性指定了磁盘组中磁盘的扇区大小,只能在创建磁盘组时指定。
SECTOR_SIZE可以设置为512,4096或者4k(如果磁盘支持这些值)。默认值依平台而定。如果要修改该属性的值,需要把COMPATIBLE.ASM和COMPATIBLE.RDBMS设置为11.2或者更高。
注意:ACFS不支持扇区为4KB的设备。
STORAGE.TYPE
STORAGE.TYPE属性指定了磁盘组中磁盘的类型。属性的值可以是EXADATA,PILLAR,ZFSAS和OTHER。如果设置为 EXADATA|PILLAR|ZFSAS,那么磁盘组中所有的磁盘类型必须和设置的吻合。如果设置为OTHER,那么磁盘组中可以加入任意类型的磁盘。
如果属性值设置为PILLAR或者ZFSAS,那么对于磁盘组中的对象可以启用HCC(Hybrid Columnar Compression)功能。Exadata本身已经支持HCC。
注意:ZFS类型的存储必须是通过dNFS(Direct NFS)提供;Pillar Axion类型的存储必须是通过SCSI或者光纤通道提供。
要设置STORAGE.TYPE属性,COMPATIBLE.ASM和COMPATIBLE.RDBMS属性都要设置为11.2.0.3或者更高。
如果要支持ZFS存储,COMPATIBLE.ASM和COMPATIBLE.RDBMS属性要设置为11.2.0.4或者更高。
STORAGE.TYPE属性可以在创建磁盘组时设置,也可以通过alter diskgroup语法修改。当有客户端连接到磁盘组时,属性是无法修改的。比如说,当磁盘组上有ADVM卷启用时,无法修改该磁盘组的STORAGE.TYPE属性。
在修改该属性之前,无法在V$ASM_ATTRIBUTE视图或者通过ASMCMD lsattr命令看到它。
THIN_PROVISIONED [12c]
THIN_PROVISIONED属性值用来控制在磁盘组reblance结束后,是否丢弃未使用的存储空间。
支持thin provisioning的存储产品可以重用丢弃的存储空间,这样可以有效提升物理存储的利用率。
APPLIANCE.MODE [11.2.0.4, Exadata]
APPLIANCE.MODE属性可以在磁盘组drop一块或多块ASM磁盘时,缩短磁盘rebalance的完成时间。这也就意味着在有(磁盘)故障发生后,数据冗余可以更快的恢复。在Exadata中创建磁盘组可以自动打开该属性。已经创建的磁盘组必须使用ALTER DISKGROUP语法来设置该属性。这个特性也被称为fixed partnering。
只有满足以下条件的磁盘组才能启用该属性:
-
COMPATIBLE.ASM设置为11.2.0.4或者更高
-
CELL.SMART_SCAN_CAPABLE属性设置为true
-
磁盘组中的磁盘是同一类型,比如都是普通硬盘或者都是闪存盘
-
磁盘组中的磁盘大小相同
-
磁盘组中所有failgroup有相同的磁盘数量
-
磁盘组中没有磁盘是offline状态
-
最低软件版本要求: Oracle Exadata Storage Server Software release 11.2.3.3; Oracle Database 11g Release 2 (11.2) release 11.2.0.4 注意:在Oracle 12.1.0.1中该特性不可用。
Hidden disk group attributes
不是所有的磁盘组属性都在官方文档中有记录,下面列举一些比较有意思的属性。
_REBALANCE_COMPACT
_REBALANCE_COMPACT属性和rebalance过程中的compact阶段有关。属性值可以为true(默认)或者false。设置为false则可以禁止磁盘组rebalance过程中做compact。
_EXTENT_COUNTS
_EXTENT_COUNTS属性和可变区大小特性有关,它决定了区大小在何时会增加。
属性值设置为“20000 20000 214748367”,意指前20000个区的大小为1个AU,接下来20000个区大小由_EXTENT_SIZES属性的第二个值决定,剩下的区大小由_EXTENT_SIZES属性的第三个值决定。
_EXTENT_SIZES
_EXTENT_SIZES属性也和可变区大小特性有关,指定了区大小的增幅 -- 以AU为单位。
在ASM版本11.1,该属性值为1 8 64,在11.2及更高版本中,属性值为1 4 16。
V$ASM_ATTRIBUTE view and ASMCMD lsattr command
磁盘组的属性可以通过V$ASM_ATTRIBUTE视图或者ASMCMD lsattr命令查看。
下面是查看磁盘组PLAY的属性的一个方法:
$ asmcmd lsattr -G PLAY –l
Posted by Bane Radulovic
Name Value
access_control.enabled FALSE
access_control.umask 066
au_size 4194304
cell.smart_scan_capable FALSE
compatible.asm 11.2.0.0.0
compatible.rdbms 11.2.0.0.0
disk_repair_time 3.6h
sector_size 512
$
可以通过SQL的ALTER DISKGROUP SET ATTRIBUTE语法,ASMCMD setattr命令和ASMCA来修改磁盘组属性值。下面是使用ASMCMD setattr修改PLAY磁盘组的DISK_REPAIR_TIME属性值的例子:
$ asmcmd setattr -G PLAY disk_repair_time '4.5 H'
Check the new value:
$ asmcmd lsattr -G PLAY -l disk_repair_time
Name Value
disk_repair_time 4.5 H
$
Conclusion
ASM 11.1推出的磁盘组属性,可以用来优化磁盘组的使用。有些属性值是专门针对Exadata,还有一些只在特定版本可用。(前文都有标注)
大部分属性在官方文档中都有记录,并且可以通过V$ASM_ATTRIBUTE视图查看。有一些没有官方文档记录的属性前面也有所介绍,这些属性值除非有Orcle Support,否则不要修改。
本文来自云栖社区合作伙伴“DBGEEK”