ASM 1——概念简介

1、 ASM简介

ASM(Automated Storage Management,自动存储管理)是自Oracle10g这个版本Oracle推出的新功能。它是一个建立在数据库内核中的文件系统和卷管理器。它能自动将I/O负载均衡到所有可用的磁盘启动器上,以避免"热区"。ASM能防止碎片,因此无须重建数据来回收空间。数据被均衡分布到所有硬盘上。

ASM是Oracle用于替代操作系统所提供的LVM,它不仅支持单实例配置,也支持RAC这样的多实例配置,将给Oracle数据库管理员带来极大的方便。ASM可以自动管理磁盘组,并提供数据冗余和优化。特别是对于企业级的大型数据库管理员来说,ASM可以使管理员从管理成百上千个数据文件这些琐碎的日常事务中解脱开来,以便处理其他更为重要的事务。

在Oracle 10g这个版本之前,管理一个大型数据库成百上千个的数据文件对数据库管理员来说是一个既无技术含量又十分枯燥的工作,这要求数据库管理员要熟悉一些系统的LVM的相关知识,做好磁盘规划、LV的条带等相关的系统方面的相关操作。而使用自动存储管理将大大减轻这方面的工作量,数据库管理员只需要管理少数几个磁盘组即可。一个磁盘组是ASM管理的一个逻辑单元,由一组磁盘设备组成。

ASM提供了很多有用的存储技术,如RAID和LVM(逻辑卷管理)等。像这些技术一样,ASM允许用户在一组独立的磁盘上创建一个单独的磁盘组,这样就实现了单个磁盘组的I/O均衡。同时ASM还实现了条带化(Striping)和磁盘镜像(Mirroring)以提高I/O的性能和数据可靠性。与RAID或LVM不同的是,ASM是在文件级实现的条带化和镜像,这样的实现方式给用户带了很大选择自由度,用户可以在同一个磁盘组中对不同的文件配置不同的存储属性,实现不同的存储方式。

2、ASM架构

ASM在外观和使用方式上,与DBA所熟悉的RDBMS非常类似。比如ASM也是由实例和文件组成,维护也是通过SQL*PLUS工具,但是ASM的实例和文件又与数据库和文件有很大不同,在以后的称呼中为区分称谓,分别叫:  ASM实例   和    RDBMS实例。

2.1 ASM实例

ASM实例和RDBMS实例一样,也是由SGA和后台进程组成。

SGA中也包括:Buffer Cache、Shared Pool、Large Pool等部分,需要注意的是Shared Pool,因为Extent Map要放在这部分内存中,需要根据数据量估计Extent Map的大小做相应的调整。

Extent Map的大小可以通过下面的语句来计算出来:

这三个SUM的总和对应着数据库存放在ASM中的所有文件大小的和,对于使用External Redundancy(外部冗余) 的磁盘组,每100GB需要1MB的Extent Map,根据这个比例计算Extent Map需要的空间,再加上额外的2MB就可以了。但是在实际工作中,不需要考虑ASM的SGA的配置,使用oracle提供的默认值就可以了。

2.2 后台进程

ASM实例和传统的RDBMS实例相比多两个进程:RBAL和ABRn

RBAL:这个进程也叫Rebalancer进程,负责规划ASM磁盘组的Reblance活动。

ABRn:是RBAL进程的子进程,这个进程在数量上可以有多个,n从1--9,这组进程负责真正完成Reblance活动。

需要注意的是,传统的RDBMS实例,在使用了ASM作为存储之后,也会多出来两个进程:RBAL 和 ASMB

RBAL进程:这个进程的主要功能是打开每个磁盘组的所有磁盘和数据的Reblance。

ASMB:这个进程作为ASM实例和数据库实例之间的信息通道。这个进程负责与ASM实例的通信,他先利用Diskgroup Name从CSS(集群同步服务)获得管理该Diskgroup 的ASM实例的连接串,然后建立到ASM的持久连接两个实例通过这条连接定期交换信息,同时也是一种心跳机制。

RDBMS实例想要使用ASM作为存储,RDBMS实例必须启动时从ASM实例中获得Extent Map。以后发生磁盘组的维护操作,ASM还要把Extent Map的更新信息通知给RDBMS实例,这两个实例之间的交互就是通过ASMB进程完成的。因此,ASM实例必须要先于数据库实例启动、和数据库实例同步运行,迟于数据库实例关闭。

O0nn  01-10 :这是一组进程,这组进程建立到ASM实例的连接,某些长时间操作,比如创建数据文件,RDBMS会通过这些进程想ASM发送信息。

下面通过这篇文章,了解一下ASM的定义:

Automatic Storage Management是Oracle 在版本10g中率先(对比其他RDBMS)提出的数据库存储自动解决方案,在版本11g中得到进一步升华。ASM提供了数据库管理所需要的一个简单、有效的存储管理接口,该接口实现了跨服务器和存储平台。 ASM是文件系统filesystem和volume manager卷管理软件的一体化,专门为Oracle的数据库文件所设计的; ASM在保证如文件系统般管理简单的基础上提供高性能的异步Async IO。ASM的引入提高了数据库的可扩展容量,同时节约了DBA的时间,使其能够更敏捷、更高效地管理一个流动性较大的数据库环境。

ASM的出现是为RDBMS管理文件存储

  • 注意ASM不会替代RDBMS去实施IO读写,很多对这一点存在误解,认为RDBMS发送IO request给ASM,ASM去做真正的IO操作,这是错误的。
  • 真正的IO还是由RDBMS进程去实施,和不用ASM的裸设备一样
  • 因此ASM不是IO的中间层,也就不存在因为ASM而出现所谓的IO瓶颈
  • 对于ASM而言LUN DISK可以是裸设备也可以直接是块设备(10.2.0.2以后)
  • 适合存放在ASM中的文件类型包括:数据文件datafile、控制文件controlfile、重做日志redolog、归档日志archivelog、闪回日志flashback log、spfile、RMAN备份以及block tracking file、datapump文件
  • 从11gR2开始,ASM引入了ACFS特性可以存放任何类型的文件; 但是ACFS不支持存放数据文件

ASM基础概念:

  • ASM的最小存储单位是一个”allocation unit”(AU),通常为1MB,在Exadata上推荐为4MB
  • ASM的核心是存储文件
  • 文件被划分为多个文件片,称之为”extent”
  • 11g之前extent的大小总是为1个AU,11g之后一个extent可以是1 or 8 or 64个AU
  • ASM使用file extent map维护文件extent的位置
  • ASM在LUN DISK的头部header维护其元数据,而非数据字典
  • 同时RDBMS DB会在shared pool中缓存file extent map,当server process处理IO时使用
  • 因为ASM instance使用类似于普通RDBMS的原理的instance/crash recovery,所以ASM instance崩溃后总是能复原的。

ASM存储以diskgroups的概念呈现:

  • Diskgroup DG对RDBMS实例可见,例如一个DATA DG,对于RDBMS来说就是以’+DATA’表示的一个存储点, 可以在该DG上创建一个tablespace,例如: create tablespace ONASM datafile ‘+DATA’ size 10M。
  • Diskgroup下面是一个或者多个failure group (FG)
  • FG被定义为一组Disk
  • Disk在这里可以是裸的物理卷、磁盘分区、代表某个磁盘阵列的LUN,亦或者是LVM或者NAS设备
  • 多个FG中的disk不应当具备相同的单点故障,否则ASM的冗余无效

ASM所提供的高可用性:

  • ASM提供数据镜像以便从磁盘失败中恢复
  • 用户可以选择EXTERNAL、NORMAL、HIGH三种冗余镜像
  • EXTERNAL即ASM本身不做镜像,而依赖于底层存储阵列自身实现镜像;在External下任何的写错误都会导致Disk Group被强制dismount。在此模式下所有的ASM DISK必须都存在健康,否则Disk Group将无法MOUNT
  • NORMAL 即ASM将为每一个extent创建一个额外的拷贝以便实现冗余;默认情况下所有的文件都会被镜像,这样每一个file extent都有2份拷贝。若写错误发生在2个Disk上且这2个Disk是partners时将导致disk Disk Group被强制dismount。若发生失败的磁盘不是partners则不会引起数据丢失和不可用。
  • HIGH 即ASM为每一个extent创建两个额外的拷贝以便实现更高的冗余。2个互为partners的Disk的失败不会引起数据丢失,当然不能有更多的partners Disk失败了。
  • 数据镜像依赖于failure group和extent partnering实现。ASM在NORMAL 或 HIGH 冗余度下可以容许丢失一个failure group中所有的磁盘。

Failure Group镜像的使用

  • ASM的镜像并不像RAID 1那样
  • ASM的镜像基于文件extent的粒度,extent分布在多个磁盘之间,称为partner
  • Partner disk会存放在一个或者多个分离的failure group上
  • ASM自动选择partner并限制其数量小于10个
  • 若磁盘失败,则ASM更新其extent map使今后的读取操作指向剩余的健康partner
  • 在11g中,若某个disk处于offline状态,则对于文件的变更会被追踪记录这样当disk被重现online时则这些变化得以重新应用,前提是offline的时间不超过DISK_REPAIR_TIME所指定的时间(默认为3.6个小时). 这种情况常发生在存储控制器故障或者类似的短期磁盘故障:
  • 这种对于文件变更的追踪基于一个发生变化的file extent的位图,该位图告诉ASM哪些extents需要从健康的partner哪里拷贝至需要修复的disk,该特性称之为fast mirror resync
  • 在10g中没有fast mirror resync特性,若disk出现offline则直接自动被drop掉,不存在允许修复的周期
  • 对于无法再online的disk,则必须被drop掉; 一个新的disk会被ASM选择并通过rebalancing 操作拷贝数据,这些工作是后台自动完成的。

重新平衡Rebalancing

  • Rebalancing是在磁盘之间移动文件extent以实现diskgroup上的IO负载均衡的过程
  • Rebalancing在后台异步发生,是可监控的
  • 在集群环境中,一个diskgroup的重平衡只能在一个ASM instance上发生,不能通过集群多节点同时处理以加速
  • 当disk被加入或移除时,ASM会自动在后台开始数据重新平衡工作
  • 重平衡的速度和力度可以通过asm_power_limit参数控制
  • asm_power_limit参数默认为1,其范围为0~11(从11.2.0.2开始是0-1024),该参数控制实施重平衡后台进程的数量;Level 0表示不实施重新平衡
  • 在重新平衡过程中IO性能(主要是吞吐量和响应时间)可能受到影响,其影响程度取决于存储本身的能力和重新平衡的力度,默认的asm_powner_limit=1不会造成过度的影响

性能方面

  • ASM会通过在DG中条带化文件extent分布以最大化可用的IO带宽
  • 有2种可用条带化宽度:coarse粗糙条带化大小为1个AU,fine精细条带化为128K
  • 即便是fine精细条带化仍采用普通大小的file extent,但是条带化以更小的片形式循环式地分布在多个extent上
  • ASM默认不让RDBMS去读备用的镜像拷贝extent,即使这样请放心IO还是均衡的
  • 默认情况下RDBMS总是去读取主primary extent,从11.1开始可以通过PREFERRED_READ_FAILURE_GROUP参数设置让本地节点优先读取某个failure group中的extent; 该特性主要为extended distance RAC设计,不建议在常规ASM中使用

 其他知识

  • 并非RAC才能使用ASM,单节点同样可以从ASM哪里获得好处
  • 节点上的一个ASM instance实例可以为多个RDBMS DB实例服务
  • RAC环境中的ASM必须也是集群化的,以便能够协调更新元数据
  • 从11.2开始,ASM从RDBMS HOME分离出来,而和clusterware一起安装在GRID HOME下。

Disk Group:

Disk Group”磁盘组” 是ASM管理的逻辑概念对象,一个Disk Group由多个ASM disk组成。每一个Disk Group都是子描述的,如同一个标准的文件系统一样。所有关于该Diskgroup 空间使用信息的元数据均完整地包含在这个磁盘组中。 若ASM可以找到所有属于该ASM diskgroup的DISK则他不需要任何其他额外的元数据。

文件空间从Disk Group中分配。任何一个ASM文件总是完整地包含在一个单独的Disk Group中。但是,一个Disk Group可能包含了属于多个数据库的文件,一个单独的数据库的文件也可以存放在多个不同的Disk Group中。 在大多数实际的部署中,不会创建太多数量的Disk Groups,一般在3~4个。

Disk Group提供三种不同的redundancy冗余度,详见上文。

ASM Disk

一个ASM Disk是组成Disk Group的基本的持久的存储。 当一个ASM Disk加入到Disk Group中时,它要么采用管理员指定的ASM Disk Name要么采用系统自动分配的Disk Name。 这不同于OS 给用于访问该设备的”艺名”。  在一个Cluster集群中, 同一个Disk 可能在不同的节点上显示不同的Device Name设备名,例如在 Node1上的 /dev/sdc ,对应于Node2上的/dev/sdd。 ASM Disk必须在所有使用该Disk Group的实例上可用直接磁盘I/O访问。

实际上对于RDBMS Oracle而言访问ASM disk和访问普通的文件并没有什么不同,除非使用了ASMLIB(ASMLIB不是ASM必须的,再次强调!)。常规情况下ASM Disk是OS上可见的LUN的partition,该分区覆盖了所有不被操作系统所保留的磁盘的空间。 大多数操作系统需要保留LUN的第一个block作为分区表(partition table); 由于ASM总是会写ASM Disk的第一个块,所以要保证ASM不会去覆盖前几个block上的分区表(partition table),例如在Solaris上分区时不要把前几个柱面划给partition。LUN可以是简单的物理JBOD,或者是由高级存储阵列管理的虚拟LUN。既可以是直连的设备也可以是SAN。ASM Disk可以是任何被开发系统调用所访问的东西,除了本地文件系统。 甚至于NFS上的文件都可以被当做一个ASM Disk来用,这样便于喜欢NAS的用户使用ASM,当然比起NFS来我更建议干脆用ISCSI。

注意虽然可以使用普通logical Volume Manager LVM管理的logical volume作为ASM Disk,但是这并不是推荐组合,除非你想不到其他更好的办法。 即便你一定要这样用,但是注意也不要在LVM级别做镜像和条带化。

ASM将任何文件以AU大小均匀分布在Disk Group的所有Disk上。每一个ASM Disk均被维护以保持同样的使用比率。这保证同一个Disk Group中的所有Disk的IO负载基本一致。由于ASM在一个Disk Group中的磁盘上的负载均衡,所以为同一个物理磁盘的不同区域划分为2个ASM Disk不会对性能有所影响;而同一个物理磁盘上划分2个不同分区置于不同的2个Disk Group则有效。

当ASM Disk Group启用冗余时单个ASM Disk仅是一个失败单元。对于该ASM Disk的写失败在10g会自动从该Disk Group drop掉该Disk,前提是该Disk的丢失被容许。

Allocation Unit

每一个ASM Disk都被划分为许多个AU allocation units(单个AU 的大小在 1MB ~64MB,注意总是2的次方MB)。而且AU allocation unit也是Disk Group的基本分配单元。一个ASM Disk上的可用空间总是整数倍个AU。在每一个ASM Disk的头部均有一个表,该表的每一条记录代表该ASM Disk上的一个AU。文件的extent指针(pointer)给出了ASM Disk Number磁盘号和AU号,这就描述了该extent的物理位置。由于所有的空间操作都以AU为单位,所以不存在所谓ASM碎片这样的概念和问题。

一个AU(1M~64M)足够小,以便一个文件总是要包含很多个AU,这样就可以分布在很多磁盘上,也不会造成热点。一个AU又足够大以便能够在一个IO操作中访问它,以获得更加的吞吐量,也能提供高效的顺序访问。访问一个AU的时间将更多的消耗在磁盘传输速率上而非花在寻找AU头上。对于Disk Group的重新平衡也是对每一个AU逐次做的。

了解ASM后台进程的作用:

GMON: ASM Diskgroup监控进程

ASMB: ASM后台网络进程

RBAL: ASM reblance master process 重新平衡主进程

ARBx:   reblance slave process实际实施reblance的后台进程

MARK: AU resync AU重新同步的指挥家进程

了解ASM前台进程的作用:

ASM的client(主要是RDBMS DB和CRSD))在连接ASM实例时会产生前台进程,前天进程的名字一般为oracle+ASM_<process>_<product> (例如: oracle+ASM_DBW0_DB1)。

OCR 特有的前台进程foreground: oracle+ASM1_ocr

 ASM相关的V$和X$视图

视图名 X$基表名 描述
V$ASM_DISKGROUP X$KFGRP 实施磁盘发现disk discovery和列出磁盘组
V$ASM_DISKGROUP_STAT X$KFGRP_STAT 显示disk group状态
V$ASM_DISK X$KFDSK, X$KFKID 实施磁盘发现disk discovery和列出磁盘以及这些磁盘的使用度量信息
V$ASM_DISK_STAT X$KFDSK_STAT,X$KFKID 列出磁盘和其使用度量信息
V$ASM_FILE X$KFFIL 列出ASM文件也包括了元数据信息
V$ASM_ALIAS X$KFALS 列出了ASM的别名,文件和目录
V$ASM_TEMPLATE X$KFTMTA 列出可用的模板和其属性
V$ASM_CLIENT X$KFNCL 列出链接到ASM的DB实例
V$ASM_OPERATION X$KFGMG 列出rebalancing重平衡操作
N/A X$KFKLIB 可用的ASMLIB路径
N/A X$KFDPARTNER 列出Disk-partners关系
N/A X$KFFXP 所有ASM文件的extent map
N/A X$KFDAT 所有ASM Disk的extent列表
N/A X$KFBH 描述ASM cache
N/A X$KFCCE ASM block的链表
V$ASM_ATTRIBUTE(new in 11g) X$KFENV(new in 11g) Asm属性,该X$基表还显示一些隐藏属性
V$ASM_DISK_IOSTAT(new in 11g) X$KFNSDSKIOST(new in 11g) I/O统计信息
N/A X$KFDFS(new in 11g)  
N/A X$KFDDD(new in 11g)  
N/A X$KFGBRB(new in 11g)  
N/A X$KFMDGRP(new in 11g)  
N/A X$KFCLLE(new in 11g)  
N/A X$KFVOL(new in 11g)  
N/A X$KFVOLSTAT(new in 11g)  
N/A X$KFVOFS(new in 11g)  
N/A X$KFVOFSV(new in 11g)  

X$KFFXP包含了文件、extent和AU之间的映射关系。 从该X$视图可以追踪给定文件的extent的条带化和镜像情况。注意对于primary au和mirror au读操作的负载是均衡的, 而写操作要求同时写2者到磁盘。以下是X$KFFXP视图列的含义

X$KFFXP Column Name Description
ADDR x$ table address/identifier
INDX row unique identifier
INST_ID instance number (RAC)
NUMBER_KFFXP ASM file number. Join with v$asm_file and v$asm_alias
COMPOUND_KFFXP File identifier. Join with compound_index in v$asm_file
INCARN_KFFXP File incarnation id. Join with incarnation in v$asm_file
PXN_KFFXP Progressive file extent number
XNUM_KFFXP ASM file extent number (mirrored extent pairs have the same extent value)
GROUP_KFFXP ASM disk group number. Join with v$asm_disk and v$asm_diskgroup
DISK_KFFXP Disk number where the extent is allocated. Join with v$asm_disk
AU_KFFXP Relative position of the allocation unit from the beginning of the disk. The allocation unit size
(1 MB) in v$asm_diskgroup
LXN_KFFXP 0->primary extent, ->mirror extent, 2->2nd mirror copy (high redundancy and metadata)
FLAGS_KFFXP N.K.
CHK_KFFXP N.K.

X$KFDAT该X$视图包含了所有allocation unit AU的细节,不管是FREE的还是USED。

X$KFDAT Column Name Description
ADDR x$ table address/identifier
INDX row unique identifier
INST_ID instance number (RAC)
GROUP_KFDAT diskgroup number, join with v$asm_diskgroup
NUMBER_KFDAT disk number, join with v$asm_disk
COMPOUND_KFDAT disk compund_index, join with v$asm_disk
AUNUM_KFDAT Disk allocation unit (relative position from the beginning of the disk), join with
x$kffxp.au_kffxp
V_KFDAT V=this Allocation Unit is used; F=AU is free
FNUM_KFDAT file number, join with v$asm_file
I_KFDAT N/K
XNUM_KFDAT Progressive file extent number join with x$kffxp.pxn_kffxp
RAW_KFDAT raw format encoding of the disk,and file extent information

X$KFDPARTNER 这个X$视图包含了 disk-partner(1-N)的映射关系,在一个给定ASM Diskgroup,若2个Disk存有同一个extent的镜像拷贝,则将2个disk视作partners。因此partners必须属于同一个diskgroup下的不同的failgroup。

X$KFDPARTNER Column Name Description
ADDR x$ table address/identifier
INDX row unique identifier
INST_ID instance number (RAC)
GRP diskgroup number, join with v$asm_diskgroup
DISK disk number, join with v$asm_disk
COMPOUND disk identifier. Join with compound_index in v$asm_disk
NUMBER_KFDPARTNER partner disk number, i.e. disk-to-partner (1-N) relationship
MIRROR_KFDPARNER if=1 in a healthy normal redundancy config
PARITY_KFDPARNER if=1 in a healthy normal redundancy config
ACTIVE_KFDPARNER if=1 in a healthy normal redundancy config

研究ASM必要的技巧

1)找出ASM的镜像mirror extent,在例子中是ASM的spfile

[grid@localhost ~]$ sqlplus  / as sysasm

SQL*Plus: Release 11.2.0.3.0 Production on Wed Feb 13 11:13:39 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Automatic Storage Management option

INSTANCE_NAME
----------------
+ASM

SQL>
SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      +SYSTEMDG/asm/asmparameterfile
                                                 /registry.253.805993079

select GROUP_KFFXP, DISK_KFFXP, AU_KFFXP
  from x$kffxp
 where number_kffxp =
       (select file_number
          from v$asm_alias
         where name = 'REGISTRY.253.805993079');

GROUP_KFFXP DISK_KFFXP   AU_KFFXP
----------- ---------- ----------
          3          2         38
          3          1         39
          3          0         44

也可以这样定位

select GROUP_KFDAT, NUMBER_KFDAT, AUNUM_KFDAT
  from x$kfdat
 where fnum_kfdat = (select file_number
                       from v$asm_alias
                      where name = 'REGISTRY.253.805993079')

GROUP_KFDAT NUMBER_KFDAT AUNUM_KFDAT
----------- ------------ -----------
          3            0          44
          3            1          39
          3            2          38

==> 找到该 DISK对应的路径
SQL> select path,DISK_NUMBER from v$asm_disk where GROUP_NUMBER=3 and disk_number in (0,1,2);

PATH                 DISK_NUMBER
-------------------- -----------
/dev/asm-diski                 2
/dev/asm-diskh                 1
/dev/asm-diskg                 0

SQL> create pfile='/home/grid/pfile' from spfile;

File created.

SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Automatic Storage Management option

[grid@localhost ~]$ cat pfile
+ASM.asm_diskgroups='EXTDG','NORDG'#Manual Mount
*.asm_diskstring='/dev/asm*'
*.asm_power_limit=1
*.diagnostic_dest='/g01/app/grid'
*.instance_type='asm'
*.large_pool_size=12M
*.local_listener='LISTENER_+ASM'
*.remote_login_passwordfile='EXCLUSIVE'

通过dd读取该AU		  

[grid@localhost ~]$ dd if=/dev/asm-diski of=/tmp/spfile.dmp skip=38 bs=1024k count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00328614 seconds, 319 MB/s

[grid@localhost ~]$ strings /tmp/spfile.dmp
+ASM.asm_diskgroups='EXTDG','NORDG'#Manual Mount
*.asm_diskstring='/dev/asm*'
*.asm_power_limit=1
*.diagnostic_dest='/g01/app/grid'
*.instance_type='asm'
*.large_pool_size=12M
*.local_listener='LISTENER_+ASM'
*.remote_login_passwordfile='EXCLUSIVE'

[grid@localhost ~]$ dd if=/dev/asm-diskh of=/tmp/spfile1.dmp skip=39 bs=1024k count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0325114 seconds, 32.3 MB/s

[grid@localhost ~]$ strings /tmp/spfile1.dmp
+ASM.asm_diskgroups='EXTDG','NORDG'#Manual Mount
*.asm_diskstring='/dev/asm*'
*.asm_power_limit=1
*.diagnostic_dest='/g01/app/grid'
*.instance_type='asm'
*.large_pool_size=12M
*.local_listener='LISTENER_+ASM'
*.remote_login_passwordfile='EXCLUSIVE'		

[grid@localhost ~]$ dd if=/dev/asm-diskg of=/tmp/spfile2.dmp skip=44 bs=1024k count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0298287 seconds, 35.2 MB/s

[grid@localhost ~]$ strings /tmp/spfile2.dmp
+ASM.asm_diskgroups='EXTDG','NORDG'#Manual Mount
*.asm_diskstring='/dev/asm*'
*.asm_power_limit=1
*.diagnostic_dest='/g01/app/grid'
*.instance_type='asm'
*.large_pool_size=12M
*.local_listener='LISTENER_+ASM'
*.remote_login_passwordfile='EXCLUSIVE'

2) 显示asm disk failure group和 disk partners的映射关系:

  1* select DISK_NUMBER,FAILGROUP,path from v$asm_disk where group_number=3
SQL> /

DISK_NUMBER FAILGROUP                      PATH
----------- ------------------------------ --------------------
          3 SYSTEMDG_0003                  /dev/asm-diskj
          2 SYSTEMDG_0002                  /dev/asm-diski
          1 SYSTEMDG_0001                  /dev/asm-diskh
          0 SYSTEMDG_0000                  /dev/asm-diskg

SQL> select disk,NUMBER_KFDPARTNER,DISKFGNUM from X$KFDPARTNER where grp=3;

      DISK NUMBER_KFDPARTNER  DISKFGNUM
---------- ----------------- ----------
         0                 1          1
         0                 2          1
         0                 3          1
         1                 0          2
         1                 2          2
         1                 3          2
         2                 0          3
         2                 1          3
         2                 3          3
         3                 0          4
         3                 1          4
         3                 2          4

12 rows selected.

ASM常见问题, FAQ:

Q:ASM做 rebalance和 mirror 的基本颗粒是什么?

A: ASM做mirror 镜像的基本颗粒是file的extent,默认情况下一个extent等于一个AU,11g之后一个extent可以是1 or 8 or 64个AU

ASM做rebalance重新平衡的基本颗粒也是extent,虽然重新平衡是对每一个AU逐次做的。

Q:ASMLIB和ASM的关系是什么?

A:ASMLIB是一种种基于Linux module,专门为Oracle Automatic Storage Management特性设计的内核支持库(kernel support library)。

简单来说ASMLIB是一种Linux下的程序包,它不属于Oracle ASM kernel。 通过ASMLIb可以做到设备名绑定,便于ASM使用的目的; 但是Linux上能实现设备名绑定并便于ASM使用的服务有很多,例如udev、mpath等;

所以ASMLIB并不是ASM必须的组件; 国内的中文文章对于该概念的描述大多不清晰,造成了ASMLIB=ASM或者ASM必须用ASMLIB的误解,这是以讹传讹。

ASMLIB的缺点见拙作《Why ASMLIB and why not?》一文

Q: ASM是否是raid 10或者raid 01?

A:ASM的mirror是基于file extent的,而不是像raid那样基于disk或者block。 所以ASM既不同于Raid 10,也不是Raid 01。 如果硬要说相似点的话,因为ASM是先mirror镜像后stripe条带化,所以在这个特征上更像Raid 10。 但是注意,再次强调,ASM既不是RAID 10也不是RAID 01, 重复一千遍。。。。。。。。。。。。。

转自:https://blogs.oracle.com/askmaclean/entry/%E6%B7%B1%E5%85%A5%E4%BA%86%E8%A7%A3oracle_asm_%E4%B8%80_%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5

时间: 2024-10-30 02:29:12

ASM 1——概念简介的相关文章

《面向对象的思考过程(原书第4版)》一第1章 面向对象的概念简介

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第1章,[美] 马特·魏斯费尔德(Matt Weisfeld) 著 第1章 面向对象的概念简介 很多程序员其实并不知道在20世纪60年代就已出现面向对象的软件开发方式.尽管受欢迎的面向对象的编程语言(例如Smalltalk和C++)已被广泛使用,但直到90年代中后期面向对象范式才开始快速发展.面向对象方法论的兴起恰逢互联网作为商业及娱乐平台之际.总之,对象借助网络能良好协作.后来显然互联网存活下来,而面向对象的技术已经在开发新的

《C语言编程初学者指南》一2.1 内存概念简介

2.1 内存概念简介 计算机"记忆"(内存,memory)就像人一样,因为计算机也有短时记忆和长时记忆.计算机的长时记忆叫做非易失性(nonvolatile)内存,并且通常和较大的存储设备有关系,例如硬盘.较大的磁盘阵列.光盘存储(CD/DVD),以及便携式存储设备(如USB闪存或U盘).在本书第10章和第11章中,我们将学习如何使用非易失性内存来存储数据. 本章关注的是计算机的短时或者易失性的"记忆".当计算机断电的时候,易失性的记忆会丢失其数据.计算机的易失性的

遗传算法、贪婪算法、粒子群算法、蚂蚁算法概念简介

遗传算法 遗传算法是计算数学中用于解决最佳化的搜索算法,是进化算法的一种.进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传.突变.自然选择以及杂交等.遗传算法通常实现方式为一种计算机模拟.对于一个最优化问题,一定数量的候选解(称为个体)的抽象表示(称为染色体)的种群向更好的解进化.传统上,解用二进制表示(即0和1的串),但也可以用其他表示方法.进化从完全随机个体的种群开始,之后一代一代发生.在每一代中,整个种群的适应度被评价,从当前种群中随机地选择多个个体(基于它们的适应

RAC1——Clusterware概念简介1

一 集群环境下的一些特殊问题   1.1 并发控制 在集群环境中, 关键数据通常是共享存放的,比如放在共享磁盘上. 而各个节点的对数据有相同的访问权限, 这时就必须有某种机制能够控制节点对数据的访问. Oracle RAC 是利用DLM(Distribute Lock Management) 机制来进行多个实例间的并发控制.   1.2 健忘症(Amnesia) 集群环境配置文件不是集中存放的,而是每个节点都有一个本地副本,在集群正常运行时,用户可以在任何节点更改集群的配置,并且这种更改会自动同

DG1——概念简介

原文转自:http://blog.csdn.net/tianlesoftware/article/details/5514082 RAC, Data Gurad, Stream 是Oracle 高可用性体系中的三种工具,每个工具即可以独立应用,也可以相互配合. 他们各自的侧重点不同,适用场景也不同. RAC 它的强项在于解决单点故障和负载均衡,因此RAC 方案常用于7*24 的核心系统,但RAC 方案中的数据只有一份,尽管可以通过RAID 等机制可以避免存储故障,但是数据本身是没有冗余的,容易形

以前收集的一些资料---一些有关AUO和MMD的基本概念

Active User Objects和The Membership Directory在网站的编程技术中我们经常遇到的问题是如何跟踪用户的信息,特别是当用户数量高达数百万的时候,可以很方便的管理用户并且还要求服务器的高性能.下面介绍到将使用AUO(Active User Objects)技术来实现这个功能.一些基本的概念简介:首先一个基础是我们采用的解决方案是我们使用了微软提供的Microsoft Membership Directory,它是跟随Site Server一起安装的.一旦安装了S

小麦苗BLOG文章索引

小麦苗BLOG文章索引            自从2014年7月1号开始写blog到2015年5月5日,历时10个月的时间,大概写了90篇文章,这blog多了就乱了,今天抽空出来整理整理,方便大家也方便自己阅读,本文将一直更新,另外,最后我把所有的blog文章全列出来,可能会有用.    小麦苗的所有文章:itpub文章链接-小麦苗.zip     2015年06月03日更新一次,我写的blog数量:109 篇    2015年07月03日更新一次,我写的blog数量:126 篇    2016

三层架构的学习

为什么要使用三层架构 对于一个简单的应用程序来说,代码量不是很多的情况下,一层结构或二层结构开发完全够用,没有必要将其复杂化,如果对一个复杂的大型系统,设计为一层结构或二层结构开发,那么这样的设计存在很严重缺陷.下面会具体介绍,分层开发其实是为大型系统服务的.在开发过程中,初级程序人员出现相似的功能经常复制代码,那么同样的代码写那么多次,不但使程序变得冗长,更不利于维护,一个小小的修改或许会涉及很多页面,经常导致异常的产生使程序不能正常运行.最主要的面向对象的思想没有得到丝毫的体现,打着面向对象

Blocks块编程指南

简介 块对象是C语言级别的语法和运行特性.类似于标准C函数.除了可执行代码之外他们还可以把变量绑定到堆(heap)栈(stack)中去.因此块能维持一系列的状态(data),这些状态或数据会影响执行后的结果. 你可以在API传递.多线程中使用块函数表达式.最有用的是把块作为回调函数,因为在回调时可以携带代码和参数.在OS X10.6的Xcode开发工具上可以使用块,它使用GCC个Clang集成,你可以在OS X10.6以后或者IOS4.0以后的版本使用块,块运行时(block runtime)是