ASM 磁盘组管理(1)

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:870

[color=green][font=新宋体][size=10.0pt] ASM 磁盘、目录的管理[color=green][font=新宋体][size=10.0pt]--========================
ASM磁盘是ASM体系结构的重要组成部分,ASM磁盘由ASM实例来定位、管理,本文主要讲述ASM磁盘组、故障组等等。 有关ASM实例及ASM数据库的创建请参考:http://blog.csdn.net/robinson_0612/archive/2010/12/16/6080659.aspx]创建ASM实例及ASM数据库
一、相关概念 1.ASM 磁盘组 ASM存储管理除了ASM实例之外,最大的组成部分就是ASM磁盘组。一个ASM磁盘组由过多个ASM磁盘组成 一个磁盘组内可以存放多个数据文件,一个数据文件仅仅只能位于一个磁盘组内,不能跨磁盘组 多个数据库可以共享相同的或多个磁盘组 磁盘组的冗余类型可以分为三类:标准冗余,高度冗余,外部冗余 对于已创建的磁盘组,不能够更改其冗余级别,如要更改,需要删除该磁盘组后再重新创建
2.ASM 磁盘 ASM磁盘通过标准的OS接口来访问,由Oracle用户来读写,在聚集的所有节点可以被访问 ASM磁盘在不同的节点可以使用不同的名字 ASM磁盘可以使网络文件系统 ASM磁盘上的对象被冗余保护 每一个ASM磁盘的第块用于定义磁盘的头部信息,ASM磁盘名字编号,创建的时间戳等 ASM文件会均匀分布在一个ASM组内的各个磁盘中
3.ASM 故障组 一个磁盘组可以由两个或多个故障组组成 一个故障组由一个或多个ASM磁盘组成 故障组提供了共享相同资源的冗余,我们可以这样来理解标准冗余 假定有磁盘组DG1,且创建了两个故障组fgroup1,fgroup2,每个故障组由2个ASM磁盘组成,则对标准冗余而言,两个故障组互为镜像 failgroup1 --> asmdiskA , asmdiskB failgroup2 --> asmdiskC , asmdiskD 假定文件datafileA大小为MB,则个extent均匀分布到asmdiskA,asmdiskB,同样asmdiskC,asmdiskD也包含该文件的至个extent 即只要有一个extent在故障组fgroup1中存在,必定有一个镜像的extent存在于fgroup2中,反之亦然,两个extent互为镜像。 当一个故障组中的某个磁盘损坏,假定为asmdiskA ,则asmdiskA中原来保存的extent将会从failgroup2中复制到asmdiskB中。 总之,故障组failgroup1和failgroup2必定有相同的extent副本 标准冗余至少需要两个故障组,高度冗余则至少需要3个故障组。事实上对于未明确指定故障组的情况下,一个标准冗余至少需要两个 asm磁盘,而高度冗余至少需要3个asm磁盘
4.分配单元 ASM磁盘的最小粒度是分配单元,大小默认是1M,也可设置为K进行细粒度访问 支持粗粒度和细粒度分配单元进行读写来实现装载平衡和减少延迟 ASM文件由一些分配单元的集合组成
5.ASM 文件 对Oracle自身而言,实际上与标准的文件并没有太多区别 ASM文件一般位于磁盘组内创建的子目录内,磁盘组以加号开头,相当于Linux系统的根目录 如+DG1/oradb/datafile/system.258.346542 ASM可以为控制文件,数据文件,联机日志文件,参数文件,归档日志,备份等 不支持trace文件,可执行文件,OCR,Votingdisk等,注:Oracle11g R2可支持 使用extentmaps来记录文件到磁盘的映射
6.I/O分布 可以使用条带化和镜像来保护数据 文件被平均分布在一个组内的所有磁盘中 磁盘的添加与删除,ASM会自动重新分配AU,因此也不存在碎片的问题 将I/O分批到不同的磁盘控制器提高了读写数据
7.Rebalance ASM 文件被均衡地分布在一个磁盘组的所有磁盘中 磁盘添加时,当前磁盘组加载的所有磁盘中共享的部分extent将会被移植到新的磁盘中,直到重新分布完成才正常提供I/O均衡 磁盘删除或故障时,删除磁盘或故障磁盘的extent将会被均匀的分布到剩余的磁盘中 未使用force关键字drop磁盘操作,该磁盘上所有数据rebalance完毕后才被释放.即完毕后磁盘脱机,置磁盘头部状态为former 总之,任意存储性质改变(磁盘增加,删除,故障)都将导致rebalance,且由asm自动完成,无需人工干预,在一个时间段通常会锁定一个盘区
8.ASM磁盘组的管理 通常建议创建两个磁盘组,一个用于保存数据文件,一个用于保存闪回,备份恢复使用 Flash RecoveryArea 的大小取决于闪回内容需要保留的时间长短 尽可能将数据区与闪回区使用不同的物理通道 尽可能一次性mount所有需要用到的磁盘 建议使用性能,磁盘大小相近的磁盘。假定两个故障组FG1,FG2各使用一块磁盘,则FG1内的磁盘应保持与FG2内的磁盘大小相同, 否则会以最小的磁盘空间作为可使用空间
9.ASM磁盘组的管理方式 SQLPlus OEM DBCA ASMCMD
二、ASM磁盘创建及管理
1.查看ASM配置磁盘搜索信息 SQL> show parameter instance_type NAME TYPE VALUE ----------------------------------------------- ------------------------------ instance_type string ASM SQL> show parameter asm_diskst NAME TYPE VALUE ----------------------------------------------- ------------------------------ asm_diskstring string /dev/oracleasm/disks/VOL*
2.使用oracleasm创建磁盘 [root@oradb~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdd1 Marking disk "VOL1" as anASM disk: [ OK ] [root@oradb~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd2 Marking disk "VOL2" as anASM disk: [ OK ] [root@oradb~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sde1 Marking disk "VOL3" as anASM disk: [ OK ] [root@oradb~]# /etc/init.d/oracleasm createdisk VOL4 /dev/sde2 Marking disk "VOL4" as anASM disk: [ OK ] [root@oradb~]# /etc/init.d/oracleasm listdisks VOL1 VOL2 VOL3 VOL4
3.创建磁盘组语法
CREATE DISKGROUPdiskgroup_name [{ HIGH | NORMAL | EXTERNAL } REDUNDANCY ] [FAILGROUP failgroup_name ] DISK [ NAMEdisk_name ] [ SIZE size_clause ] [ FORCE | NOFORCE ] ...;
4.创建磁盘组
SQL> create diskgroup DG1 normalredundancy disk '/dev/oracleasm/disks/VOL1' name VOL1; create diskgroup DG1 normal redundancy disk '/dev/oracleasm/disks/VOL1' name VOL1 * ERRORat line 1: ORA-15018: diskgroup cannot becreated --标准冗余至少需要两块磁盘 ORA-15072: command requires at least 2failure groups, discovered only 1 SQL> create diskgroup DG1 normal redundancy 2 disk '/dev/oracleasm/disks/VOL1' name DG1_VOL1 ,'/dev/oracleasm/disks/VOL2' name DG1_VOL2;[color=gray] SQL> create diskgroup DG2 normalredundancy --使用标准冗余创建磁盘组DG2 2 failgroupFG1 disk '/dev/oracleasm/disks/VOL3' name DG2_FG1_VOL3 3 failgroupFG2 disk '/dev/oracleasm/disks/VOL4' name DG2_FG2_VOL4;[color=gray] SQL> create diskgroup DG_ext external redundancy disk '/dev/oracleasm/disks/VOL10' name DG_ext_VOL10; --外部冗余[color=green] SQL> select group_number gno,name,state,type,total_mb,free_mb, --查看创建的磁盘组 2 required_mirror_free_mbrmfmb,usable_file_mb ufmb 3 from v$asm_diskgroup;[color=gray] GNO NAME STATE TYPE TOTAL_MB FREE_MB RMFMB UFMB ---------- --------------- ----------------- ---------- ---------- ---------- ---------- 1DG1 MOUNTED NORMAL 3066 2964 0 1482 2DG2 MOUNTED NORMAL 3066 2964 0 1482 3DG_EXT MOUNTED EXTERN 100 50 0 50 SQL> select group_number gno,name,failgroup fgno,state,total_mb,free_mb,header_status from v$asm_disk;[color=gray] GNO NAME FGNO STATE TOTAL_MB FREE_MBHEADER_STATU ---------- ------------------------------ -------- ---------- ---------- ------------ 2DG2_FG2_VOL4 FG2 NORMAL 1537 1486MEMBER 2DG2_FG1_VOL3 FG1 NORMAL 1529 1478MEMBER 1DG1_VOL2 DG1_VOL2 NORMAL 1537 1486MEMBER 1DG1_VOL1 DG1_VOL1 NORMAL 1529 1478MEMBER 3DG_EXT_VOL10 DG_EXT_VOL10 NORMAL 100 50MEMBER
5.磁盘组添加故障组和成员 --为非故障组添加成员 SQL> alter diskgroup DG1 add disk '/dev/oracleasm/disks/VOL5' name DG1_VOL5; --为DG2添加一个故障组FG3及成员 SQL> alter diskgroup DG2 2 add failgroup FG3 disk '/dev/oracleasm/disks/VOL6' name DG2_FG3_VOL6; --添加故障组及成员[color=green] --为DG2的个故障组各添加一个成员 SQL> alter diskgroup DG2 2 add failgroup FG1 disk '/dev/oracleasm/disks/VOL7' 3 add failgroup FG2 disk '/dev/oracleasm/disks/VOL8' 4 add failgroup FG3 disk '/dev/oracleasm/disks/VOL9';
6.删除磁盘组中的磁盘,故障组中的成员,磁盘组
SQL> alter diskgroup DG1 drop disk DG1_VOL5; --删除磁盘组DG1中的磁盘VOL5[color=green] SQL> alter diskgroup DG2 drop disk DG2_0003; --删除故障组中的单个成员[color=green] SQL> alter diskgroup DG2 drop disks in failgroupFG3; --删除故障组及所有成员,注意此时为drop disks 复数形式 SQL> alter diskgroup DG1 drop disk DG1_VOL4 --删除磁盘组中的磁盘,同时添加故障组FG3 add failgroup FG3 disk '/dev/oracleasm/disks/VOL9' name DG1_VOL11; SQL> drop diskgroup DG1; --删除磁盘组
7.调整磁盘组的容量 ----故障组FG3的容量将被调整到G,如果磁盘空间不足,则调整失败 SQL> alter diskgroup DG2 resize disks in failgroup FG3 size 10G;
8.手动Rebalance SQL> alter diskgroup DG2 rebalance power 3 wait;
9.磁盘组的加载与卸载及内部一致性检查
SQL> alter diskgroup all dismount; SQL> alter diskgroup DG2 mount; SQL> alter diskgroup DG2 check all;
10.查看磁盘组的partner
SQL> select name,state,type from v$asm_diskgroup where group_number=3; --查看磁盘组DG3的信息 [color=green] NAME STATE TYPE --------------- ----------- ------ DG3 MOUNTED NORMAL SQL> select grp,disk,number_kfdpartner from x$kfdpartner where grp=3;[color=gray] GRP DISK NUMBER_KFDPARTNER ---------- ---------- ----------------- 3 0 1 --磁盘组DG3使用了个磁盘,且冗余度为标准冗余 3 0 2 --磁盘组的partner 为磁盘组,2 3 1 0 --磁盘组的partner 为磁盘组,2 3 1 2 3 2 0 --磁盘组的partner 为磁盘组,1 3 2 1

本文标签:
本文标题:ASM 磁盘组管理(1)
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】