使用 ASMLIB/oracleasm时,如何强制 ASM 首先扫描多路径设备

ASMLib/oracleasm 只能在 Linux 操作系统上实现。
使用多路径时,我们希望强制 oracleasm 首先扫描多路径设备。
这减少了扫描时间,因为默认情况下 oracleasm 会尝试扫描每个设备,包括到它的多个路径。

在所有节点上:

  1. 关闭所有(DB和ASM):
    你应该在重启 ASMLib 之前停止所有(例如:DB、ASM 和 HAS(如果你在 11.2 crsctl stop has)(crsctl stop crs for RAC):

如果磁盘组已挂载,它将失败并显示以下错误:

/etc/init.d/oracleasm restart
Unmounting ASMlib driver filesystem: umount: /dev/oracleasm: device is busy
umount: /dev/oracleasm: device is busy
Unable to unmount ASMlib driver filesystem
                                                           [FAILED]

ASMLib 不允许这样做。

然后,在每个节点上,一次一个,根据多路径软件的类型执行以下步骤:

  1. 对于备份,复制我们当前的 /etc/sysconfig/oracleasm 和 /etc/sysconfig/oracleasm-_dev_oracleasm 文件。

a) 如果使用 DM-Multipathing 或者 Linux OS Native Multipathing:
然后,我们要更改 /etc/sysconfig/oracleasm-_dev_oracleasm 文件中的以下参数,/etc/sysconfig/oracleasm 文件真正链接到该文件:

例如:

lrwxrwxrwx 1 root root 24 Jun 13 09:58 /etc/sysconfig/oracleasm -> oracleasm-_dev_oracleasm
# ORACLEASM_SCANORDER: Matching patterns to order disk scanning
ORACLEASM_SCANORDER="mpath dm" (OR ORACLEASM_SCANORDER="dm")
# ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan
ORACLEASM_SCANEXCLUDE="sd"

如果使用 EMC PowerPath Multipathing,那么我们希望更改 /etc/sysconfig/oracleasm-_dev_oracleasm 文件中的以下参数,/etc/sysconfig/oracleasm 文件实际链接到该文件:

例如:

lrwxrwxrwx 1 root root 24 Jun 13 09:58 /etc/sysconfig/oracleasm -> oracleasm-_dev_oracleasm
# ORACLEASM_SCANORDER: Matching patterns to order disk scanning
ORACLEASM_SCANORDER="emcpower"
# ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan
ORACLEASM_SCANEXCLUDE="sd"

如果使用 Hitachi Dynamic Link Manager,那么我们需要更改 /etc/sysconfig/oracleasm-_dev_oracleasm 文件中的以下参数,/etc/sysconfig/oracleasm 文件真正链接到该文件:

例如:

lrwxrwxrwx 1 root root 24 Jun 13 09:58 /etc/sysconfig/oracleasm -> oracleasm-_dev_oracleasm
# ORACLEASM_SCANORDER: Matching patterns to order disk scanning
ORACLEASM_SCANORDER="sddlm"
# ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan
ORACLEASM_SCANEXCLUDE=""
  1. 以 root 用户身份保存文件 (oracleasm-_dev_oracleasm)。

  2. 重启 oracleasm(以 root 身份):

# service oracleasm restart

或者

# /etc/init.d/oracleasm restart
  1. 检查/dev/oracleasm/disks/*:
$ ls -ltr /dev/oracleasm/disks/*

5-1 如果使用 DM-Multipathing 或者 Linux OS Native Multipathing,则所有主编号应等于 253 或者 252 或者 249 。
例如:

# ls -l /dev/oracleasm/disks
brw-rw---- 1 grid asmadmin 253,  9 Jun  4 10:35 ASM01
brw-rw---- 1 grid asmadmin 253,  4 Jun  4 10:35 ASM02
brw-rw---- 1 grid asmadmin 253,  7 Jun  4 10:35 ASM03
brw-rw---- 1 grid asmadmin 253, 11 Jun  4 10:35 ASM04
brw-rw---- 1 grid asmadmin 253, 20 Jun  4 10:35 ASM05

或者

# ls -l /dev/oracleasm/disks
brw-rw---- 1 grid asmadmin 252, 9 Jun 4 10:35 ASM01
brw-rw---- 1 grid asmadmin 252, 4 Jun 4 10:35 ASM02
brw-rw---- 1 grid asmadmin 252, 7 Jun 4 10:35 ASM03
brw-rw---- 1 grid asmadmin 252, 11 Jun 4 10:35 ASM04
brw-rw---- 1 grid asmadmin 252, 20 Jun 4 10:35 ASM05

上述主要编号应与文件 /proc/partitions 中的多路径设备 (dm*) 匹配。
例如:

# cat /proc/partitions
major minor #blocks name 
...
253  8 524281275 dm-8     
253  9 524281220 dm-9
253  3 524281275 dm-3
253  4 524281220 dm-4
253  6 524281275 dm-6
253  7 524281220 dm-7
253  10 524281275 dm-10
253  11 524281220 dm-11
253  19 524281275 dm-19
253  20 524281220 dm-20 
...

5-2 如果使用 EMC PowerPath Multipathing,则所有主要编号应等于 120。
例如:

# ls -l /dev/oracleasm/disks
brw-rw---- 1 grid asmadmin 120,  11 Jun  4 10:35 ASM01
brw-rw---- 1 grid asmadmin 120,  5 Jun  4 10:35 ASM02
brw-rw---- 1 grid asmadmin 120,  3 Jun  4 10:35 ASM03
brw-rw---- 1 grid asmadmin 120,  7 Jun  4 10:35 ASM04
brw-rw---- 1 grid asmadmin 120,  9 Jun  4 10:35 ASM05
  1. 上述主要编号应与文件/proc/partitions 中的多路径设备(emcpower*) 匹配。
# cat /proc/partitions
major minor #blocks name
...
120  2 524281275 emcpowerb
120  3 524281220 emcpowerb1   
120  4 524281275 emcpowerc
120  5 524281220 emcpowerc1 
120  6 524281275 emcpowerd
120  7 524281220 emcpowerd1
120  8 524281275 emcpowere
120  9 524281220 emcpowere1
120  10 524281275 emcpowerf
120  11 524281220 emcpowerf1
...

5-3 如果使用 Hitachi Dynamic Link Manager,例如:

# ls -l /dev/oracleasm/disks
brw-rw---- 1 grid  asmadmin 252, 224 Jun  4 10:35 ASM01
brw-rw---- 1 grid  asmadmin 252, 240 Jun  4 10:35 ASM02
brw-rw---- 1 grid  asmadmin 251, 0 Jun  4 10:35 ASM03
brw-rw---- 1 grid  asmadmin 251, 16 Jun  4 10:35 ASM04
brw-rw---- 1 grid  asmadmin 251, 32 Jun  4 10:35 ASM05
  1. 以上应该与文件/proc/partitions 中的多路径设备(sddlm*) 匹配。

注意:对于 Hitachi Dynamic Link Manager,主编号可以不同,但必须与 sddlm* 设备匹配。

当 /proc/partitions 文件列出了 sddlm* 设备时,这通常表明正在使用 Hitachi Dynamic Link Manager。

# cat /proc/partitions
major minor #blocks name
...
252 224 204802560 sddlmao
252 240 204802560 sddlmap
251 0 204802560 sddlmba
251 16 204802560 sddlmbb
251 32 215040000 sddlmbc
...

5-4 如果使用 AIX(请注意 ASMLib/oracleasm 只能在 Linux OS 上实现。
):

请注意,AIX 可以将 Linux 操作系统与不同类型的多路径软件一起使用,但多路径设置/扫描取决于存储供应商。
但是,大多数 AIX 客户都使用 mknod 设置多路径,并且 AIX 7.0 中有一个内置的 MPIO(MultiPath I/O)软件。

如果客户使用 HDS 或者 EMC 存储,则驱动程序来自供应商。

# lsdev -Cc disk
hdisk38 Available 06-09-02     MPIO IBM 2107 FC Disk
hdisk39 Available 06-09-02     MPIO IBM 2107 FC Disk
hdisk40 Available 06-09-02     MPIO IBM 2107 FC Disk
hdisk41 Available 06-09-02     MPIO IBM 2107 FC Disk
hdisk42 Available 06-09-02     MPIO IBM 2107 FC Disk
hdisk43 Available 06-09-02     MPIO IBM 2107 FC Disk
hdisk44 Available 06-09-02     MPIO IBM 2107 FC Disk

从 AIX 5.2 开始,多路径 I/O 功能使用唯一的设备标识符 (UDID) 来标识每个支持 MPIO 的设备,而不管它是在哪个路径上被发现的。

UDID 保存在设备配置数据库中。
当发现设备时,将检查数据库中的 UDID 以确定该设备是否是新设备,或者该发现是否是到现有设备的另一条路径。
当检测到一个设备的多个路径时,设备驱动程序或者路径控制管理器内核扩展将决定为特定请求使用哪个路径。

日期:2020-09-17 00:13:39 来源:oir作者:oir