ASM 翻译系列第三十四弹:ASM磁盘组重要属性介绍

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”

时间: 2025-01-30 13:19:36

ASM 翻译系列第三十四弹:ASM磁盘组重要属性介绍的相关文章

ASM 翻译系列第三十五弹:ASM 253号文件——ASM spfile

ASM spfile in a disk group 从ASM版本11.2开始,ASM spfile可以储存在ASM磁盘组里.事实上,在安装ASM时,OUI就已经把ASM spfile放在了磁盘组中.对于单实例环境和集群环境都是这样.在安装过程中创建的第一个磁盘组是spfile的默认位置,但这不是必要的.ASM spfile还是可以放在文件系统上,就是$ORACLE_HOME/dbs目录下. New ASMCMD commands 为支持该特性,ASMCMD引入了新的命令用来备份,复制和移动AS

ASM 翻译系列第三十二弹:自制数据抽取小工具

Find block in ASM 在本系列文章[ Where is my data]中,我已经演示了如何从ASM磁盘中定位和抽取一个Oracle的block,为了让这件事做起来不那么复杂,我又写了一个perl脚本find_block.pl来简化整个操作,只需要提供数据文件的名称和需要提取的block,这个脚本就可以输出从ASM磁盘组中抽取块的命令. find_block.pl find_block.pl是一个perl脚本,脚本里集成了dd或kfed命令来从ASM磁盘中抽取一个块,脚本可以在Li

Oracle ASM 翻译系列第三十弹:高级知识 Physical metadata replication

Physical metadata replication 从版本12.1开始,ASM会对某些物理元数据做一份复制,具体的说是每个磁盘的第一个AU(0号AU)上元数据.这意味着,ASM同时维护着两份磁盘头.FST(Free Space Table)表.AT(Allocation table)表的数据.需要注意的是ASM对这些数据采用的是复制(replicate),而不是镜像(mirror).ASM镜像(mirror)意味着把一份数据,拷贝到不同磁盘上:而物理元数据的副本位于相同的磁盘,因此使用的

ASM 翻译系列第三弹:基础知识 About ASM disk groups, disks and files

Oracle ASM使用磁盘组来存放数据文件,每一个ASM的磁盘组由一些ASM磁盘组成,每一个ASM磁盘组本身是一个独立的存储单元,是自描述的,对于ASM磁盘组中数据库文件,ASM提供一个文件系统的接口,方便DBA做管理.存放在ASM磁盘组中的文件被均匀的分布在磁盘组中的所有磁盘上,通过这种方式,每一块磁盘都可以提供一致的性能,同时ASM的性能可以比得上裸设备的性能.[摘录自11GR2版本的ASM官方文档] ASM Disk Groups 一个ASM磁盘组是由一个或多个ASM磁盘组成的,每个AS

ASM 翻译系列第三十三弹:REQUIRED_MIRROR_FREE_MB的含义

REQUIRED_MIRROR_FREE_MB REQUIRED_MIRROR_FREE_MB和USABLE_FILE_MB是V$ASM_DISKGROUP[_STAT]视图中非常有趣的两列.Oracle Support部门收到的很多问题是关于这两列的意义以及它们的值是怎么计算的.我本打算写些文章介绍一下,但是我意识到我不可能比Harald van Breederode做的更出色.因此我征得了他的同意来直接参考他的文章,所以还是请欣赏他的大作吧. https://prutser.wordpres

ASM 翻译系列第三十一弹:了解ASM文件的空间分配

How many allocation units per file 本文主要是对ASM文件的空间分配进行一些探讨和研究. ASM空间分配的最小单位是AU,默认的AU size是1MB,但在Exadata下AU 的默认大小是4MB. ASM文件的空间分配是以extent为单位,每一个extent是由一个或多个AU组成,在11.2版本,前20000个extent,每一个extent由1个AU组成,接下来的20000个extent,每一个由4个AU组成,再超出的extent,每一个由16个AU组成.

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十四)

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十四)地图编辑器诞生啦! 到目前为止,教程示例游戏中虽然实现了A*,但是还无法轻松的为地图设置障碍物:并且游戏所有地图均为一张整的大图片,主角的移动会导致窗体对地图的不停切割,越大的地图带来的负面性能损耗越明显.对地图进行切片处理则可达到性能的最大优化:载入的时候按需加载,地图根据主角的位置仅显示特定部份:并且如果还能配上任意勾勒的遮挡物,那么这一切的一切将更能完美的诠释我们的游戏.开发制作地图编辑器已迫在眉

Oracle ASM 翻译系列第八弹:ASM Internal ASM file extent map

当ASM创建一个文件时(例如数据库实例要求创建一个数据文件),它会以extent为单位分配空间.一旦文件被创建,ASM会传递extent映射表给数据库实例,后续数据库实例能在不和ASM实例交互的情况下访问这个文件.如果一个文件的extent需要被重新定位,比如磁盘组进行rebalance操作,ASM会告知数据库实例关于extent映射表的变更. 可以通过查询ASM实例的X$KFFXP视图来获取ASM文件extent映射表的内容.X$KFFXP视图中的每一行对应着所有处于mount状态磁盘组中每一

【ASM 翻译系列第二弹:ASM 12C 版本新特性】

随着Oracle 12c的发布,也就意味着全新版本的ASM面世了.已知的重大新特性有Flex ASM,数据预校验和更加便捷的磁盘管理操作.下面针对这几个方面进行详细介绍. Flex ASM Flex ASM特性可以允许ASM实例只运行在集群中某些节点上.默认安装将会创建3个ASM实例,而不管集群中节点的数量.一个ASM实例可以为本地和远端数据库提供服务.如果一个ASM实例crash,数据库实例会fail over到另一个ASM实例,而不会crash. 随着Flex ASM的引入,又出现了一个新的