赞
踩
ASM实例被设计和构建为数据库实例的逻辑扩展;它们共用相同的实例管理机制。与数据库实例参数文件相似,ASM实例也有一个名为注册表文件的参数文件,它存储在一个ASM磁盘群组的/ASMPARAMETERFILE目录中,在Oracle Grid Infrastructure 安装期间,指定该磁盘组来存储OCR和表决磁盘。Oracle为ASM参数文件使用保留文件号253。对于单实例数据库,ASM的SID为+ASM,而对于Oracle RAC节点来说为+ASMnode#。对数据库初始化参数文件适用的文件名、默认位置和搜索顺序等规则也适用于ASM初始化参数文件。但是,它们有一组独立的初始化参数,这些参数是不能在数据库实例中设置的。
1. 管理ASM实例
ASM实例的启动类似于Oracle数据库实例;与使用SQL*Plus连接到实例中一样,必须将ORACLE_SID环境变量连接到ASM SID。初始化参数文件(可能是一个服务器参数,也称为ASM参数文件)必须包含参数INSTANCE_TYPE = ASM,以告诉Oracle可执行文件:一个ASM实例正在启动,而不是启动一个数据库实例。除了由ASM_DISKGROUPS初始化参数指定的磁盘组之外,ASM将自动挂载用于存储表决磁盘、OCR和ASM参数文件的磁盘组。
STARTUP命令用一组内存结构来启动实例,并挂载由初始化参数ASM_DISKGROUPS
指定的磁盘组。如果ASM_DISKGROUPS为空,那么ASM实例启动,并警告没有挂载磁盘组。然后可以用ALTER DISKGROUP MOUNT(类似于ALTER DATABASE MOUNT命令)来挂载磁盘组。
表6-2描述了ASM实例的各种启动模式。
表6-2 启动模式
启动模式 | 说明 |
NOMOUNT | 启动ASM实例,不挂载任何磁盘组 |
MOUNT | 启动ASM实例,并挂载磁盘组 |
OPEN | 挂载磁盘组,并允许从数据库中进行连接。这是默认的启动模式 |
FORCE | 在SHUTDOWN ABORT之后启动MOUNT |
其他一些启动子句对于ASM实例的解释与对数据库实例的解释类似。例如,RESTRICT防止数据库实例连接这个ASM实例。OPEN对于ASM实例是无效的。NOMOUNT启动ASM实例,而不挂载任何磁盘组。
ASM实例没有任何数据字典,连接到ASM实例的唯一可能方式就是通过操作系统权限,如SYSDBA、SYSASM和SYSOPER。在安装Oracle Grid Infrastructure 期间指定操作系统组OSASM、OSDBA和OSOPER,这些操作系统组为Oracle ASM实例实现SYSASM、SYSDBA和SYSOPER权限。Oracle允许通过密码身份验证连接到ASM实例,它要求将ASM初始化参数REMOTE_ LOGIN_PASSWORDFILE设置为一个不等于NONE的值。
默认情况下,Oracle通用安装程序将为ASM实例创建一个密码文件,新用户将被自动添加到密码文件中;用户随后可以使用Oracle Net Service通过网络连接到ASM实例。在通过ASMCMD连接时,Oracle以SYSDBA身份连接到ASM实例。我们可以使用SQL*Plus连接到实例,并运行简单的SQL命令,如“show sga”和“show parameter ”。下面是一个示例:
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Fri Jan 14 11:09:38 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> show sga
Total System Global Area 283930624 bytes
Fixed Size 2225792 bytes
Variable Size 256539008 bytes
ASM Cache 25165824 bytes
可以查询V$PWFILE_USERS动态视图,列出密码文件中的用户。另外一种列出密码文件中用户的方法是在ASMCMD命令提示下使用lspwusr命令。ASMCMD可用于手动创建和管理密码文件。
ASM实例关闭类似于数据库实例关闭。在关闭一个ASM实例之前,必须先关闭使用这个ASM实例的数据库实例。当使用NORMAL、IMMEDIATE或TRANSACTIONAL关闭时,ASM会等待任何正在进行的SQL操作完成。一旦完成所有ASM SQL操作,就卸载所有磁盘组,并按照有序方式关闭ASM实例。如果任何数据库实例连接到ASM实例,SHUTDOWN命令就将返回一条错误,仍然使ASM实例保持运行状态。
在使用SHUTDOWN ABORT时,ASM实例被立即终止。它不会以有序方式卸载磁盘组。下一次启动时需要利用ASM恢复(类似于RDBMS恢复)使磁盘组的状态一致。ASM实例还有一些类似于撤销和重做的组件(具体细节将在本章后面讨论),它们支持崩溃恢复和实例恢复。
如果有任何数据库实例连接到这个ASM实例,那么数据库实例会终止,因为它不能访问由这个ASM实例管理的存储系统。
在Oracle 11g R2中,ASM实例可以通过ASMCA、ASMCMD和SRVCTL实用工具来启动和停止。SRVCTL使用OCR中注册的启动和关闭选项来启动或停止一个ASM实例。下面的示例说明使用SRVCTL实用工具来启动和停止集群节点racnode01上的ASM实例+ASM1。
使用下面的命令启动racnodel集群节点上的ASM实例:
$srvctl start asm -n racnode01
使用以下命令停止racnode01集群节点上的ASM实例:
$srvctl stop asm -n racnode01
与SQL*Plus类似,也可以使用ASMCMD命令行实用工具来启动和停止ASM实例,只是其启动/关闭选项的语法有所不同。下面给出使用ASMCMD启动和停止ASM实例的示例。
使用以下命令以挂载状态启动ASM实例:
$asmcmd
ASMCMD> startup –mount
使用以下命令立即关闭ASM实例:
$asmcmd
ASMCMD> shutdown –immediate
注意:
如果在ASM磁盘组中存储OCR和表决磁盘,那么不能单独启动或关闭Oracle RAC数据库系统中的ASM实例。必须使用crsctl命令来启动或停止CRS,它也会启动/停止ASM实例。
尽管ASM没有数据字典,但它提供了一个存储在内存中的动态性能视图,可用于从ASM实例中提取元数据信息。下面对这些重要的动态性能视图进行简短描述。当然,它并不是一个完整的性能视图清单。因此,要了解ASM动态性能视图的完整列表,应参阅Oracle技术网络网站上的Oracle文档。
V$ASM 这个视图显示了所连接ASM实例的实例信息。
V$ASM_DISKGROUP 这个视图列出了在ASM中创建的磁盘组,还有元数据信息,如磁盘组的空闲空间、分配单元大小和状态。
V$ASM_FILE 这个视图列出了在V$ASM_DISKGROUP视图所列磁盘组中创建的文件。
V$ASM_ALIAS 这个视图列出了在V$ASM_FILE视图中所列ASM文件的用户友好名称。这个视图对于识别ASM文件的确切名称非常有用,因为V$ASM_FILE视图仅列出了文件号。
V$ASM_DISK_IOSTAT 这个视图列出了V$ASM_DISKGROUP视图中所列每个磁盘的磁盘I/O性能统计信息。
V$ASM_ACFSVOLUMES 这个视图列出了ASM动态卷的元数据信息。
V$ASM_OPERATION 这个视图显示了当前操作,例如在V$ASM_DISKGROUP视图中所列磁盘组上发生的任何再均衡操作。这个视图对于监控ASM中的再均衡操作非常有用。
2. ASM后台进程
由于ASM是使用RDBMS框架构建的,因此这些软件的体系结构类似于Oracle RDBMS进程的结构。ASM实例是使用各种后台进程构建的,这些进程中专属于ASM实例的一部分用来管理ASM中的磁盘组、ASM动态卷管理器和ASM集群文件系统。下面的列表显示ASM实例的后台进程,它们拥有ASM的SID:
grid 23405 1 0 2010 ? 00:00:25 asm_o000_+ASM1
grid 25753 1 0 21:37 ? 00:00:00 asm_pz99_+ASM1
grid 27524 1 0 2010 ? 00:00:53 asm_pmon_+ASM1
grid 27526 1 0 2010 ? 00:00:01 asm_psp0_+ASM1
grid 27530 1 0 2010 ? 00:00:00 asm_vktm_+ASM1
grid 27534 1 0 2010 ? 00:00:00 asm_gen0_+ASM1
grid 27536 1 0 2010 ? 00:00:02 asm_diag_+ASM1
grid 27538 1 0 2010 ? 00:01:06 asm_ping_+ASM1
grid 27540 1 0 2010 ? 00:21:59 asm_dia0_+ASM1
grid 27542 1 0 2010 ? 00:08:59 asm_lmon_+ASM1
grid 27544 1 0 2010 ? 00:16:53 asm_lmd0_+ASM1
grid 27546 1 1 2010 ? 11:14:44 asm_lms0_+ASM1
grid 27550 1 0 2010 ? 00:00:00 asm_lmhb_+ASM1
grid 27552 1 0 2010 ? 00:00:00 asm_mman_+ASM1
grid 27554 1 0 2010 ? 00:00:02 asm_dbw0_+ASM1
grid 27556 1 0 2010 ? 00:00:00 asm_lgwr_+ASM1
grid 27558 1 0 2010 ? 00:00:04 asm_ckpt_+ASM1
grid 27560 1 0 2010 ? 00:00:00 asm_smon_+ASM1
grid 27562 1 0 2010 ? 00:05:55 asm_rbal_+ASM1
grid 27564 1 0 2010 ? 00:00:00 asm_gmon_+ASM1
grid 27566 1 0 2010 ? 00:00:00 asm_mmon_+ASM1
grid 27569 1 0 2010 ? 00:00:00 asm_mmnl_+ASM1
grid 27576 1 0 2010 ? 00:00:01 asm_lck0_+ASM1
grid 27680 1 0 2010 ? 00:01:11 asm_asmb_+ASM1
grid 30118 1 0 2010 ? 00:00:39 asm_o001_+ASM1
仔细看一下这些后台进程,将会发现RDBMS实例管理中使用的后台进程类似于smon和pmon。但是,还有其他一些进程(如rbal和gmon)都是ASM实例特有的。现在让我们仔细研究一下ASM特有的这些进程。在ASM实例中创建ASM动态卷时,将会看到更多的后台进程,如VDBG、VBGn和VMB。这里将解释一些重要的ASM后台进程。
RBAL 这是一个再均衡后台进程。它负责再均衡操作,还协调ASM磁盘恢复进程。
GMON 这是“组监控器”后台进程。它在管理磁盘组时将磁盘组标记为“脱机”,甚至会删除这个磁盘组。
ARBn 尽管RBAL负责协调磁盘组的再均衡,但实际上是由ARBn来执行再均衡协调的。
VMB 这是一个“卷成员资格”后台进程,它与ASM实例一同负责集群成员资格。在创建ASM动态卷时,ASM实例会启动这个后台进程。
VDBG 这是“卷驱动程序”后台进程。它与动态卷驱动程序一同提供卷盘区的锁定和解锁。这是一个非常重要的进程,如果被意外终止,那么它会关闭ASM实例。
VBGn 这是“卷后台”进程。ASM实例中的VBG与操作系统卷驱动程序通信。它负责ASM与操作系统之间的消息发送。
XDMG 这是一个Exadata自动管理器。XDMG监控所有配置的Exadate单元,以了解状态变化,例如更换了一个坏磁盘等。它的主要任务是监控不可访问的磁盘和单元,当它们再次可供访问时,启动ASM ONLINE操作。
3. 数据库实例中的ASM进程
每个使用ASM的数据库实例有两个后台进程:ASMB和RBAL。ASMB后台进程在数据库实例中运行,连接到ASM实例中的前台进程。通过这一连接,定期交互消息,以更新统计信息,并核实两个实例都是健康的。通过ASMB将所有描述开放文件的盘区映射图发送给数据库实例。如果重新定位了一个开放文件的盘区,或者改变了一个磁盘的状态,那么从受影响数据库实例中的ASMB进程接收消息。
在需要ASM干预的操作期间,例如由数据库前台进程创建一个文件,这个数据库前台进程会直接连接ASM实例,以执行此操作。每个数据库实例维护一个连接池(其中包含指向这个ASM实例的连接),以避免在每次执行文件操作时重新连接所带来的开销。
一个由从属进程O001~O010组成的组建立到ASM实例的连接,这些从属进程用作数据库进程的连接池。数据库进程可以使用从属进程向ASM实例发送消息。例如,打开一个文件会通过一个从属进程向ASM实例发送打开请求。但是,从属进程不会用于长时间运行的操作,例如用于创建文件的操作。利用这些从属连接,不再需要因为短期请求而登录ASM实例所造成的开销。这些从属进程会在没有使用时自动关闭。
4. 数据库和ASM实例之间的通信
ASM类似于Oracle数据库的一个卷管理器,它为Oracle数据库文件提供了文件系统。当我们创建一个新的表空间或者只是向一个现有表空间中添加一个新的数据文件时,Oracle数据库实例请求ASM实例创建一个可供Oracle数据库实例使用的新ASM文件。在接收到创建新文件的请求之后,ASM实例向“持续操作目录”中添加一个条目,并在ASM磁盘组中为这个新文件分配空间。ASM创建盘区,并与数据库实例共享盘区映射图;事实上,数据库实例中的ASMB后台进程接收这一盘区映射图进程。
一旦数据库实例成功打开了这个实例,ASM实例就提交新文件创建操作,并从“持续操作目录”中删除该条目,因为新文件信息现在已经存储在磁盘头中。这里有一个需要理解的重要概念:大多数人看到数据库I/O被重新导向到ASM实例,ASM实例代表数据库实例来执行I/O;但是,这是错误的。Oracle数据库实例直接向ASM文件执行I/O,但当ASM实例向数据库实例确认已经提交了新文件时,它必须重新打开一次新创建的ASM文件。ASM实例使用两个数据结构来管理它所包含的元数据事务,这两种结构称为“活动改变目录”(ACD)和“持续操作目录”(COD)。
活动改变目录(ACD)
活动改变目录(ACD)是一种日志记录机制,它提供了类似于Oracle数据库中重做日志的功能。活动改变目录记录了ASM实例中的所有元数据改动,当由于操作故障或者实例崩溃而发生意外故障,从而在决定前滚时,会用到这些记录。ACD作为一个文件(大小为42MB)存储在一个ASM磁盘中。ASM元数据是三重镜像的(高冗余),在添加新实例时,可以在磁盘组内增长。ASM的事务原子性是由ACD保证的。
持续操作目录(COD)
持续操作目录(COD)是ASM实例中的一种内存结构,它维持活动ASM操作及改变的状态信息,如再均衡、添加新磁盘或删除磁盘等。另外,来自客户端(如RDBMS实例)的文件创建请求会使用COD来保护完整性。COD记录会根据ASM操作的成功或失败来提交或回滚。COD类似于Oracle数据库的回滚段(或撤销表空间)。
5. 初始化参数
就像数据库实例一样,ASM实例需要有强制参数和可选参数。可以在数据库实例和ASM实例中设置初始化参数,但有些参数仅对ASM实例有效。以下初始化参数可以在ASM实例中设置。以“ASM_”开头的参数不能用于数据库实例。强烈建议将这些参数存储在ASM参数文件中(也称为SPFILE或注册表文件)。
INSTANCE_TYPE 这个参数向Oracle可执行文件指明实例类型。默认情况下,Oracle可执行文件假定实例类型是一个数据库实例。这是ASM实例中的唯一强制参数。所有其他参数在没有指明时都有适当的默认参数。
ASM_POWER_LIMIT 设置磁盘再均衡的功能限制。这个参数值默认为1,有效值为0~11。这个参数是动态的。有关再均衡的详细信息将在本章后面提供。
ASM_DISKSTRING 一个用逗号分隔的字符串列表,它限制了ASM发现的磁盘集。这个参数接受通配符。只有那些与字符串之一匹配的磁盘才能被发现。字符串格式取决于所使用的ASM库和操作系统。ASM的标准系统库支持glob模式匹配。如果正在使用ASMLib来创建ASM磁盘,那么默认路径为ORCL:*。
CLUSTER_DATABASE 如果集群节点上的ASM实例希望访问同一ASM磁盘,那么这个参数必须被设置为TRUE。这个参数实际地启用集群存储。必须确保集群中所有ASM实例上的这个参数都设置为相同值。
ASM_DISKGROUPS 使用ALTER DISKGROUP ALL MOUNT语句时或者由ASM在启动时挂载的磁盘组名称列表。如果没有指定这个参数,那么除存储SPFILE、OCR和表决磁盘的ASM磁盘组之外,不会挂载其他磁盘组。这个参数是动态的,在使用服务器参数文件(SPFILE)时,不需要改变这个值。
ASM_PREFERRED_READ_FAILURE_GROUPS 这个参数是在Oracle 11g中引入的,允许扩展集群配置中的ASM实例从本地磁盘中读取数据,而不需要总是从主副本中读取(在扩展集群配置中,每个站点都有自己的专用存储)。在Oracle 11g之前,无论本地磁盘上是否有可供使用的相同盘区,ASM总是从主副本中读取数据。这是Oracle 11g中非常受欢迎的改进,它对于提高Oracle 扩展集群的性能非常有用。在为扩展集群配置ASM时,要非常仔细地选择故障组的数量,因为这一设置会对ASM读取性能产生直接影响。
LARGE_POOL_SIZE ASM实例使用的内部包是从大型池中执行的,因此应当将初始化参数LARGE_POOL_SIZE设置为一个大于8MB的值。至于其他缓冲区参数,可以使用其默认值。
db_unique_name:参数默认值是+ASM,是集群中或但个节点上的ASM实例的唯一值。
asm_preferred_read_failure_groups
此参数是11g中的新增参数,在使用集群asm实例时候,此参数包含给定的数据库实例首选的故障组。此参数因实例而异:每个实例可以指定与实例节点最接近的故障组以提高性能,例如,最少恢复时间的故障组
6. 手动创建磁盘组
Oracle提供了不同的ASM工具(如ASMCA、ASMCMD、Oracle网格控制和SQL*Plus)来创建和管理ASM实例内部的磁盘组。在创建ASM磁盘组之前,了解对ASM磁盘的性能和可用性需求(如ASM磁盘组的冗余级别)非常重要。如果底层存储不受RAID配置的保护,就应当为ASM磁盘组选择正确的冗余,从而使用ASM镜像。ASMCA是一个GUI工具,其用途是不言自明的,不需要太多的专业知识,但要改变ASM磁盘组的不同属性,就应当单击Show Advance Options按钮。ASMCM使用XML样式的标记来指定ASM磁盘组名称、磁盘位置和属性。这些XML标记可被指定为内联XML,也可以创建一个可以用ASMCMD中的mkdg命令使用的XML文件。
在SQL*Plus中,使用CREATE DISKGROUP命令在ASM实例中创建磁盘组。在创建磁盘组之前,ASM实例将核查在一个磁盘组中添加的磁盘/RAW分区是可寻址的。如果磁盘/RAW分区是可寻址的,而且所有其他组都没有使用它,那么ASM在要使用的磁盘或RAW分区的第一个数据块中写入特定信息,以创建该磁盘组。从Oracle 11g开始,可以为ASM磁盘组指定不同属性,这些属性会对ASM磁盘组的性能和可用性产生影响。在创建ASM磁盘组时指定的属性可以从V$ASM_ATTRIBUTE动态性能视图中查看。下面是通常会用到的重要ASM磁盘组属性列表:
AU_SIZE 用于指定所创建ASM磁盘组的分配单元大小。不能改变一个已有磁盘组的分配单元,所以要确保在创建ASM磁盘组时指定了正确的分配单元。默认情况下,Oracle为分配单元使用的大小为1MB。
DISK_REPAIR_TIME 这个属性与磁盘组的性能和可用性有关。这个属性指定了一个时间量,ASM在等待这一时间长度之后将删除一个脱机ASM磁盘并再均衡磁盘组。
COMPATIBLE.ADVM 如果将使用这个磁盘组创建ASM动态卷,而且只在Oracle Grid Infrastructure 11g R2及以下版本中使用这个磁盘组,那么需要这个属性。
CELL.SMART_SCAN_CAPABLE 这个属性仅对于Oracle Exadata网格磁盘有效,它启用基于智能扫描的卸载处理。
在执行CREATE DISKGROUP命令时,ASM自动挂载磁盘组,磁盘组名称也被添加到SPFILE中的ASM_DISKGROUPS参数,所以在以后重新启动ASM实例时,只会挂载这个新创建的磁盘组。
如果希望ASM对文件进行镜像,那么在创建ASM磁盘组时定义冗余级别。Oracle提供了两种冗余级别:正常冗余和高冗余。在正常冗余情况下,每个盘区有一个镜像整本;在高冗余情况下,每个盘区在不同磁盘组中有两个镜像副本。
一个磁盘组中的磁盘应当大小相当、性能特征类似。为不同类型的磁盘创建不同磁盘组总是明智的做法。磁盘组中的磁盘应当大小相同,以避免在故障组中浪费磁盘空间。用于创建磁盘组的所有磁盘都必须具有一致的ASM_DISKSTRING参数,以避免出现磁盘发现问题。
7. ASM三种磁盘组的创建及删除(High Normal Extermal)
2.1 创建High级别的ASM磁盘组,最少需要三块磁盘来创建。
SQL> create diskgroup oradata high redundancy disk'/dev/oracleasm/disks/VOL3','/dev/oracleasm/disks/VOL4','/dev/oracleasm/disks/VOL5';
Diskgroupcreated.
2.2 创建Normal级别的ASM磁盘,最少需要两个磁盘来创建。
SQL> create diskgroup oradata normal redundancy disk'/dev/oracleasm/disks/VOL6','/dev/oracleasm/disks/VOL7';
Diskgroupcreated.
2.3 创建Extermal级别的ASM磁盘,最少需要一个磁盘来创建。
SQL> create diskgroup oradata external redundancy disk '/dev/oracleasm/disks/VOL8';
Diskgroupcreated
删除磁盘组
SQL> drop diskgroup oradata including contents;
卸载磁盘
SQL> alter diskgroup oradata dismount;
挂载磁盘
SQL> alter diskgroup oradata mount;
挂载所有磁盘
SQL> alter diskgroup all mount;
卸载所有磁盘
SQL> alter diskgroup all dismount;
在创建磁盘组之后,可能需要根据业务需求对它进行修改。Oracle允许在创建磁盘组之后对其执行创建、删除/撤销删除和挂载/卸载操作,并且允许调整磁盘组的大小。
8. 向磁盘组添加磁盘
只要向磁盘组中添加了磁盘,Oracle就会在内部再均衡I/O负载。下面的示例说明如何向现有磁盘组中添加磁盘。Oracle使用ADD子句向现有磁盘组中添加磁盘或故障组。在这个示例中,原始分区/dev/raw/raw7被添加到现有组DGA中:
ALTER DISKGROUP DGA ADD DISK
'/dev/raw/raw7' NAME disk5;
在这条语句中没有定义故障组,所以不会将这个磁盘指定给它自己的故障组。
9. 删除磁盘组中的磁盘
Oracle随CREATE DISK GROUP命令一起提供了DROP DISK子句,用以删除磁盘组中的一个磁盘。在这个操作期间,Oracle会在内部再均衡这些文件。如果磁盘组中的其他磁盘中没有足够空间,Oracle就会使DROP操作失败。如果正在一个磁盘组中添加和删除磁盘,那么建议您采取先添加后删除的顺序,而且两个操作应当在单独一条ALTER DISKGROUP语言中执行,因为这样可以减少花费在再均衡上的时间。Oracle还提供了一些强制选项,即使ASM不能读写一个磁盘组中的磁盘,也能对其进行删除。这个选项不能针对采用外部冗余的磁盘组使用。
在这个示例中,我们从DGA磁盘组中删除/dev/raw/raw7:
ALTER DISKGROUP DGA DROP DISK '/dev/raw/raw7';
10. 调整磁盘大小
Oracle提供了RESIZE子句,该子句可结合ALTER DISKGROUP命令使用,以调整磁盘大小,调整任意特定磁盘的大小,或者调整一个特定故障组中的磁盘大小。
调整磁盘大小对于释放磁盘空间非常有用。例如,如果在创建磁盘组时为磁盘定义的SIZE小于磁盘大小,而后来希望完全利用这个磁盘的空间,就可以使用这个选项,但不提供任何SIZE,以使Oracle采用操作系统返回的SIZE:
ALTER DISKGROUP DGA RESIZE DISK '/dev/raw/raw6' SIZE 500M;
11. 管理ACFS
诸如ASMCA、ASMCMD、OEM和SQL*Plus之类的ASM工具可用于创建和管理ACFS。创建ACFS就像是用任意一个传统卷管理器来创建一个文件系统。在传统的卷管理器中,首先创建一个卷组,然后创建卷。最后,创建文件系统,然后加载文件系统。
类似于ASM磁盘组中的一个分配单元,“卷分配单元”是一个ASM动态卷中可以分配的最小存储单元。ASM在每个卷分配单元中分配条带,其中每个条带都等于卷盘区大小,这个卷盘区大小与底层ASM磁盘组的分配单元大小直接相关。默认情况下,对于一个分配单元大小为1MB的磁盘组,一个卷盘区的大小为64MB。我们在创建ASM动态卷时指定条带(也称为条带列)的数量和每个条带的宽度,因为Oracle在内部使用SAME方法对数据进行分条和镜像。Oracle随后将存储在ACFS内部的文件分散到区块中,每个卷盘区上的条带宽度大小为128KB(默认的条带宽度)。
例如,如果创建一个400MB的ASM卷,并以默认设置在其内部存储一个大小为1MB的文件,那么Oracle将会创建64MB的卷盘区大小,每个卷分配单元将为256MB(条带数量乘以卷盘区大小)。因为Oracle在多个卷分配单元中分配空间,所以尽管我们请求了400MB的空间,但它将为ASM动态卷分配512MB。ASM动态卷可在以后进行扩展。ASM将这个文件分布在8个128KB的区块中,并将它们存储在卷盘区中。ASM以相同方式对ASM磁盘组中可用磁盘上的卷盘区进行分条;因此,它提供了非常高效的I/O操作。我们可以使用ASM实例的V$ASM_ ACFSVOLUMES和V$ASM_FILESYSTEM动态性能视图来查看有关所连接ASM实例的ACFS文件系统信息。
12. 设置ACFS
按照下面给出的步骤创建ASM集群文件系统:
(1) 创建一个ASM磁盘组,将属性COMPATIBLE.ADVM设置为最小值11.2.0.0.0,因为设置这一属性会告诉ASM,这个磁盘组可以存储ASM动态卷。如果还没有设置这个属性,就不能在这个ASM磁盘组中创建动态卷。这个属性的最小值为11.2.0.0.0,这是因为ACFS是在Oracle 11g R2中引入的,不能在先前版本的Oracle集群件中使用。我们可以使用ASMCA、ASMCMD、OEM或SQL*Plus来创建ASM磁盘组。如果正在使用ASMCA,那么可以通过单击Show Advance Options按钮来设置磁盘组属性。其他ASM工具允许在命令行中指定这一参数。
(2) 在创建ASM磁盘组之后,需要在上一步骤创建的ASM磁盘组中创建ASM动态卷。
(3) 创建所需要的OS目录结构,以挂载新创建的ASM动态卷。
(4) 创建这个目录之后,需要使用操作系统命令mkfs来创建ACFS文件系统。确保使用以下语法在ASM动态卷上创建ACFS类型的文件系统:
mkfs -t acfs /dev/asm/
(5) 现在使用挂载操作系统命令挂载新创建的文件系统。确保使用ACFS系统类型来挂载此文件系统。
13. 创建ACFS快照
可以使用ASM工具来创建和管理ACFS快照。ASMCMD命令acfsutil可用于通过命令行界面来创建和管理快照。下面是一个创建ACFS快照的示例:
acfsutil snap create acfs_snap_01 /app/oracle/myfirstacfs
快照创建过程将创建一个隐藏目录(.ACFS),并在这个隐藏目录中创建一个目录结构snaps/。在我们的示例中,ASM将创建以下目录结构:
.ACFS/snaps/acfs_snap_01
尽管ACFS拥有这些令人兴奋的功能,但它也有一些局限性,在使用ACFS之前必须要了解它们。尽管可以在ASM动态卷上创建其他文件系统,但Oracle仅支持ACFS作为ASM动态卷上的集群文件系统。对ASM动态卷的分区是不受支持的,所以不能使用fdisk命令对ASM动态卷设备进行分区。除此之外,也不应当在ASM动态卷上使用ASMLib,因为Oracle不支持这一配置。可以使用多路径设备来创建一个ASM磁盘组,但禁止对ASM动态卷使用多路径。
14. ASM快速镜像再同步
在Oracle 11g之前,只要ASM不能向ASM磁盘中写入数据盘区,它就使这个ASM磁盘脱机。除此之外,还禁止再次对这个磁盘进行读取,ASM将根据其他ASM磁盘上存储的镜像副本重新创建这些盘区。在将这个磁盘再次添加到组中时,ASM将再次执行这一再均衡操作,以重新构建所有数据盘区。这一再均衡操作非常耗时,对ASM磁盘组的响应时间也有影响。
而Oracle 11g则不会删除脱机ASM磁盘,它会等待一段时间,对所修改的数据盘区进行跟踪,等待时间由相关磁盘组的ASM_DISK_REPAIR属性指定。如果在这一时间内修复了故障,那么ASM将只重建修改后的数据盘区,而不会对整个磁盘组进行全面再均衡,从而使再均衡操作在整体上更快速、更高效。
15. ASM再均衡
在存储配置和再配置期间,ASM不需要任何停机时间,也就是说,在改变存储配置时不需要使数据库脱机。在磁盘组中添加或删除磁盘之后,ASM会自动在磁盘组的所有磁盘之间均匀地再分布文件数据。这个操作称为“磁盘再均衡”,它对数据库是透明的。
再均衡操作在磁盘组的所有可用磁盘之间均匀地分布每个文件的内容。这个操作是由磁盘的空间使用情况驱动的,而不是根据这些磁盘的I/O统计信息决定的。在需要时会自动调用它,操作期间不需要人为干预。也可以选择手动运行这个操作,或者改变一个正在运行的再均衡操作。
增加负责此操作的后台从属进程数量可以加快再均衡操作的速度。后台进程ARBx负责存储再配置期间的磁盘再均衡。为了动态增加从属进程的数量,可以使用init.ora参数ASM_POWER_LIMIT。当在Oracle RAC中运行时,建议仅使用一个节点执行再均衡。关闭任何一个未使用的ASM实例都可以做到这一点。图6-5显示了再均衡功能。
如果没有在ALTER DISKGROUP命令中指定POWER子句,或者在添加或删除磁盘时隐式调用了再均衡操作,那么再均衡操作产生的后台进程数量默认为ASM_POWER_
LIMIT初始化参数的值。这一参数可以动态调整。这一上限越高,再均衡操作的完成速度越快。这一取值越低,会使再均衡操作花费的时间越长,但所占用的进程和I/O资源也越少。这样就把这些资源留给了其他应用程序,如数据库。默认值1将对其他应用程序的影响降到了最低。适当的取值应当根据硬件配置以及性能和可用性要求来决定。
如果因为手动或自动删除了一个磁盘而正在进行再均衡,那么增加再均衡的后台进程数量可以缩短在其他磁盘上为被删除磁盘上的数据重建冗余副本的时间。
V$ASM_OPERATION视图提供了一些信息,可用于调整ASM_POWER_LIMIT和再均衡操作产生的后台进程数量。V$ASM_OPERATION视图还在EST_MINUTES列中给出了完成再均衡操作所需要的估计时间值。通过观察时间估计值的变化,可以看出改变再均衡后台进程数量的效果。
16. 手动再均衡磁盘组
可以使用ALTER DISKGROUP语句的REBALANCE子句对一个磁盘组内的文件进行手动再均衡。通常不需要这一操作,因为ASM会在磁盘组的构成发生变化时自动再均衡磁盘组。但如果希望控制再均衡速度,那么也可能要进行手动再均衡操作。
ALTER DISKGROUP...REBALANCE语句的POWER子句指定了并行化程度,因此也就指定了再均衡操作的速度。其设定值可以是0~11。值0将会暂停再均衡操作,直到再次隐式或显式地调用该语句为止。默认的再均衡后台进程数是由ASM_POWER_LIMIT
初始化参数设置的。
注意:
在使用REBALANCE POWER 0创建磁盘组时,ASM会自动禁用再均衡功能。如果向磁盘组中添加更多磁盘,那么ASM将不会在新添加的磁盘中分布数据。同样,在从这个磁盘组中移除磁盘时(DROP DISK),磁盘组保持DROPPING状态,直到将REBALANCE POWER改为大于0为止。
在输入REBALANCE语句时提供新的级别,这会改变当前正在进行的再均衡操作的后台进程数量级别。ALTER DISKGROUP...REBALANCE命令在默认情况下会立即返回,以便我们能够在后台异步进行再均衡操作时发出其他命令。我们可以通过查询V$ASM_OPERATION视图来了解再均衡操作的状态。从Oracle 11g开始,可以在ASMCMD命令提示下使用lsop命令,列出ASM操作。下面是一个使用lsop命令的示例:
vASMCMD> lsop
Group_Name Dsk_Num State Power
Data RBAL REAP 2
如果我们希望ALTER DISKGROUP...REBALANCE命令等到再均衡操作完成之后再返回,那么可以向REBALANCE子句中添加WAIT关键字。这一点在脚本中特别有用。这个命令还接受NOWAIT关键字,它将调用异步执行再均衡操作的默认行为。在大多数平台中,可以通过按下Ctrl+C组合键中断运行在等待模式的再均衡操作。这样会使命令立即返回,并给出消息:ORA-01013: user requested cancel of current operation,并异步继续执行再均衡操作。
再均衡操作的其他规则包括以下:
ALTER DISKGROUP...REBALANCE语句使用的资源仅限于启动该语句的节点上的资源。
在给定实例上,ASM只能同时执行一个再均衡过程。
在执行再均衡的ASM实例发生故障时,再均衡会继续执行。
REBALANCE子句(及其相关的POWER和WAIT/NOWAIT关键字)也可在添加、删除磁盘或调整磁盘大小的ALTER DISKGROUP命令中使用。
下面的示例对磁盘组dgroup2进行手动再均衡。在再均衡操作完成之前,这个命令不会返回:
ALTER DISKGROUP dgroup2 REBALANCE POWER 5 WAIT;
V$ASM_DISK_STAT和V$ASM_DISKGROUP_STAT可用于查询性能统计信息。下面的查询可用于获取磁盘组级别的性能统计信息。这些视图(再加上V$filestat)可以提供有关磁盘组及数据文件性能的更多信息。
SELECT PATH, READS, WRITES, READ_TIME, WRITE_TIME,
READ_TIME/DECODE(READS,0,1,READS)"AVGRDTIME",
WRITE_TIME/DECODE(WRITES,0,1,WRITES) "AVGWRTIME"
FROM V$ASM_DISK_STAT;
PATH READS WRITES READ_TIME WRITE_TIME AVGRDTIME AVGWRTIME
------------ -------- -------- ---------- ------------ ---------- ----------
ORCL:DISK1 50477 67683 20.86 724.856718 .000413258 .010709583
ORCL:DISK2 418640 174842 100.259 802.975526 .000239487 .004592578
17. ASM中的备份和恢复
由于ASM实例本身不包含任何文件,而只是管理ASM磁盘的元数据,因此ASM实例没有进行备份。ASM元数据是三重镜像的,它应当对元数据提供保护,避免受到典型故障的损害。如果发生的故障足以导致元数据的丢失,那么必须重新创建磁盘组。ASM磁盘上的数据使用RMAN备份。在发生故障时,一旦创建了磁盘组,就可以使用RMAN来恢复数据(如数据库文件)。
每个磁盘组都是自我描述的,包含它自己的文件目录、磁盘目录和其他一些数据,如元数据日志记录信息。ASM会使用镜像技术自动保护其元数据,甚至会用外部冗余磁盘组提供保护。ASM实例在其SGA中缓存信息。ASM元数据描述了磁盘组及文件,由于它保存在磁盘组内部,因此也可以提供自我描述。元数据保存在块中,每个元数据块的大小为4KB,并采用三重镜像。
当多个ASM实例挂载相同磁盘组时,如果一个ASM实例发生故障,另一个ASM实例就会自动恢复由故障实例导致的短暂ASM元数据更改。这种情景称为“ASM实例恢复”,全局缓存服务会自动地即时检测这一情景。
当多个ASM实例挂载不同的磁盘组或者在单一ASM实例配置中时,如果在打开ASM元数据进行更新时一个ASM实例发生故障,那么当前未被任何其他ASM实例挂载的磁盘组在被再次挂载之前不会进行恢复。当一个ASM实例挂载了一个发生故障的磁盘组时,它会读取磁盘组日志,并恢复所有短暂更改。这种情景称为“ASM崩溃恢复”。
因此,在使用ASM集群实例时,建议让所有ASM实例总是挂载相同的磁盘集。但是也有一种可能,在本地连接的磁盘上有一个磁盘组,这些本地连接的磁盘只能让集群中的一个节点看到,因此就仅在这些磁盘连接的节点上挂载这个磁盘组。
ASM支持标准操作系统备份工具:Oracle Secure备份,也支持第三方备份解决方案,例如存储阵列快照技术,该技术用来备份ACFS文件系统。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29065182/viewspace-1172091/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29065182/viewspace-1172091/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。