如何在 Linux/Unix 上使用 mknod 为 ASM 磁盘创建设备别名

这篇文件将介绍如何使用 mknod 在 Linux/Unix 上为候选或者成员 ASM 磁盘定义和关联有意义的设备名称。

下面显示的示例是具有 +ASM1 和 +ASM2 实例的 2 节点 RAC 设置。

  1. 我们在以下两个 +ASM1 和 +ASM2 实例上都安装了:
GROUP_NUMBER NAME STATE TYPE TOTAL_MB FREE_MB
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 CRSDG MOUNTED EXTERN 20480 20052
2 DATADG1 MOUNTED EXTERN 102400 77005
3 DATADG2 MOUNTED EXTERN 102400 85268
  1. 在 +ASM1 实例上,磁盘组映射到磁盘如下:
GROUP_NUMBER NAME Logical Disk on +ASM1 Physical Disk on +ASM1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 CRSDG CRSDG_0001       /dev/rdisk/disk78
2 DATADG1 DATADG1_0001   /dev/rdisk/disk79
3 DATADG2 DATADG2_0001   /dev/rdisk/disk80
  1. 在 +ASM2 实例上,磁盘组映射到磁盘如下:
GROUP_NUMBER NAME Logical Disk on +ASM1 Physical Disk on +ASM1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 CRSDG CRSDG_0001        /dev/rdisk/disk85
2 DATADG1 DATADG1_0001    /dev/rdisk/disk86
3 DATADG2 DATADG2_0001    /dev/rdisk/disk87
  1. 所以每个节点上的磁盘映射是不同的。
    这是正常的,因为每个节点/操作系统可以提供不同的磁盘名称(例如 /dev/rdsk## 以访问相同的物理磁盘)。

  2. 如果你想在所有节点和ASM实例上使用相同的磁盘名称来访问相同的物理磁盘,那么你需要创建一个别名,物理磁盘上的mknod设备或者符号链接(例如/dev/rdsk## ) 每个节点一个。

假设我们有以下设备:

节点#1:

crw-rw-€“ 1 root sys 118, 40 Apr 2 15:00 /dev/rdsk/disk78
crw-rw-€“ 1 root sys 118, 0 Apr 2 15:00 /dev/rdsk/disk79
crw-rw-€“ 1 root sys 118, 42 Apr 2 15:00 /dev/rdsk/disk80

创建别名:

# mkdir /asmdisks
# chown oracle:dba  /asmdisks
# cd /asmdisks
# mknod asmdisk1 c 118 40
# mknod asmdisk2 c 118 0
# mknod asmdisk3 c 118 42

然后我们将拥有下一个别名设备:

/asmdisks/asmdisk1 
/asmdisks/asmdisk2 
/asmdisks/asmdisk3

我们需要设置正确的所有权:

# chown oracle:dba /asmdisks/asmdisk1
# chown oracle:dba /asmdisks/asmdisk2
# chown oracle:dba /asmdisks/asmdisk3

节点#2:

crw-rw-€“ 1 root sys 118, 40 Apr 2 15:00 /dev/rdsk/disk78
crw-rw-€“ 1 root sys 118, 0 Apr 2 15:00 /dev/rdsk/disk79
crw-rw-€“ 1 root sys 118, 42 Apr 2 15:00 /dev/rdsk/disk80

创建别名:

# mkdir /asmdisks
# chown oracle:dba /asmdisks
# cd /asmdisks
# mknod asmdisk1 c 118 46
# mknod asmdisk2 c 118 49
# mknod asmdisk3 c 118 15

然后我们将拥有下一个别名设备:

/asmdisks/asmdisk1 
/asmdisks/asmdisk2 
/asmdisks/asmdisk3

我们需要设置正确的所有权:

# chown oracle:dba /asmdisks/asmdisk1
# chown oracle:dba /asmdisks/asmdisk2
# chown oracle:dba /asmdisks/asmdisk3
  1. 然后更新指向新别名设备的 asm_diskstring 两个 ASM 实例:

+ASM1 实例:

SQL> alter system set asm_diskstring = '/asmdisks/asmdisk*' scope=spfile;

+ASM2 实例:

SQL> alter system set asm_diskstring = '/asmdisks/asmdisk*' scope=spfile;
  1. 然后,下次重新启动 ASM 实例时,它们将使用位于每个节点上“/asmdisks/asmdisk*”的别名访问物理磁盘。

注意:“mknod”对齐不会在重新启动后保持不变,使用 udev 规则或者添加用于创建别名的“mknod”命令列表作为 init 中的启动脚本,它也应该在 CRS 启动之前加载。

日期:2020-09-17 00:11:40 来源:oir作者:oir