1.ASM概述
ASM是一个卷管理器,将多个磁盘做一个磁盘组来管理.数据在ASM上是均匀分布的,因此避免了热读,提高了性能,性能的RAW差不多.
ASM支持磁盘热插拔,在增加减少磁盘后,ASM会自动的重分布数据,不需要停机.
ASM在软件级别实现了镜像,有三种冗余方式:普通(双重镜像)、高级(三重镜像)、外部(无镜像),避免了因磁盘损坏而导致的数据丢失.在使用了RAID时,可以使用外部冗余方式.
ASM使用OMF管理数据文件.OMF会自动确定文件地点和名称.
一个ASM磁盘组可以被多个数据库使用.
ASM磁盘组可以与其它文件系统共存,如RAW\磁带等.
ACFS(Oracle Automatic Storage Management Cluster File System)自动管理的集群文件系统是一个多平台、可伸缩系统,可以支持非ORACLE的群集文件系统。
ADVM(Oracle ASM Dynamic Volume Manager)ASM动态空间管理器 提供了容量管理功能和标准的对外磁盘接口。
ASM可以用SQLPLUS 、ASMCMD、Oracle ASM Configuration Assistant 、OEM来管理。
ASM实例
ASM实例使用了与ORACLE数据库一样的技术,包括SGA和后台进行。ASM需要的SGA较小,对系统的影响也不大。
ASM是用Oracle Grid Infrastructure 软件安装的。ASM与数据库有不同的ORACLE_HOME。ASM实例维护ASM元数据。ASM元数据用于管理磁盘组,元数据组保存在磁盘组内,包括:
-
The disks that belong to a disk group 磁盘信息
-
The amount of space that is available in a disk group 磁盘组总容量
-
The filenames of the files in a disk group 磁盘组和文件名
-
The location of disk group data file extents 文件块的位置
-
A redo log that records information about atomically changing metadata blocks 记录元数据块变化的日志文件
-
Oracle ADVM volume information ADVM信息
可以用ASM做集群,当一个节点失效后,如一个节点上的ASM停止后,该结点上的数据库实例也停止(说明数据库实例与ASM实例是以应对的),不过其它结点上的ASM实例和数据库实例依然可用。(PS:应该算是伪群集,ASM停了实例也要停。。)
在一台服务器上,一个ASM实例支持多个数据库,每个数据库都可以访问这两个磁盘组:
RAC中,每个实例只与同一个节点上的ASM实例相连,但是所有ASM实例之间都是相连的,数据库实例通过本节点上的ASM实例连接整个磁盘组:
要使用集群的ASM,必须要在每个安装ASM的结点上安装Oracle Clusterware ,做了集群后,每个ASM实例都能连接到同样的磁盘组。
一个磁盘组可以支持多个实例,一个实例也可以使用多个磁盘组,不过大多数情况下,两个磁盘组足够,极少情况下使用三个磁盘组。
镜像和故障组
有三种镜像模式:
normal:两重镜像。需要两个磁盘组,互为故障组。
high:三重镜像。需要三个磁盘组,互为故障组
exteral:不提供镜像。
ASM将主区(extents)和镜像区放在不同的故障组,当一个故障组损坏时,另一个依然可用。
在创建磁盘组时,指定故障组,一旦创建了磁盘组,就不能修改镜像模式。
ASM磁盘
ASM磁盘可由以下组成
磁盘或磁盘的分区、逻辑卷、网络盘(NFS)
将磁盘加入磁盘组时,可以设定磁盘的名称,该名称不同于OS磁盘名称。ASM根据磁盘容量将数据平均的分布到每个磁盘上,以确保每个磁盘有相同的I/O性能,所以不同种类的ASM磁盘不应许放到同一个磁盘组中。
分配单元Allocation Units
AU是基本的ASM单元。在创建磁盘组时指定AU大小 AU_SIZE ,AU_SIZE 参数可是1,2,4,8,16,32,64MB,根据磁盘的兼容性等级compatibility level来设定。大的AU常用于数据仓库中,可以提高性能。
ASM文件
可以存储以下文件:
-
Control files
-
Data files, temporary data files, and data file copies
-
SPFILEs
-
Online redo logs, archive logs, and Flashback logs
-
RMAN backups
-
Disaster recovery configurations
-
Change tracking bitmaps
-
Data Pump dumpsets
ASM自动管理文件名。
分区extents
一个ASM文件包含一个或多个extents,一个extents包含一个或多个AU,大文件使用可变的分区。
可以变的分区大小(兼容性参数在11.1或以上时):
A.0 - 19999分区,分区大小=AU大小
B.20000 - 39999的分区,分区大小=AU*4
C.40000+的分区,分区大小=AU*16
ASM条带化(Oracle ASM Striping)
条带化有两项功能:A.将负载平均的分配到磁盘组的每个磁盘 B.减少I/O延迟
条带化的细粒度是128K,粗粒度大小与AU相同,细粒度用于较小的I/O读写。细粒度条带化示例,AU=1M,变化的区间:
在一个磁盘中,写满一个AU再写下一个AU。
细粒度条带化示例:
在每个AU中都依次写入一个字母,当所有的AU中都放入一个字母后,在每个AU中写入第二个字母。
文件模板File Templates
模板用于指定一属性,如文件镜像、条带化设置等。创建文件时使用模板,可以简化操作。内置了一个默认模板,可以修改这个模板来实现修改化功能,每个磁盘组都有一个默认的模板。
ASM磁盘组管理
发现磁盘About Discovering Disks
disk discovery process进行通过ASM_DISKSTRING 参数来寻找ASM磁盘。
加载和卸载ASM磁盘组About Mounting and Dismounting Disk Groups
磁盘组必须被本地的ASM实例加载才能被数据库使用。加载时,需要找到所有ASM磁盘。
卸载已经打开的磁盘组时,如果不加force选项将会报错。
添加和删除磁盘About Adding and Dropping Disks
可以将磁盘加入到一个已经存在的磁盘组中,前提是这个磁盘必须在ASM_DISKSTRING中。在加入磁盘后,ASM自动的重分布数据从而将数据写到这个磁盘上。为了减少重分布时的I/O,应该将多个磁盘一起加到磁盘组中(To minimize the rebalancing I/O, it is more efficient to add multiple disks at the same time.)
当磁盘有问题时可以卸载磁盘,要使用ASM磁盘的名字卸载。 如果磁盘无法读写,ASM自动卸载这个磁盘
删除磁盘时也会数据重分布。
在线存储重组和动态重分布About Online Storage Reconfigurations and Dynamic Rebalancing
当文件被打散后,每个磁盘上该文件都占有相同的百分比,这是为负载均衡。重分布数据不是基于I/O状况,而是基于磁盘容量(的变化)。当磁盘组容量发生变化后,ASM自动进行重分布。可以设置重分布的速率。在重分布运行时,重新执行重分布可以设置重分布的速率。重分布期间,数据库是可用的。POWER_LIMIT
设置重分布速率。