ASM 磁盘组管理
2013-04-23 22:51
232 查看
一、相关概念(摘自一弥沙的世界)
1.ASM 磁盘组
2.ASM 磁盘
3.ASM 故障组
4.分配单元
5.ASM 文件
6.I/O分布
7.Rebalance
8.ASM磁盘组的管理
9.ASM的可扩展性
10.ASM磁盘组的管理方式
二、Solaris ASM磁盘创建及管理
1.查看diskgroup空间大小,以及ASM状态
2.添加disk到现有的diskgroup
3.创建磁盘组
4.磁盘组添加故障组
5.故障组添加磁盘
6.删除磁盘组中的磁盘,故障组中的成员,磁盘组(删除磁盘时一定要谨慎,做好备份,否则就等泪奔吧)
6.1查看目前磁盘整体情况:
6.2 取消删除磁盘 磁盘是hung状态时,此命令有效
7.调整磁盘组的容量
8.手动Rebalance
9.磁盘组的加载与卸载及内部一致性检查
o(︶︿︶)o 唉,就先写到这里吧!
1.ASM 磁盘组
ASM存储管理除了ASM实例之外,最大的组成部分就是ASM磁盘组。一个ASM磁盘组由过多个ASM磁盘组成 一个磁盘组内可以存放多个数据文件,一个数据文件仅仅只能位于一个磁盘组内,不能跨磁盘组 多个数据库可以共享相同的或多个磁盘组 磁盘组的冗余类型可以分为三类:标准冗余,高度冗余,外部冗余 对于已创建的磁盘组,不能够更改其冗余级别,如要更改,需要删除该磁盘组后再重新创建
2.ASM 磁盘
ASM磁盘通过标准的OS接口来访问,由Oracle用户来读写,在聚集的所有节点可以被访问 ASM磁盘在不同的节点可以使用不同的名字(RAC) ASM磁盘可以使网络文件系统 ASM磁盘上的对象被冗余保护 每一个ASM磁盘的第一个块用于定义磁盘的头部信息,ASM磁盘名字编号,创建的时间戳等 ASM文件会均匀分布在一个ASM组内的各个磁盘中
3.ASM 故障组
一个磁盘组可以由两个或多个故障组组成 一个故障组由一个或多个ASM磁盘组成 故障组提供了共享相同资源的冗余,我们可以这样来理解标准冗余 假定有磁盘组DG1,且创建了两个故障组fgroup1,fgroup2,每个故障组由个ASM磁盘组成,则对标准冗余而言,两个故障组互为镜像 failgroup1 --> asmdiskA , asmdiskB failgroup2 --> asmdiskC , asmdiskD 假定文件datafileA大小为4MB,则个4个extent均匀分布到asmdiskA,asmdiskB,同样asmdiskC,asmdiskD也包含该文件的4个extent 即只要有一个extent在故障组fgroup1中存在,必定有一个extent的镜像存在于fgroup2中,反之亦然,两个extent互为镜像。 当一个故障组中的某个磁盘损坏,假定为asmdiskA ,则asmdiskA中原来保存的extent将会从failgroup2中复制到asmdiskB中。 总之,故障组failgroup1和failgroup2必定有相同的extent副本 标准冗余至少需要2个故障组,高度冗余则至少需要3个故障组。事实上对于未明确指定故障组的情况下,一个标准冗余至少需要2个 asm磁盘,而高度冗余至少需要3个asm磁盘
4.分配单元
ASM磁盘的最小粒度是分配单元,大小默认是1M,也可设置为128K进行细粒度访问 支持粗粒度和细粒度分配单元进行读写来实现装载平衡和减少延迟 ASM文件由一些分配单元的集合组成
5.ASM 文件
对Oracle自身而言,实际上与标准的文件并没有太多区别 ASM文件一般位于磁盘组内创建的子目录内,磁盘组以加号开头,相当于Linux系统的根目录 如+DG1/oradb/datafile/system.258.346542 ASM可以为控制文件,数据文件,联机日志文件,参数文件,归档日志,备份等 不支持trace文件,可执行文件,OCR,Votingdisk等,注:Oracle 11g R2可支持 使用extent maps来记录文件到磁盘的映射
6.I/O分布
可以使用条带化和镜像来保护数据 文件被平均分布在一个组内的所有磁盘中 磁盘的添加与删除,ASM会自动重新分配AU,因此也不存在碎片的问题 将I/O分批到不同的磁盘控制器提高了读写数据
7.Rebalance
ASM 文件被均衡地分布在一个磁盘组的所有磁盘中 磁盘添加时,当前磁盘组加载的所有磁盘中共享的部分extent将会被移植到新的磁盘中,直到重新分布完成才正常提供I/O均衡 磁盘删除或故障时,删除磁盘或故障磁盘的extent将会被均匀的分布到剩余的磁盘中 未使用force关键字drop磁盘操作,该磁盘上所有数据rebalance完毕后才被释放.即完毕后磁盘脱机,置磁盘头部状态为former 总之,任意存储性质改变(磁盘增加,删除,故障)都将导致rebalance,且由asm自动完成,无需人工干预,在一个时间段通常会锁定一个盘区
8.ASM磁盘组的管理
通常建议创建两个磁盘组,一个用于保存数据文件,一个用于保存闪回,备份恢复使用 Flash Recovery Area 的大小取决于闪回内容需要保留的时间长短 尽可能将数据区与闪回区使用不同的物理通道 尽可能一次性mount所有需要用到的磁盘 建议使用性能,磁盘大小相近的磁盘。假定两个故障组FG1,FG2各使用一块磁盘,则FG1内的磁盘应保持与FG2内的磁盘大小相同,否则会以最小的磁盘空间作为可使用空间
9.ASM的可扩展性
63 disk groups in a storage system 10,000 ASM disks in a storage system 4 petabyte maximum storage for each ASM disk 40 exabyte maximum storage for each storage system 1 million files for each disk group Maximum files sizes as shown in the following table:
Disk Group Type | Maximum File Size |
External redundancy | 35 TB |
Normal redundancy | 5.8 TB |
High redundancy | 3.9 TB |
SQLPlus OEM DBCA ASMCMD
二、Solaris ASM磁盘创建及管理
1.查看diskgroup空间大小,以及ASM状态
SQL> select group_number,total_mb,required_mirror_free_mb,free_mb,usable_file_mb,state from v$asm_diskgroup; GROUP_NUMBER TOTAL_MB FREE_MB USABLE_FILE_MB STATE ------------ ---------- ---------- -------------- ----------- 1 3996 1424 712 MOUNTED 2 3996 3876 1938 MOUNTED --TOTAL_MB: 磁盘组的大小 --FREE_MB : 在不考虑冗余的情况下,剩余的空间大小 --USABLE_FILE_MB:1).在外部冗余情况下 USABLE_FILE_MB=FREE_MB 2).普通冗余 USABLE_FILE_MB=FREE_MB/2 3).高冗余 USABLE_FILE_MB=FREE_MB/3 SQL>
2.添加disk到现有的diskgroup
-- a.添加裸设备参考相关文档,千万不要忘记改变磁盘属性 -- b.查看添加的磁盘 --注:我在添加磁盘时测试一下使用0分片做存储,但asm不识别,用v$asm_disk查不到这两个分片c2t4d0s0,c2t5d0s0。对0分片是不是有什么特别的说法? 将1.95G的空间划给1分片,asm可以识别: SQL> select name, path, mode_status, state from v$asm_disk; NAME PATH MODE_ST STATE --------------- ------------------------------ ------- --------------- /dev/rdsk/c2t4d0s1 ONLINE NORMAL /dev/rdsk/c2t5d0s1 ONLINE NORMAL DATA01_0000 /dev/rdsk/c2t0d0s1 ONLINE NORMAL DATA01_0001 /dev/rdsk/c2t1d0s1 ONLINE NORMAL DATA02_0000 /dev/rdsk/c2t2d0s1 ONLINE NORMAL DATA02_0001 /dev/rdsk/c2t3d0s1 ONLINE NORMAL SQL> --注:name为空的是新增加的4块盘 --c.添加/dev/rdsk/c2t4d0s1,/dev/rdsk/c2t5d0s1到组DATA01,命名为:DATA01_0002,DATA01_0003 --注:1.此过程亦默认添加了故障组。2.此步骤可用dbca完成 SQL> alter diskgroup data01 add disk '/dev/rdsk/c2t4d0s1' 2 name DATA01_0002; Diskgroup altered. SQL> alter diskgroup data01 add disk '/dev/rdsk/c2t5d0s1' 2 name DATA01_0003; Diskgroup altered. SQL> --d.查看添加磁盘后的情况 SQL> select group_number,disk_number,name,failgroup,state,path 2 from v$asm_disk order by 1,2; GROUP_NUMBER DISK_NUMBER NAME FAILGROUP STATE PATH ------------ ----------- ------------ ------------ -------- -------------------- 1 0 DATA01_0000 DATA01_0000 NORMAL /dev/rdsk/c2t0d0s1 1 1 DATA01_0001 DATA01_0001 NORMAL /dev/rdsk/c2t1d0s1 1 2 DATA01_0002 DATA01_0002 NORMAL /dev/rdsk/c2t4d0s1 1 3 DATA01_0003 DATA01_0003 NORMAL /dev/rdsk/c2t5d0s1 2 0 DATA02_0000 DATA02_0000 NORMAL /dev/rdsk/c2t2d0s1 2 1 DATA02_0001 DATA02_0001 NORMAL /dev/rdsk/c2t3d0s1 6 rows selected. SQL> --注:添加新磁盘后,ASM将自动重新负载平衡操作,可通过 v$asm_operation.SOFAR|EST_WORK|EST_RATE
3.创建磁盘组
SQL> create diskgroup DATA03 normal redundancy disk '/dev/rdsk/c2t6d0s1' name DATA03_0000 ; create diskgroup DATA03 normal redundancy disk '/dev/rdsk/c2t6d0s1' name DATA03_0000 * ERROR at line 1: --标准冗余至少需要两块磁盘 ORA-15018: diskgroup cannot be created ORA-15072: command requires at least 2 failure groups, discovered only 1 --此时没有明确指定故障组,故障组默认自动创建 SQL> create diskgroup DATA03 normal redundancy disk '/dev/rdsk/c2t6d0s1' name DATA03_0000,'/dev/rdsk/c2t8d0s1' name DATA03_0001; Diskgroup created. SQL> --明确指定故障组名称 SQL> create diskgroup DATA04 normal redundancy 2 failgroup fg01 disk '/dev/rdsk/c2t9d0s1' name DATA04_0000 3 failgroup fg02 disk '/dev/rdsk/c2t10d0s1' name DATA04_0001; Diskgroup created. SQL>
4.磁盘组添加故障组
SQL> alter diskgroup DATA04 2 add failgroup fg03 disk '/dev/rdsk/c2t11d0s1' name DATA04_0002; Diskgroup altered. SQL>
5.故障组添加磁盘
SQL> alter diskgroup DATA02 2 add failgroup DATA02_0000 disk '/dev/rdsk/c2t12d0s1' 3 add failgroup DATA02_0001 disk '/dev/rdsk/c2t13d0s1'; Diskgroup altered. SQL>
6.删除磁盘组中的磁盘,故障组中的成员,磁盘组(删除磁盘时一定要谨慎,做好备份,否则就等泪奔吧)
6.1查看目前磁盘整体情况:
SQL> select group_number,disk_number,name,failgroup,path 2 from v$asm_disk order by 1,2; GROUP_NUMBER DISK_NUMBER NAME FAILGROUP PATH ------------ ----------- ------------ ------------ -------------------- 1 0 DATA01_0000 DATA01_0000 /dev/rdsk/c2t0d0s1 1 1 DATA01_0001 DATA01_0001 /dev/rdsk/c2t1d0s1 1 2 DATA01_0002 DATA01_0002 /dev/rdsk/c2t4d0s1 1 3 DATA01_0003 DATA01_0003 /dev/rdsk/c2t5d0s1 2 0 DATA02_0000 DATA02_0000 /dev/rdsk/c2t2d0s1 2 1 DATA02_0001 DATA02_0001 /dev/rdsk/c2t3d0s1 2 2 DATA02_0002 DATA02_0000 /dev/rdsk/c2t12d0s1 2 3 DATA02_0003 DATA02_0001 /dev/rdsk/c2t13d0s1 3 0 DATA03_0000 DATA03_0000 /dev/rdsk/c2t6d0s1 3 1 DATA03_0001 DATA03_0001 /dev/rdsk/c2t8d0s1 4 0 DATA04_0000 FG01 /dev/rdsk/c2t9d0s1 GROUP_NUMBER DISK_NUMBER NAME FAILGROUP PATH ------------ ----------- ------------ ------------ -------------------- 4 1 DATA04_0001 FG02 /dev/rdsk/c2t10d0s1 4 2 DATA04_0002 FG03 /dev/rdsk/c2t11d0s1 13 rows selected. SQL>
--删除磁盘组DATA04中的磁盘DATA04_0002 SQL> alter diskgroup data04 drop disk DATA04_0002; -- 删除故障中DATA02_0001中单个成员DATA02_0003 SQL> alter diskgroup data02 drop disk DATA02_0003; --删除故障组FG03及所有成员(故障组FG03只有一个成员DATA04_0002) --删除故障组及所有成员,注意此时为drop disks 复数形式 SQL> alter diskgroup data04 drop disks in failgroup FG03; --删除磁盘组 SQL> drop diskgroup data04; Diskgroup dropped. SQL>
6.2 取消删除磁盘 磁盘是hung状态时,此命令有效
SQL> alter diskgroup data03 drop disk DATA03_0000; --违反冗余条件的删除,磁盘为hung状态 Diskgroup altered SQL> select group_number,name,failgroup,path,state 2 from v$asm_disk 3 where GROUP_NUMBER=3; GROUP_NUMBER NAME FAILGROUP PATH STATE ------------ ------------ ------------ -------------------- -------- 3 DATA03_0000 DATA03_0000 /dev/rdsk/c2t6d0s1 HUNG 3 DATA03_0001 DATA03_0001 /dev/rdsk/c2t8d0s1 NORMAL --取消删除 SQL> alter diskgroup data03 undrop disks; SQL> select group_number,name,failgroup,path,state 2 from v$asm_disk 3 where GROUP_NUMBER=3; GROUP_NUMBER NAME FAILGROUP PATH STATE ------------ ------------ ------------ -------------------- -------- 3 DATA03_0000 DATA03_0000 /dev/rdsk/c2t6d0s1 NORMAL 3 DATA03_0001 DATA03_0001 /dev/rdsk/c2t8d0s1 NORMAL --DATA03_0000变为normal状态
7.调整磁盘组的容量
----故障组DATA03_0000的容量将被调整到1G,为避免浪费磁盘组中的各个故障组大小最好相等 SQL> alter diskgroup data03 resize disks in failgroup DATA03_0000 size 1G; SQL> alter diskgroup data03 resize disks in failgroup DATA03_0001 size 1G;
8.手动Rebalance
SQL> alter diskgroup data03 rebalance power 11; 平衡速度控制参数: asm_power_limit = 1~11
9.磁盘组的加载与卸载及内部一致性检查
SQL> alter diskgroup all dismount; alter diskgroup all dismount * ERROR at line 1: ORA-15032: not all alterations performed ORA-15027: active use of diskgroup "DATA02" precludes its dismount ORA-15027: active use of diskgroup "DATA01" precludes its dismount SQL> SQL> alter diskgroup data03 dismount; alter diskgroup data03 dismount * ERROR at line 1: ORA-15032: not all alterations performed ORA-15001: diskgroup "DATA03" does not exist or is not mounted SQL> SQL> alter diskgroup data03 mount; SQL> alter diskgroup data03 check all;
o(︶︿︶)o 唉,就先写到这里吧!
相关文章推荐
- ASM 磁盘、目录的管理
- ASM 磁盘 目录 管理
- 测试环境 11g上 ASM磁盘组的管理、迁移、总结 (dgbroker)
- ASM 磁盘、目录的管理
- 理解ASM(三)ASM磁盘组管理
- Linux udev 动态管理Oracle ASM磁盘-实验
- ASM笔记3--磁盘组管理的操作
- Oracle ASM 磁盘组管理
- 理解ASM(三)ASM磁盘组管理
- OCM_第十六天课程:Section7 —》GI 及 ASM 安装配置 _安装 GRID 软件/创建和管理 ASM 磁盘组/创建和管理 ASM 实例
- ASM 磁盘、目录的管理
- 管理asm磁盘组
- asm磁盘组一点管理
- 【日常管理】Asm Diskgroup增加磁盘add disk
- ASM 磁盘、目录的管理
- 管理ASM磁盘中的文件
- ASM 磁盘、目录的管理
- ASM 磁盘、目录的管理
- Oracle 11gR2 ASM磁盘组管理
- ASM 磁盘、目录的管理