ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 教你如何成为Oracle 10g OCP - 第十六章 ASM管理

教你如何成为Oracle 10g OCP - 第十六章 ASM管理

原创 Linux操作系统 作者:tolywang 时间:2011-08-10 15:05:03 0 删除 编辑
 
---  基础知识
1. 常见普通文件系统类型了解
ext2
ext2文件系统是为解决ext文件系统的缺陷而设计的可扩展、高性能的文件系统,称为
二级扩展文件系统,是Linux系统中标准的文件系统,支持256个字节的长文件名,文件
存取性能比ext有很大的提高。
 
ext3
ext3文件系统是ext2的升级版本,兼容ext2。与ext2文件系统相比,ext3增加了文件
系统日志记录功能,称为日志式文件系统,是目前Linux默认采用的文件系统。由于具
有了日志功能,当因断电或其他异常事件而非正常关机时,重启系统后操作系统会根据
文件系统的日志,快速检测并恢复文件系统到正常的状态,提高数据的安全性。
 
MS-DOS
这是DOS、Windows和一些OS/2计算机使用的文件系统。对于MS-DOS文件系统,文件名
长度不能超过8个字符,扩展名不能超过3个字符。
备注:  OS/2 allows computers to handle several tasks at once, making them
faster and more efficient than ever.
VFAT
这是Windows 9x、Windows XP使用的扩展的DOS文件系统,增加对长文件名的支持。
 
ISO9660
这是一种针对ISO9660标准的CD-ROM文件系统,允许用户在PC、Mac和其他主要计算机
平台上读取CD-ROM文件。几乎所有带有CD-ROM的计算机都可以从ISO9660文件系统读取文件。
 
NFS
网络文件系统,这是用于存取远程计算机硬盘的文件系统。
 
SWAP
这是一种特殊的分区,用于在内存和硬盘间交换数据的文件系统。
 
NTFS
这是Windows NT文件系统,Windows 2000/XP及以后的操作系统都支持该文件系统。
 

2. 常见集群文件系统类型了解
GFS:全局文件系统
GFS是应用最广泛的集群文件系统。它是由红帽公司开发出来的,允许所有集群
节点并行访问。元数据通常会保存在共享存储设备或复制存储设备的一个分区里。
OCFS:甲骨文集群文件系统
从概念上来说,OCFS与GFS非常相似,现在OCFS2已经被应用于Linux系统之中。
VMFS:VMware的虚拟计算机文件系统
VMFS是ESX服务器用来允许多个服务器访问同一个共享存储设备的集群文件系统。
这样就可以实现虚拟机在不同服务器之间的无缝迁移,因为源服务器和目标服务器
都可以访问同一个存储设备。日志是分布式的,ESX服务器之间也不会出现单节点故障。
Lustre:Sun的集群分布式文件系统。
Lustre是专门用于包含数千个节点的大型集群的分布式文件系统。Lustre已经
支持Linux系统,但是高速计算环境之外的应用程序是有限的。
 
16.1  ASM的概念
ASM :  Automatic Storage Management 
ASM 是 Oracle 数据库 10g 中一个非常出色的新特性,它以平台无关的方式提供了文
件系统、逻辑卷管理器以及软件 RAID 等服务。ASM 可以条带化和镜像磁盘,从而实现
了在数据库被加载的情况下添加或移除磁盘以及自动平衡 I/O 以删除“热点”。
 
ASM 不是一个通用的文件系统,并只能用于 Oracle 数据文件、重做日志以及控制文件。
ASM 中的文件既可以由数据库自动创建和命名(通过使用 Oracle 管理文件特性),也
可以由 DBA 手动创建和命名。由于操作系统无法访问 ASM 中存储的文件,因此对使用
ASM 文件的数据库执行备份和恢复操作的唯一途径就是通过恢复管理器 (RMAN)。
 
ASM 作为单独的 Oracle 实例实施,只有它在运行时其他数据库才能访问它。在 Linux 上,
只有运行 OCSSD 服务(由 Oracle 通用安装程序默认安装)才能使用 ASM。ASM 需要的
内存不多:对大多数系统,只需 64 MB。
 
用于替代三方的卷管理器和文件系统,结合了裸设备的快速IO和OMF文件的方便管理这两个优点。

--------------------------------------------------------- 

1、UNIX 或者LINUX 操作系统上安装逻辑卷管理器(LVM) 通过LVM将多个磁盘(PV)做成
卷组(VG),  在卷组上划分逻辑卷(logical volume), 在逻辑卷上创建文件系统 将文件系
统挂载到某个目录下面, 我们可以把文件放在该目录下。
2、windows 将磁盘划分成不同的分区, 分区上创建文件系统, 上面的都是通过文件系统
对空间进行管理,软件通过文件系统来访问存储空间
3、裸设备:不通过文件系统,而是直接由Oracle 数据库实例来读写磁盘,这个空间是
谁也不管理的,只有oracle 自己并发访问,oracle 有并发机制,文件系统就不能做到,
对文件系统来说,管理文件相对容易,文件系统层次清晰,但不能支持并发,速度慢;
对裸设备来说,管理文件相对困难,性能好(绕过文件系统缓存,直接由数据库进行读写)
,一旦在裸设备上创建文件以后,文件名称和大小都不能改变。
ASM, 即自动存储管理,它是自Oracle10g 这个版本推出的新功能。这是Oracle
提供的一个卷管理器,它结合了文件系统和裸设备的优点,数据库在读写文件时,
类似裸设备,绕过操作系统及文件系统,直接由ORACLE管理文件,但同时,ASM
管理的文件可修改文件名及大小,允许动态扩展及收缩,ASM具有类似文件系统
的特性。

--------------------------------------------------------- 
ASM 组成: ASM实例和ASM磁盘组
ASM磁盘组由多块磁盘组成,Oracle磁盘组中只能存放Oracle相关文件,包括数据文件,
控制文件,联机日志文件等。
对ASM磁盘组的管理,包括创建,修改,删除ASM磁盘组的工作,由ASM实例完成。

--------------------------------------------------------- 
ASM带来的好处:
1. ASM是跨平台的,主流硬件平台都可以使用,管理方式一致。
2. 数据均匀分布在磁盘组里所有的磁盘上,实现了文件级别的条带化,提高了读取
和写入的数据的性能。
3. 提供了多重冗余级别 ,保证数据安全。
4. 能支持在线磁盘更换。添加或删除磁盘后,自动重新分布数据,这个过程叫rebalance.
备注:
文件级别的条带化:  当数据文件被建立在这个磁盘组上时,文件的extents将均衡的分布
在组中的多个磁盘上,这样不论是读取还是写入,IO性能都是有很大提高的,ASM会自动
检测各个磁盘的状况,进行rebalance,避免热点磁盘的产生,只需关心文件进入哪个磁
盘组,具体的他怎么分布,无须干预 
在线磁盘更换:
如果你想用一个新的磁盘替换磁盘组中某个老化的磁盘,你可以先删除旧的再添加新的,
但ORACLE推荐的做法是两个动作同时进行。
--------------------------------------------------------- 

ASM磁盘组:
磁盘组是 oracle 默认的管理单元,一个磁盘组包括若干块磁盘, 
1、ASM磁盘组可以包含多个磁盘
2、ASM磁盘中可以包含多个文件,多个文件也可以打散放在多个磁盘上,
   因此磁盘和文件是多对多的关系
3、一个ASM磁盘被分成多个AU(allocation unit),每个AU 大小是1M,一个Oracle
数据块一定放在一个 AU中,不会跨多个AU,一个AU 则由多个物理磁盘块组成,AU
是ASM进行扩张和收缩时的最小单位 (一个windows 系统默认系统块是4K)
 
--------------------------------------------------------- 
ASM实例 :
ASM实例用于管理元数据,这些元数据是数据库实例在访问读写ASM文件所需的信息。
数据库实例会直接打开ASM磁盘组,从中读取ASM文件,与ASM实例通信只是为了获得
这些ASM磁盘及连接到ASM磁盘的方法。
 
--------------------------------------------------------- 
ASM体系结构:
ASM实例后台进程: RBAL, ARB0, GMON .
RBAL: 协调磁盘组内不同磁盘之间的rebalance工作,rebalance指数据在不同磁盘
间转移。
ARB0-ARBA: 用来实际完成rebalance工作,可多个进程并发。
GMON:  监控磁盘组内有关元数据的维护操作,Diskgroup monitor。
 
使用ASM存储的数据库实例也有2个新的进程:
RBAL;  用于打开磁盘组里的磁盘,通过DBWn将数据写入打开的磁盘中去。
ASMB: 在第一次访问ASM文件时动态创建。它作为前台进程连入ASM实例,从而
使数据库实例和ASM实例之间建立了一个连接通道。通过这个通道,定期在
两个实例间传递信息,并确保两个实例都正常工作。同时ASMB进程会访问
group services, 从中获得ASM实例管理的磁盘组的信息,当数据库实例要
向某磁盘组写入数据时,通过group services, 数据库实例就能知道该磁盘
组是由哪个ASM实例所管理的以及连接到该磁盘组的信息,最后通过RBAL打开
该磁盘组,数据库实例一次只能连接到一个ASM实例上,所以只存在一个ASMB
进程.
Group Services:  用来注册ASM实例所管理的磁盘组,以及连接磁盘组的信息,
当一个ASM实例与一个磁盘组相关联时,这个过程叫做mount磁盘组,它会将
磁盘组及磁盘组的连接字符串注册到group services 中。

数据实例只能与其在同一台主机上的ASM实例通信,如果当前主机上有多个数据
库,这个数据库可以共享一个ASM实例。
--------------------------------------------------------- 
 
 

16.2  创建ASM实例
可以使用dbca创建ASM实例,ASM实例也需要参数文件spfile.
DBCA之后选择配置ASM选项,以root身份执行localconfig脚本是用来创建Group
Services .
ASM实例中的spfile:
instance_type='asm'
asm_power_limite=1 默认为1,表示ASM磁盘组在进行rebalance时的速度,取值
从1到11,1表示最小,对前台用户影响最小,但速度慢,11相反。一般在做磁盘
更换后都需要更改此参数为5或6,使rebalance更快。
large_pool_size; 必须定义,至少为1M. 

ASM实例的启动和关闭
创建完ASM实例以后,我们可以对ASM实例进行启动和关闭,启动过程分为nomount和
mount.
nomount: 读取spfile,根据参数定义启动ASM实例。
mount  : 将初始化参数asm_diskgroup 所定义的磁盘mount起来。
$export ORACLE_SID=+ASM
$sqlplus / as sysdba
SQL> startup
但是在Oracle11g之后,如果需要管理ASM,需要以sysasm 角色登入。
$export ORACLE_SID=+ASM
$sqlplus / as sysasm 
SQL> startup

也可以nomount后通过手工mount磁盘组。
SQL> alter diskgroup RECOVERYDEST mount;

关闭ASM实例和关闭数据库实例一样使用shutdown .一般如果数据库实例正在
使用ASM实例,非abort时关闭不了的。
如果以shutdown abort关闭ASM实例,那么会先关闭连接在ASM实例中的数据库
实例,然后再关闭ASM实例。
对于单实例ASM来说,如果ASM实例异常中断或shutdown abort, 或startup force ,
那么开启的时候,会读取磁盘组里的日志文件,恢复ASM实例崩溃的数据,对于
多实例的ASM集群来说,如果其中一个实例崩溃,其他ASM实例会负责恢复此ASM
实例的数据。
 
 
 
16.3  管理ASM磁盘组
ASM磁盘组将每块磁盘分割为多个大小为1M的单元,这叫分配单元(AU)。对磁盘组
里面的数据文件来说,ASM将数据文件分割为大小为1M的块(chunk),并将这些chunk
均匀的分布在所有磁盘,这叫做coarse striping(粗粒度条带);  对于数据库中的
redo log及controlfile,因为文件较小,且需要较快的访问速度,ASM将他们分割
为128KB的chunk, 这叫做fine-grained striping(细粒度条带), 一个AU(1M)会
放多个128KB的chunk,  这样一次I/O就会分割为多个更小的I/O, 并行完成。
ASM磁盘组组中的磁盘大小及转速应该一致,ASM磁盘组的个数不应该过多,2个就
够用了,一个用于存储数据,一个用于flash recovery area .
可以在逻辑上将磁盘组划分为多个故障组(Failure Group). 这里要引入磁盘组的
另外一个特性:镜像。 注意镜像是在AU级别完成的,而不是文件级别的镜像。有
三种不同的镜像级别: External Redundancy, Normal , High .
External Redundancy:   不在ASM磁盘中提供镜像功能,如果有硬件冗余,那么
可设置此项。
Normal Redundancy:   提供双重镜像功能,对于文件里的每个AU都会存在该AU的
一个副本。
High Redundancy:   提供三重镜像功能,对于文件里的每个AU都会存在该AU的
两个副本。

ASM镜像的规则:  不会将AU(称为主AU)与他的镜像副本放在同一个故障组里。、
ASM镜像针对AU级别进行,比如一个文件有6个AU, 磁盘组定义了两重镜像,假设
P1-P6代表主AU, M1-M6代表镜像AU, 那么failuer group1 中3个磁盘(假设3个)
存放可能分别是(P1,M6),(P2,M5),(P3,M4),而failuer group2 中3个磁盘
存放可能分别是(M1,P4),(M2,P5),(M3,P6),

我们不能直接删除磁盘组,当故障组中最后一块磁盘被删除以后,该故障组被删除。
ASM支持热插拔磁盘,当我们向磁盘组中加入磁盘的时候,ASM会自动将磁盘组中
每块磁盘上取出部分AU, 写入新加入的磁盘,使所有磁盘含有数据大致相同,
当我们从磁盘组中删除磁盘时,同样被删除磁盘中的AU会被平均分配到其他磁盘
,这个过程叫做再平衡(rebalance)
Rebalance :  Reblance的过程自动进行,需要我们设置asm_power_limite的值,
调整速度。

ASM中没有数据字典信息,ASM是通过物理磁盘的头部记录元数据,描述了每个磁盘
属于哪个磁盘组及故障组的信息。 ASM的每块磁盘都是自我描述的。
对于磁盘组的操作,可以通过SQL或database control来完成。
$export ORACLE_SID=+ASM
$sqlplus / as sysasm 
SQL> create diskgroup diskgroup1 normal redundancy
     failgroup  fg1 disk  '/dev/raw/raw1  name Disk1 ,
                          '/dev/raw/raw2  name Disk2
     failgroup  fg2 disk
                         '/dev/raw/raw6  name Disk6  ;
常用的还有如下命令;
SQL> alter diskgroup diskgroup1 dismount;
SQL> alter diskgroup all dismount;
SQL> alter diskgroup diskgroup1 mount;
SQL> alter diskgroup all mount;
在删除磁盘组前,必须要先将要删除的磁盘组mount起来,然后使用下面
的命令删除它:
SQL> drop diskgroup diskgroup1 including contents ;
SQL> create diskgroup diskgroup1 normal redundancy
     failgroup  fg1 disk 
                         '/dev/raw/raw3  name Disk3
     failgroup  fg2 disk
                         '/dev/raw/raw4  name Disk4  ;
将raw5加入到fg1中;
SQL> alter diskgroup diskgroup1 add failgroup fg1 disk '/dev/raw/raw5'
name Disk5 ;
将磁盘从磁盘组里删除:
SQL> alter diskgroup diskgroup1 drop  disk  Disk5 ;

一般我们建议同时做磁盘加入及删除,这样只需要进行一次rebalance即可。
SQL> alter diskgroup diskgroup1 rebalance power 8 ;
SQL> alter diskgroup diskgroup1
     drop  disk  Disk5 
     add failgroup fg1 disk '/dev/raw/raw8' name Disk8 ;
 
 
 

16.4  管理ASM文件
ASM文件多是OMF文件,建立时只需要写磁盘组名即可建立,当然也可以自己名命名。
SQL> create tablespace test datafile '+diskgroup1' size 200M ;
这样创建的文件目录为 +diskgroup1/SID/datafile/
如果我们使用别名方式创建ASM文件的话,文件就不是OMF了,在删除文件的时候,
Oracle不会从物理上删除该文件。建议创建文件时不要采用这种方式。
SQL> create tablespace test datafile '+diskgroup1/data/test01.dbf' size 200M ;

 
$export ORACLE_SID=+ASM
$sqlplus / as sysasm
查询文件使用信息  v$asm_file
在ASM中创建联机日志文件
SQL> alter database add logfile group 4 ('+diskgroup1','+diskgroup2') size 100M;
 

16.5  迁移ASM  
因为ASM不能使用普通的操作系统命令访问,所以只能通过RMAN进行迁移。
 
 
16.6  ASMCMD命令 
为了更加方便查看ASM磁盘中的文件,Oracle在10GR2中提供了一个工具ASMCMD.
$export ORACLE_SID=+ASM
$asmcmd
ASMCMD> ls
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-706569/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13778766