Oracle之ASM磁盘组的重新平衡(替换磁盘过程)
Tags: ASMOracle删除磁盘替换磁盘添加磁盘磁盘组的重平衡
简介
当磁盘组中的磁盘数发生改变时,ASM实例将对其自动进行一次重新平衡,将磁盘中的内容重新分布到现有的各个磁盘上。
用户也可以手工对磁盘组进行平衡。
参数
磁盘组的平衡能力从0-11,0表示停止平衡操作,11表示速度最快。
指定的级别越高,消耗的系统资源就越多。
ASM实例相关参数:
1 | show parameter asm_power_limit; |
磁盘重新平衡能力的参数(默认参数是1,最高是11,数值越高平衡能力越强,但是消耗资源越多)
修改ASM实例参数为asm_power_limit=6:
1 | alter system set asm_power_limit = 6 ; |
执行重平衡
执行重新平衡:
1 | alter diskgroup FRADG rebalance; |
或者 等待重平衡完,才返回数据给用户:
1 | alter diskgroup FRADG rebalance wait ; |
查询重新平衡的状态
1 | select * from gv$asm_operation; |
SOFAR:就是目前为止挪动的AU数量9180
EST_WORK:估计要挪动的AU总数量71663
AU:ASM在分配空间时,以AU为单位进行,AU即Allocation units,是组成ASM disk的基本单元。此处的1个AU大小是1M,可以使用asmcmd中的lsdg直接查看。
如果select * from gv$asm_operation;
有输出,则说明还在做重平衡的操作,重平衡的过程就是从其他的磁盘向新磁盘挪动数据的过程,如果数据量很大,这个时间会很长。此时,千万不能直接在后台删除磁盘。
如果没有输出,说明重新平衡已结束。
另外,若lsdg命令输出结果中,若Rebal列为Y,则代表正在执行动态平衡,需要等待动态平衡执行完成后再删除磁盘,如下:
1 2 3 4 5 6 7 8 9 10 | ASMCMD> lsdg State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED NORMAL N 512 512 4096 4194304 153600 152676 51200 50738 0 Y CRS/ MOUNTED EXTERN N 512 512 4096 1048576 6656000 3614986 0 3614986 0 N DATA/ MOUNTED EXTERN Y 512 512 4096 1048576 4145152 3894686 0 3894686 0 N FRA/ ASMCMD> lsdg State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED NORMAL N 512 512 4096 4194304 153600 152676 51200 50738 0 Y CRS/ MOUNTED EXTERN N 512 512 4096 1048576 6656000 3614986 0 3614986 0 N DATA/ MOUNTED EXTERN N 512 512 4096 1048576 2097152 1846724 0 1846724 0 N FRA/ |
替换磁盘的过程
1、添加新磁盘:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | -- 2个节点都操作 for i in m n; do echo "KERNEL==\"sd*\",ENV{DEVTYPE}==\"disk\",SUBSYSTEM==\"block\",PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d \$devnode\",RESULT==\"`/usr/lib/udev/scsi_id -g -u /dev/sd$i`\", RUN+=\"/bin/sh -c 'mknod /dev/asm-disk$i b \$major \$minor; chown grid:asmadmin /dev/asm-disk$i; chmod 0660 /dev/asm-disk$i'\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules done /sbin/udevadm trigger --type=devices --action=change /sbin/udevadm control --reload ll /dev/asm* -- 1个节点操作 alter diskgroup fra add disk '/dev/asm-diskm'; alter diskgroup fra add disk '/dev/asm-diskn'; -- 查询 col name format a10 set line 9999 col path format a25 select GROUP_NUMBER,path,name,disk_number,total_mb,free_mb,CREATE_DATE,MOUNT_STATUS,MOUNT_DATE from v$asm_disk order by GROUP_NUMBER desc,disk_number; select name,state,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup; |
2、删除旧磁盘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | alter diskgroup fra drop disk FRA_0000; alter diskgroup fra drop disk FRA_0001; -- 也可以删除磁盘的时候做动态平衡 alter diskgroup DATA drop disk 'VOL2' rebalance power 10; -- 此时查询,被删除的磁盘仍然属于FRA磁盘组,切记不能在后台删除磁盘 col name format a10 set line 9999 col path format a25 select GROUP_NUMBER,path,name,disk_number,total_mb,free_mb,CREATE_DATE,MOUNT_STATUS,MOUNT_DATE from v$asm_disk order by GROUP_NUMBER desc,disk_number; select name,state,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup; GROUP_NUMBER PATH NAME DISK_NUMBER TOTAL_MB FREE_MB CREATE_DA MOUNT_S MOUNT_DAT ------------ ------------------------- ---------- ----------- ---------- ---------- --------- ------- --------- 3 /dev/asm-diskh FRA_0000 0 1024000 908943 09-NOV-21 CACHED 09-MAR-22 3 /dev/asm-diskj FRA_0001 1 1024000 906347 09-NOV-21 CACHED 09-MAR-22 3 /dev/asm-diskl FRA_0002 2 2097152 2079396 22-MAR-22 CACHED 22-MAR-22 2 /dev/asm-diskg DATA_0000 0 1024000 555995 09-NOV-21 CACHED 09-MAR-22 2 /dev/asm-diskd DATA_0001 1 1024000 555972 09-NOV-21 CACHED 09-MAR-22 2 /dev/asm-diske DATA_0002 2 1024000 556001 09-NOV-21 CACHED 09-MAR-22 2 /dev/asm-diskf DATA_0003 3 1024000 555971 09-NOV-21 CACHED 09-MAR-22 2 /dev/asm-diski DATA_0004 4 1536000 835063 20-NOV-21 CACHED 09-MAR-22 2 /dev/asm-diskk DATA_0005 5 1024000 555984 20-NOV-21 CACHED 09-MAR-22 1 /dev/asm-diska CRS_0000 0 51200 50884 09-NOV-21 CACHED 09-MAR-22 1 /dev/asm-diskc CRS_0001 1 51200 50900 09-NOV-21 CACHED 09-MAR-22 1 /dev/asm-diskb CRS_0002 2 51200 50892 09-NOV-21 CACHED 09-MAR-22 12 rows selected. |
注意,此处,删除磁盘时只能使用磁盘的名称,不能使用路径否则会报错ORA-15054,disk "ORCL:VOL2" does not exist in diskgroup "DATA"。
3、做动态平衡
1 2 3 | alter system set asm_power_limit = 6 sid='*' ; alter diskgroup FRA rebalance wait ; select * from gv$asm_operation; |
等待完成,等待视图gv$asm_operation
的结果为空。
4、后台删除旧磁盘。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | -- 此时查询,被删除的磁盘不属于任何磁盘组 col name format a10 set line 9999 col path format a25 select GROUP_NUMBER,path,name,disk_number,total_mb,free_mb,CREATE_DATE,MOUNT_STATUS,MOUNT_DATE from v$asm_disk order by GROUP_NUMBER desc,disk_number; select name,state,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup; SQL> select GROUP_NUMBER,path,name,disk_number,total_mb,free_mb,CREATE_DATE,MOUNT_STATUS,MOUNT_DATE from v$asm_disk order by GROUP_NUMBER desc,disk_number; GROUP_NUMBER PATH NAME DISK_NUMBER TOTAL_MB FREE_MB CREATE_DA MOUNT_S MOUNT_DAT ------------ ------------------------- ---------- ----------- ---------- ---------- --------- ------- --------- 3 /dev/asm-diskl FRA_0002 2 2097152 1846724 22-MAR-22 CACHED 22-MAR-22 2 /dev/asm-diskg DATA_0000 0 1024000 555995 09-NOV-21 CACHED 09-MAR-22 2 /dev/asm-diskd DATA_0001 1 1024000 555972 09-NOV-21 CACHED 09-MAR-22 2 /dev/asm-diske DATA_0002 2 1024000 556001 09-NOV-21 CACHED 09-MAR-22 2 /dev/asm-diskf DATA_0003 3 1024000 555971 09-NOV-21 CACHED 09-MAR-22 2 /dev/asm-diski DATA_0004 4 1536000 835063 20-NOV-21 CACHED 09-MAR-22 2 /dev/asm-diskk DATA_0005 5 1024000 555984 20-NOV-21 CACHED 09-MAR-22 1 /dev/asm-diska CRS_0000 0 51200 50884 09-NOV-21 CACHED 09-MAR-22 1 /dev/asm-diskc CRS_0001 1 51200 50900 09-NOV-21 CACHED 09-MAR-22 1 /dev/asm-diskb CRS_0002 2 51200 50892 09-NOV-21 CACHED 09-MAR-22 0 /dev/asm-diskj 0 0 0 09-NOV-21 CLOSED 09-MAR-22 0 /dev/asm-diskh 1 0 0 09-NOV-21 CLOSED 09-MAR-22 12 rows selected. |
5、更新udev规则
1 2 3 4 5 6 7 | -- 2个节点都操作,修改如下文件: /etc/udev/rules.d/99-oracle-asmdevices.rules /sbin/udevadm trigger --type=devices --action=change /sbin/udevadm control --reload ll /dev/asm* |
总结
1、删除磁盘后一定不能着急在后台删除磁盘,需要等待重平衡完毕,再删除磁盘,否则会导致数据丢失
2、不要忘记修改udev规则
3、是否正在自动做动平衡,可以从lsdg和视图gv$asm_operation
查看。
4、动平衡的速率可以设置ASM实例的参数asm_power_limit