在LINUX下安装ORACLE RAC时,建ASM磁盘组时有时会碰到两个节点上存储映射过来的磁盘盘符不一致,有时是物理路径一致,但聚合后路径不一致,有时甚至物理路径也不一致,此时就需将两个节点上的磁盘盘符修改为一致。

    解决这个问题,首先要确认LUN ID与磁盘的对应关系,确认两个节点磁盘的对应关系。找到存储映射到主机的磁盘的LUN ID,并将两台主机之间相同LUN ID的磁盘对应关系找到,通过LINUX的MKNOD命令进行修改设置,使其对应。

    mknod命令用于创建一个设备文件,即特殊文件。我们首先要明白什么是设备文件,简单的说 操作系统与外部设备(磁盘驱动器,打印机,终端 等等)都是通过设备文件来进行通信 的,在Unix/Linux系统与外部设备通讯之前,这个设备必须首先要有一个设备文件,设备文件均放在/dev目录下。一般情况下在安装系统的时候系统自动创建了很多已检测到的设备的设备文件,但有时候我们也需要自己手动创建,命令行生成设备文件的方式有 insf,mksf,mknod等等。

       mknod命令的标准形式为:       mknod DEVNAME {b | c}  MAJOR  MINOR

       参数解释:

       DEVNAME是要创建的设备文件名,如果想将设备文件放在一个特定的文件夹下,就需要先用mkdir在dev目录下新建一个目录;

       b和c 分别表示块设备和字符设备:

       b表示系统通过块设备文件存取一个设备的时候,先从内存中的buffer中读或写数据,而不是直接传送数据到物理磁盘,这种方式能有效的提高磁盘和CD-ROMS的I/O性能。磁盘和CD-ROMS即可以使用字符设备文件也可使用块设备文件。

       c表示字符设备文件与设备传送数据的时候是以字符的形式传送,一次传送一个字符,比如打印机、终端都是以字符的形式传送数据;

       MAJOR和MINOR分别表示主设备号和次设备号。为了管理设备,系统为每个设备分配一个编号,一个设备号由主设备号和次设备号组成。主设备号标示某一种类的设备,次设备号用来区分同一类型的设备。linux操作系统中为设备文件编号分配了32位无符号整数,其中前12位是主设备号,后20位为次设备号,所以在向系统申请设备文件时主设备号不好超过4095,次设备号不好超过2^20 -1。

        配置示例:

发现存储映射到主机的磁盘的LUN ID

根据一一对应的WWN值,将相应WWN对应两个节点的盘符设置成一致:
11.11.10.56
#mknod  /dev/rdisk/data5disk c 13 0x000013
#mknod  /dev/rdisk/data6disk c 13 0x000014
#mknod  /dev/rdisk/data7disk c 13 0x000015
#mknod  /dev/rdisk/data8disk c 13 0x000016

11.11.10.57
#mknod  /dev/rdisk/data5disk c 13 0x000025
#mknod  /dev/rdisk/data6disk c 13 0x000026
#mknod  /dev/rdisk/data7disk c 13 0x000027
#mknod  /dev/rdisk/data8disk c 13 0x000028

设置两个节点对应盘符路径的权限:
#chown oracle:oinstall /dev/rdisk/data5disk
#chown oracle:oinstall /dev/rdisk/data6disk
#chown oracle:oinstall /dev/rdisk/data7disk
#chown oracle:oinstall /dev/rdisk/data8disk

以ORACLE用户检验读写权限
$dd if=/dev/zero f=/dev/rdisk/data5disk count=10 count=1024

在其中一节点上为ASM磁盘组添加磁盘
export ORACLE_SID=+ASM2
sqlplus / as sysdba

alter diskgroup DATADG add disk '/dev/rdisk/data5disk';
alter diskgroup DATADG add disk '/dev/rdisk/data6disk';
alter diskgroup DATADG add disk '/dev/rdisk/data7disk';
alter diskgroup DATADG add disk '/dev/rdisk/data8disk';