automated storage management ,即自动存储管理,简称asm .。
在oracle 10g 这个版本之前,管理一个大型数据库成千上万的数据文件对数据库管理员来说是一个既无技术含量又十分枯燥的工作,并且要求数据库管理员掌握系统lvm的相关知识,做好磁盘规划,lv的条带化等相关知识。而asm则大大减轻了这方面的工作,数据库管理员 只需管理少数几个磁盘组即可。磁盘组是asm 管理的一个逻辑单元,由一组磁盘设备组成。我们可以定义一个磁盘组作为数据库的默认磁盘组,oracle asm 包括创建,删除数据文件等。 oracle 会自动将这些文件与一个合适的数据库对象作关联,这样我们在管理这些对象时只需提供对象的名称,无须像以前那样提供详细的文件名。
asm 提供了很多有用的存储技术,如RIAD,LVM等。像这些技术一样,asm 允许你在一组独立的磁盘上创建一个单独的磁盘组。这样就实现了单个磁盘组的I/O均衡。同时ASM还实现了条带化(striping )和磁盘镜像(mirroring)以提高I/O的性能和数据可靠性。与RAID,LVM不同的是,ASM在文件级实现的条带化和镜像,这样的实现方式给用户带来了很大选择自由度,我们可以在同一个磁盘组中对不同的文件配置不同的存储属性,实现不同的存储方式。
在11g中ASM 的新特性:
1。快速重新同步 ASM Fast Mirror Resync
短暂的磁盘路径发生问题时,恢复ASM磁盘组(DISK GROUP )的允余性是很浪费时间的,特别是这种恢复操作需要重新布局整个磁盘组。ASM快速磁盘重新同步这个新特性能显著减少重新同步一块坏磁盘时这种情况的时间,当你更换了坏磁盘,ASM能够快速的同步ASM磁盘的extent.
任何使磁盘组临时不可用的问题被认为是暂时的失效,这是ASM快速重新同步新特性可以恢复的。磁盘路径失效,例如接口线问题,磁盘控制器问题,或者是磁盘电源问题这些都能引起瞬时失效。缺省的情况下,当一块磁盘脱机时,ASM 会立刻 移出该磁盘。ASM快速再同步功能够记录脱机磁盘在脱机期间该磁盘上区的所有变化,当磁盘被修复或者再次联机时,这期间在 数据库 更改的extent 能够被快速的重新同步 到刚才失效的这些磁盘中。
你可以设定DISK_REPAIRE_TIME 这个属性使失效 磁盘在被修复和再次联机这段时间内重新整理这样的操作不发生。这个时间可以以分钟或者小时为单位,如果不指定时间单位,缺省的时间单位为小时。如果DISK_REPAIRE_TIME 这个属性没有设定,其缺省值为3.6小时。需要注意的是,这个缺省值使用与磁盘被设定为脱机模式而操作语句没有drop after 这样的情况。大部分来说环境,3.6个小时这个DISK_REPAIRE_TIME缺省属性数值应该都是合适的。
根据材料:
注意:
使用这项新功能,ASM磁盘组的兼容性需要设定至11.1或者更高。
例:create diskgroup asmdskgrp1 disk '/dev/raw/*'
set attribute 'compatible.rdbms'='11.1','compatible.asm'='11.1';
只有当包含脱机磁盘的磁盘组再次被挂上,消逝时间都是增加的,v$asm_disk的repaire_time 这列显示的是脱机磁盘在被删除之前所剩余的时间(单位:秒 ),当指定的时间到达后,asm 删除磁盘,可以用带有drop after 的alter diskgroup disk offline语句来覆盖这个属性 。
注意:
drop after 也是11g 的新特性。
如果一条alter diskgroup set attribute disk_repaire_time操作的磁盘组含有脱机的磁盘,这个属性只对那些非脱机模式的磁盘时生效的。
当一块脱机磁盘被第二次执行脱机操作,消逝时间会被重置并开始计算。如果另一个时间这块磁盘又被执行了drop after 操作,上一个值会被覆盖并且新知生效。不能用alter diskgroup drop disk 语句删除处于脱机状态的磁盘,这样操作时会抱错。如果在某时情况,例如磁盘不能被修复,需要在disk_repaire_time到达之前把磁盘删除时,可以再次执行带有drop after 子句的offline语句,drop after 指定oh 或者om ,表示立刻删除。
你可以用alterdiskgroup dg1 set attribute 'disk_repaire_time'='4.5h'
alter diskgroup dg1 set attribute 'disk_repaire_time'='270m';
在你修复磁盘后,运行alter diskgroup disk online 这条sql语句可以使磁盘恢复到联机状态,新的读写操作都可以正常进行了,这条语句也可以触发把磁盘维修期间内更改的extent 从磁盘组冗余的数据重新同步到刚才失效的这些磁盘中。
3。asm 可扩展性和性能的增强
asm文件区管理在11g都有改进,体现在性能的提升和显著的减少用于存储文件区的sga内存方面。当ASM 的文件在大小上增加时,每一个区的大小也会自动增加,因此,会有需要很少的指向区 指针描述文件。当访问20GB至128TB大小的ASM 文件时11g的这个新特征 会提升性能。当然,这样的文件通常是非常大的数据库(VLDBs)所用的。
除此之外。当你创建新的磁盘组时,你现在有多个分配单位大小选项,例如1,2,4,8,16,32,和64(MB)。依据数据库的负载和存储系统的类型,选择大的分配单位可能会获得明显的性能提升。
磁盘组存储的ASM 文件的内容是由N个数据区组成的,数据区存储在独立的磁盘上 。区 包含一个或多个分配单位(AU)。为适应逐渐增大的大文件,ASM使用变化大小的区。
变化大小的区能够支持更大的ASM 文件,减少大数据对SGA内存的使用,并且提升文件创建和打开操作的性能。一个ASM文件开始的一个区是由一个分配单位组成的。当文件大小增加时,如果大小超出预先定义的值,新的区大小也会在增加到8分配单位,然后新的区大小增加到64个分配单位。对于新创建 的文件,这一特征自动生效的。
分配单位的大小为多少在磁盘组建立的时候确定,可以为1,2,4,8,16,32及64 (MB),当ASM文件的大小范围在1到20,000个区这个量级是,每个区的大小与分配单位的大小相等;ASM当文件大小超出20,000个区,到20,001到40,000个区这个范围,新的区的大小分自动增至 8个分配单位大小;再有当ASM文件大小超出40,000个区,新的区的大小自动增至 64个分配单位大小。下图表示的是含自快磁盘的磁盘组,文件由1AU增至8AU的变化状况,在这个配置中,ASM没有做文件镜像的。
4。为asm管理员新增了sysasm 权限和osasm 操作系统用户组
在oracle 10g这个版本,oracle 没有为asm管理员定制相应的角色,asm管理员以sysdba角色进行管理工作,在实际工作中asm管理员与数据库管理员可能是不同的来年国歌或几个人完成的,相对来说权限界定不清晰。11g这个新特征引入sysasm 这一新权限目的就是为了清晰asm管理员与数据库管理员的界面,防止越权操作的发生,使asm 管理员更好的进行asm 管理工作。
这个新特性同时在操作系统中也为asm 新增了osasm 用户组,osasm 这个组时专门为asm设计的,可以通过操作系统授权,别授权的这个组成员本地连接具有sysasm 权限,能够以sysasm 角色进行权限的asm 管理工作。最初,只有asm 的安装用户是这个组的成员,在后继的工作,你可以添加新的用户组到osasm 这个组,使新用户有asm 管理的去那部权限。
需要注意的是,在oracle 11g release的版本,系统osdba 组的成员,连入数据库具有sysdba 的权限,这样的用户荏苒可以连接并管理asm 的实例,但相信在后续的版本中有sysdba权限的用户不会被授权由asm 实例的管理权限。
5。asm 滚动升级
6。asm 的命令
asmcmd 有下列的四个新的命令:lsdsk,md_backup,md_restore和remap.除此之外,你还能使用带有新选项的ls和lsdg命令。下面描述一下这四个新的asm 命令:
lsdsk 不论是否有一个 asm 的实例正在运行,这个命令都能列出asm 磁盘的信息。当系统管理员或者存储管理员想查看一下asm 实例都用了那些磁盘时,这个命令非常有用。
md_backup 和md_restore 这两个命令使能够用相同的磁盘路径,磁盘名,失败组,属性,模板及目录结构别名来重新建立已经存在的磁盘组。你可以使用md_backup备份磁盘组的环境,在出现问题的时候用mk_restore来恢复相应的磁盘组。
remap 你可以使用这个命令重映射或者恢复normal 及high redundancy 模式asm 磁盘组中的坏块,asm 读取asm 映像好的拷贝中相应的快,并且把这些快重新写到磁盘组中一个替代的位置。
7。asm 镜像优先读取
在扩展集群中,如果远程结点的访问是不均衡的,这一新特性对于提升性能是很有用的。这导致更好的存储利用率,降低网络负载。 oracle 10g 中,asm 总读一个镜像区集的主要拷贝,我们知道这样做的目的是为了分散i/o,提升性能。而对于一个磁盘组的一块盘,对于某一个结点来说,可能是本地盘,也可能是远程盘,如果从主拷贝读取数据,这个主拷贝又是远程盘,显然没有本地盘效率高。不过在oracle 10g 中是不能完成设定从那块盘读取数据的,在11g 中引入了asm_preferred_read_failure_groups 这个参数,即我们所谈的asm 优先镜像读取新特征,可以完成这样的功能,如下再详细说一下这个新特征。