asm磁盘管理

1. 扩容

1.1 挂盘

服务器挂载共享磁盘。找出新挂载的磁盘,或者由存储工程师提供新挂载磁盘的uuid。

[root@rac01 ~]# lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sdf            8:80   0    5G  0 disk
└─ol-root    252:0    0 36.5G  0 lvm   /
sdd            8:48   0   10G  0 disk
└─asm_ocr_3  252:2    0   10G  0 mpath
sdb            8:16   0   10G  0 disk
└─asm_ocr_1  252:3    0   10G  0 mpath
sr0           11:0    1  4.3G  0 rom
sdg            8:96   0   10G  0 disk
└─mpathc     252:6    0   10G  0 mpath
sde            8:64   0   10G  0 disk
└─asm_data_1 252:5    0   10G  0 mpath
sdc            8:32   0   10G  0 disk
└─asm_ocr_2  252:4    0   10G  0 mpath
sda            8:0    0   40G  0 disk
├─sda2         8:2    0 39.5G  0 part
│ ├─ol-swap  252:1    0    8G  0 lvm   [SWAP]
│ └─ol-root  252:0    0 36.5G  0 lvm   /
└─sda1         8:1    0  500M  0 part  /boot

由lsblk命令分析,本次新挂载的磁盘为sdg。

1.2 配置多路径(rac01&rac02)

  • 查看共享磁盘uuid

以本次新增sdg盘为例:

[root@rac01 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdg
36000c299b5e68b5b56df4dab0ff2904a
  • 配置multipath
vim /etc/multipath.conf
#在multipaths中增加以下内容multipath {wwid "36000c299b5e68b5b56df4dab0ff2904a"alias asm_data_2}
  • multipath reload
[root@rac01 ~]# multipath -r
reload: asm_ocr_1 (36000c29a08f7e7a3698484f9f061e9e5) undef VMware, ,VMware Virtual S
size=10G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:0:0 sdb 8:16 active ready running
reload: asm_ocr_2 (36000c29bbfb107720df22a8ac6dab972) undef VMware, ,VMware Virtual S
size=10G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:1:0 sdc 8:32 active ready running
reload: asm_ocr_3 (36000c29909d9000e7cead142ba3c4bd4) undef VMware, ,VMware Virtual S
size=10G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:2:0 sdd 8:48 active ready running
reload: asm_data_1 (36000c290de923077f73fb939c302228c) undef VMware, ,VMware Virtual S
size=10G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:3:0 sde 8:64 active ready running
Dec 21 11:20:45 | 36000c299b5e68b5b56df4dab0ff2904a: rename mpathc to asm_data_2
: asm_data_2 (36000c299b5e68b5b56df4dab0ff2904a) undef VMware, ,VMware Virtual S
size=10G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:5:0 sdg 8:96 active ready running

1.3 新增udev规则(rac01&rac02)

  • 配置UDEV绑盘:
vim /etc/udev/rules.d/99-oracle-asmdevices.rules
#在末尾增加
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-36000c299b5e68b5b56df4dab0ff2904a",SYMLINK+="asm_asm_data_2",OWNER="grid",GROUP="asmadmin",MODE="0660"
  • 重载udev:
udevadm control --reload-rules
udevadm trigger --type=devices

至此,多路径共享存储配置完成。

  • 查看共享磁盘:
[root@rac02 mapper]# ll /dev/asm_asm_*
lrwxrwxrwx 1 root root 4 12月 21 11:38 /dev/asm_asm_data_1 -> dm-4
lrwxrwxrwx 1 root root 4 12月 21 11:37 /dev/asm_asm_data_2 -> dm-7
lrwxrwxrwx 1 root root 4 12月 21 11:37 /dev/asm_asm_ocr_1 -> dm-3
lrwxrwxrwx 1 root root 4 12月 21 11:37 /dev/asm_asm_ocr_2 -> dm-2
lrwxrwxrwx 1 root root 4 12月 21 11:38 /dev/asm_asm_ocr_3 -> dm-6

1.4 asm扩容(rac01)

在grid用户下,登录sysdba,查询刚才新增的磁盘状态

su - grid
sqlplus / as sysasm

查看刚才创建的硬盘

SQL> set lines 200 pages 50000
SQL> col name for a25
SQL> col path for a55
SQL> select group_number,disk_number,name,path,total_mb/1024 total_G,mode_status,repair_timer from v$asm_disk order by group_number,disk_number;GROUP_NUMBER DISK_NUMBER NAME                      PATH                                                       TOTAL_G MODE_STATUS           REPAIR_TIMER
------------ ----------- ------------------------- ------------------------------------------------------- ---------- --------------------- ------------0           0                           /dev/asm_asm_data_2                                              0 ONLINE                           01           0 DATA_0000                 /dev/asm_asm_data_1                                             10 ONLINE                           02           0 OCR_0000                  /dev/asm_asm_ocr_1                                              10 ONLINE                           02           1 OCR_0001                  /dev/asm_asm_ocr_2                                              10 ONLINE                           02           2 OCR_0002                  /dev/asm_asm_ocr_3                                              10 ONLINE                           0

查看原磁盘组的情况

SQL> select name,state,type,total_mb,free_mb from v$asm_diskgroup;NAME                      STATE                             TYPE                 TOTAL_MB    FREE_MB
------------------------- --------------------------------- ------------------ ---------- ----------
DATA                      MOUNTED                           EXTERN                  10240       2696
OCR                       MOUNTED                           NORMAL                  30720      29708

将查询到的硬盘添加到DATA磁盘组

SQL> alter diskgroup DATA add disk '/dev/asm_asm_data_2' rebalance power 6;Diskgroup altered.

注:rebalance power的级别从1到11中选择一个数值;数值越大,rebalance速度越快,对现有运行系统影响也越大。需要根据当时业务权衡选择适合的级别;

查看磁盘平衡进度

SQL> select group_number,operation,state,est_work,est_rate,est_minutes,error_code from v$asm_operation;
##直到查询结果是no rows selected,表示rebalance已经完成。

重新查询磁盘状态

SQL> set lines 200 pages 50000
SQL> col name for a25
SQL> col path for a55
SQL> select group_number,disk_number,name,path,total_mb/1024 total_G,mode_status,repair_timer from v$asm_disk order by group_number,disk_number;GROUP_NUMBER DISK_NUMBER NAME                      PATH                                                       TOTAL_G MODE_STATUS           REPAIR_TIMER
------------ ----------- ------------------------- ------------------------------------------------------- ---------- --------------------- ------------1           0 DATA_0000                 /dev/asm_asm_data_1                                             10 ONLINE                           01           1 DATA_0001                 /dev/asm_asm_data_2                                             10 ONLINE                           02           0 OCR_0000                  /dev/asm_asm_ocr_1                                              10 ONLINE                           02           1 OCR_0001                  /dev/asm_asm_ocr_2                                              10 ONLINE                           02           2 OCR_0002                  /dev/asm_asm_ocr_3                                              10 ONLINE                           0

重新查询磁盘组状态

SQL> select group_number,name,state,type,total_mb,free_mb from v$asm_diskgroup;GROUP_NUMBER NAME                      STATE                             TYPE                 TOTAL_MB    FREE_MB
------------ ------------------------- --------------------------------- ------------------ ---------- ----------1 DATA                      MOUNTED                           EXTERN                  20480      128402 OCR                       MOUNTED                           NORMAL                  30720      29708

至此,ASM磁盘组扩容完成。

2. 缩容

2.1 asm信息确认

查询磁盘状态

SQL> set lines 200 pages 50000
SQL> col name for a25
SQL> col path for a55
SQL> select group_number,disk_number,name,path,total_mb/1024 total_G,mode_status,repair_timer from v$asm_disk order by group_number,disk_number;GROUP_NUMBER DISK_NUMBER NAME                      PATH                                                       TOTAL_G MODE_STATUS           REPAIR_TIMER
------------ ----------- ------------------------- ------------------------------------------------------- ---------- --------------------- ------------1           0 DATA_0000                 /dev/asm_asm_data_1                                             10 ONLINE                           01           1 DATA_0001                 /dev/asm_asm_data_2                                             10 ONLINE                           02           0 OCR_0000                  /dev/asm_asm_ocr_1                                              10 ONLINE                           02           1 OCR_0001                  /dev/asm_asm_ocr_2                                              10 ONLINE                           02           2 OCR_0002                  /dev/asm_asm_ocr_3                                              10 ONLINE                           0

查询磁盘组状态

SQL> select group_number,name,state,type,total_mb,free_mb from v$asm_diskgroup;GROUP_NUMBER NAME                      STATE                             TYPE                 TOTAL_MB    FREE_MB
------------ ------------------------- --------------------------------- ------------------ ---------- ----------1 DATA                      MOUNTED                           EXTERN                  20480      128402 OCR                       MOUNTED                           NORMAL                  30720      29708

确定要删除的磁盘,本次以移除/dev/sdg为例:

[root@rac01 ~]# lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sdf            8:80   0    5G  0 disk
└─ol-root    252:0    0 36.5G  0 lvm   /
sdd            8:48   0   10G  0 disk
└─asm_ocr_3  252:5    0   10G  0 mpath
sdb            8:16   0   10G  0 disk
└─asm_ocr_1  252:4    0   10G  0 mpath
sr0           11:0    1  4.3G  0 rom
sdg            8:96   0   10G  0 disk
└─asm_data_2 252:6    0   10G  0 mpath
sde            8:64   0   10G  0 disk
└─asm_data_1 252:2    0   10G  0 mpath
sdc            8:32   0   10G  0 disk
└─asm_ocr_2  252:3    0   10G  0 mpath
sda            8:0    0   40G  0 disk
├─sda2         8:2    0 39.5G  0 part
│ ├─ol-swap  252:1    0    8G  0 lvm   [SWAP]
│ └─ol-root  252:0    0 36.5G  0 lvm   /
└─sda1         8:1    0  500M  0 part  /boot
[root@rac01 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdg
36000c299b5e68b5b56df4dab0ff2904a

找到sdg的多路径和udev配置信息,结合asm磁盘中的path信息,确定本次要移除的/dev/sdg磁盘的多路径配置信息为wwid为“36000c299b5e68b5b56df4dab0ff2904a”相关的配置,udev配置为“36000c299b5e68b5b56df4dab0ff2904a”和“asm_asm_data_2”相关的配置,asm磁盘path为“/dev/asm_asm_data_2”。

2.2 asm磁盘移除(rac01)

在grid用户下,登录sysdba

su - grid
sqlplus / as sysasm

移除磁盘

SQL> alter diskgroup DATA drop disk 'DATA_0001';

查看磁盘重新平衡进度

SQL> select group_number,operation,state,est_work,est_rate,est_minutes,error_code from v$asm_operation;GROUP_NUMBER OPERATION       STATE          EST_WORK   EST_RATE EST_MINUTES
------------ --------------- ------------ ---------- ---------- -----------
ERROR_CODE
------------------------------------------------------------------------------------------------------------------------------------1 REBAL           REAP                  0          0           01 REBAL           DONE                949          0           01 REBAL           DONE                  0          0           0SQL> select group_number,operation,state,est_work,est_rate,est_minutes,error_code from v$asm_operation;no rows selected

2.3 移除udev配置(rac01&rac02)

  • 配置UDEV绑盘:
vim /etc/udev/rules.d/99-oracle-asmdevices.rules
#删除2.1中确认的配置内容
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-36000c299b5e68b5b56df4dab0ff2904a",SYMLINK+="asm_asm_data_2",OWNER="grid",GROUP="asmadmin",MODE="0660"
  • 重载udev:
udevadm control --reload-rules
udevadm trigger --type=devices

至此,多路径共享存储配置完成。

  • 查看共享磁盘:
[root@rac01 ~]# ll /dev/asm_asm_*
lrwxrwxrwx 1 root root 4 12月 21 14:02 /dev/asm_asm_data_1 -> dm-2
lrwxrwxrwx 1 root root 4 12月 21 14:02 /dev/asm_asm_ocr_1 -> dm-4
lrwxrwxrwx 1 root root 4 12月 21 14:02 /dev/asm_asm_ocr_2 -> dm-3
lrwxrwxrwx 1 root root 4 12月 21 14:02 /dev/asm_asm_ocr_3 -> dm-5

2.4 多路径配置(rac01&rac02)

  • 配置multipath
vim /etc/multipath.conf
#在multipaths中删除2.1中确认的以下内容multipath {wwid "36000c299b5e68b5b56df4dab0ff2904a"alias asm_data_2}
  • multipath reload
[root@rac02 ~]# multipath -r
reload: asm_ocr_1 (36000c29a08f7e7a3698484f9f061e9e5) undef VMware, ,VMware Virtual S
size=10G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:0:0 sdb 8:16 active ready running
reload: asm_ocr_2 (36000c29bbfb107720df22a8ac6dab972) undef VMware, ,VMware Virtual S
size=10G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:1:0 sdc 8:32 active ready running
reload: asm_ocr_3 (36000c29909d9000e7cead142ba3c4bd4) undef VMware, ,VMware Virtual S
size=10G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:2:0 sdd 8:48 active ready running
reload: asm_data_1 (36000c290de923077f73fb939c302228c) undef VMware, ,VMware Virtual S
size=10G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:3:0 sde 8:64 active ready running
reload: mpathb (36000c2962c475885d64356eadf8b9757) undef VMware, ,VMware Virtual S
size=5.0G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:4:0 sdf 8:80 active ready running
Dec 21 14:04:44 | 36000c299b5e68b5b56df4dab0ff2904a: rename asm_data_2 to mpatha
: mpatha (36000c299b5e68b5b56df4dab0ff2904a) undef VMware, ,VMware Virtual S
size=10G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef`- 3:0:5:0 sdg 8:96 active ready running

至此磁盘移除配置完成。/dev/sdg磁盘可以从操作系统中移除,或者改为其他用途。

3 磁盘替换

在实际生产中,还会遇到另外一种情况,就是需要对正在使用的磁盘进行替换。那么我们可以按照前面的内容进行增加和删除磁盘,但是在实际应用中我发现先增加磁盘,再删除磁盘的方案虽然可行,但是在数据量很大的情况下实际操作很慢。故查阅文档,发现了文档中提到了一个将删除和添加磁盘放到一个sql语句中执行的方案,并且经过验证,该方法可以大幅提升磁盘数据迁移的效率。以下为sql案例:

SQL> alter diskgroup DATA drop disk 'DATA_0001' add disk '/dev/asm_asm_data_2' rebalance power 6;

4 扩展命令

以下命令用于对ASM实例进行管理:

srvctl status asm
srvctl stop asm
srvctl start asm

以下命令用于对ASM磁盘组进行管理:

srvctl status diskgroup -g data
srvctl stop diskgroup -g data
srvctl start diskgroup -g data

创建磁盘组(一般建议用asmca图形化工具进行创建):

$ sqlplus / as sysasm
SQL> CREATE DISKGROUP dg1 external REDUNDANCYDISK'/dev/raw/raw1','/dev/raw/raw2'

磁盘组通过mirror方式保证数据的安全

普通冗余:每个磁盘组有两个FAILGROUP

高冗余:每个磁盘组有三个FAILGROUP

外部冗余:通过存储设备的冗余来保证数据安全

SQL> CREATE DISKGROUP dg1 NORMAL REDUNDANCYFAILGROUP fg1 DISK‘/dev/raw/raw1, '/dev/raw/raw3'FAILGROUP fg2 DISK‘/dev/raw/raw2’, '/dev/raw/raw4';

在创建磁盘组的节点上,磁盘组被自动挂接。在其他节点需要手动挂载:

SQL> ALTER DISKGROUP dg1 MOUNT;

磁盘组卸载:

SQL> ALTER DISKGROUP dg1 DISMOUNT;

向磁盘组中添加磁盘:

SQL>ALTER DISKGROUP dg1
ADD DISK'/dev/raw/raw3' NAME disk3,'/dev/raw/raw4' NAME disk4;

从磁盘组中剔除磁盘:

SQL> ALTER DISKGROUP dg1 DROP DISK disk3;
SQL> alter diskgroup dg1 drop disk3 in failgroup fg2;
SQL> ALTER DISKGROUP DG1 UNDROP DISKS;

当磁盘组中的磁盘发生变化时,磁盘组将自动进行重新平衡。平衡级别为0-11,当手工进行重新平衡时,可以指定平衡级别。可用的最高级别通过初始化参数ASM_POWER_LIMIT指定。

SQL> ALTER DISKGROUP dg1 REBALANCE POWER 3;
SQL> ALTER DISKGROUP dg1 REBALANCE POWER 3 WAIT;

在其中一个选定的节点上保持磁盘组处于mounted状态,**在其他节点上将磁盘组卸载**,在选定的节点上执行:

SQL> DROP DISKGROUP dg1;
SQL> DROP DISKGROUP dg1 INCLUDING CONTENTS;#清理磁盘头信息方法。
dd if=/dev/null of=/dev/sdb1 bs=1m count=1

磁盘组的查询:

select name,state,type,total_mb,free_mb from v$asm_diskgroup;
select group_num,path,total_mb,free_mb from v$asm_disk;
select group_number,instance_name,db_name,status from v$asm_client;

磁盘组中目录的管理:

#目录的创建:
SQL>ALTER DISKGROUP dg1 ADD DIRECTORY '+dg1/dir1';
#目录的重新命名:
SQL>ALTER DISKGROUP dg1 RENAME DIRECTORY ‘+dg1/dir1’  TO ‘+dg1/dir2‘
#目录的删除:
SQL>ALTER DISKGROUP dg1 DROP DIRECTORY '+dg1/dir1' FORCE;
#删除磁盘组中不再需要的文件,例如:
SQL> ALTER DISKGROUP dg1 DROP FILE '+dg1/myfiles/my_undo_ts';

oracle database的asm磁盘管理相关推荐

  1. oracle asm spfile丢失,Oracle 11g RAC ASM磁盘全部丢失后的恢复

    Oracle 11g RAC ASM磁盘全部丢失后的恢复,Oracle 11.2.0.3 RAC ON Oracle Linux 6 x86_64,只有一个ASM外部冗余磁盘组mdash;m 一.环境 ...

  2. 案例:Oracle报错ASM磁盘组不存在或没有mount

    案例:Oracle报错ASM磁盘组不存在或没有mount 环境:RHEL 6.5 + Oracle Standby RAC 11.2.0.4 我做Standby RAC实验时,在恢复控制文件时,报错无 ...

  3. asm冗余 oracle_oracle asm 磁盘管理什么场景该用什么样的冗余方式

    oracle asm 创建磁盘组的时候,有三种冗余方式, 第一:外部冗余方式,依赖于存储的镜像 第二:正常冗余方式,asm存储镜像双份镜像方式 第三:高度冗余方式,asm存储镜像三份镜像方式 Mirr ...

  4. ORACLE 11G RAC ASM磁盘全部丢失后的恢复

    故障描述 (1)存储故障导致ASM磁盘丢失. (2)CRS因为OCR和VOTEDISK的丢失,除了OHAS还联机外,CLUSTERWARE服务都已经停止 操作步骤 一.恢复OCR和VOTEDISK ( ...

  5. linux asm 磁盘管理,asm磁盘管理篇

    linux上asm添加磁盘方法 划分磁盘 [root@localhost init.d]# fdisk /dev/sdd Command (m for help): n Command action ...

  6. oracle 磁盘组掉了,Oracle 11g RAC ASM磁盘全部丢失后的恢复(一)

    一.环境描述 (1) 11.2.0.3 RAC ON Oracle Linux 6 x86_64,只有一个ASM外部冗余磁盘组--DATA: (2)OCR,VOTEDISK,DATAFILE,CONT ...

  7. oracle 11g RAC ASM磁盘被强制下线抢修一例

    又有一段时间没写有关oracle的文章了,恐怕这也是不能成为高手的原因之一,偶有典型性拖延症和懒癌. 今天要讲的一个栗子又一个现场case,中午吃饭的时候看到来自同事的未接,处于职业敏感感觉是数据中心 ...

  8. oracle 11g rac asm磁盘组增加硬盘

    要增加磁盘的磁盘组为:DATA 要增加的磁盘为: /dev/sde1 在第一个节点上: [root@rac1 ~]# fdisk /dev/sde Device contains neither a ...

  9. 【Oracle Database】数据库用户管理

    创建用户 SQL> create user soe identified by soe default tablespace soe temporary tablespace temp; Use ...

最新文章

  1. python json有什么用_为什么要学习用Python解析JSON数据?
  2. 利用java反射调用类的的私有方法
  3. Shell脚本中的函数、数组
  4. ICMP (互联网控制消息协议 )是什么
  5. Zookeeper集群安装(开启kerberos)
  6. 查询表达式和LINQ to Objects
  7. 基于微信小程序办公用品采购系统的设计与实现.rar(毕业论文+程序源码+后端源码)
  8. 康托尔集的物理意义1.2
  9. 【答粉丝问】前公司挽留涨薪,已经接到下一家公司的offer,是走还是留?
  10. zmud命令详细解答
  11. 网络趣事 ❀ 为什么人们喜欢机械键盘
  12. 次时代游戏的制作流程以及游戏美术需要掌握哪些基本软件
  13. SSL 3.0 安全漏洞修复方法
  14. VB.NET excel 列排序
  15. flutter如何让row中的子组件高度保持一致
  16. 2015阿里巴巴实习生招聘笔试题,带答案,欢迎一起来讨论哇!
  17. Go Modules依赖包管理与Go Modules实战
  18. 嵌入式RFIDIC卡读写模块|读卡刷卡模块HX880D系列的应用与操作说明
  19. 中医死期已到之经络的癌本质谭
  20. [足式机器人]Part1 双足和四足的运动Ch04——【Legged Robots that Balance 读书笔记】

热门文章

  1. 代码中设置ImageView大小
  2. mysql 查询条件之外的数据_mysql 查询符合条件的数据
  3. 服务器开关电源型号ab和sb,北京DELTA DPS-500AB-21A 500W 小1U开关电源 FLEX 80PLUS 白金价格 - 中国供应商...
  4. android 获得顶层窗口_android 获取当前activity的最顶层及添加布局
  5. 一款十分推荐的PC端时间管理器——Manictime
  6. 发布.net core
  7. win策略计算机配置,win10组策略优化,win7组策略优化设置软件
  8. PM产品经理面试 面经汇总
  9. 【大唐杯学习超快速入门】5G技术原理仿真教学——5G移动性管理
  10. Android设置文字中粗