Oracle RAC 搭建——使用多路径(Multipath)

原文地址:http://blog.163.com/donfang_jianping/blog/static/136473951201410228567115/

http://blog.163.com/donfang_jianping/blog/static/136473951201311111384468/,http://blog.163.com/donfang_jianping/blog/static/136473951201311712517496/,http://blog.163.com/donfang_jianping/blog/static/13647395120131179581321/,http://blog.163.com/donfang_jianping/blog/static/136473951201311615737245/中,我们介绍了Oracle RAC完整的一个搭建过程。这里我们来看一下使用多路径来建立ASM的存储。


LInux多路径技术通常用在FC存储环境下,当然了,在ISCSI下也可以使用。这里我没有太多的介绍多路径 ,其实,在实际的使用当中,多数是采用默认。最多就是为每一个wwid配置一个别名,把不必要的设备加入黑名单(比如有/boot分区的设备),有时候会根据磁头与HBA卡的配置,把 path_grouping_policy改为failover。关于更多的多路径的介绍,大家可以看“Red_Hat_Enterprise_Linux-6-DM_Multipath-zh-CN.pdf”这本电子书。
下面,我们以iscsi存储环境为例,来看一下具体如何使用。

其他的步骤一样,也就是说,在http://blog.163.com/donfang_jianping/blog/static/13647395120131179581321/中的“ASM磁盘组的配置”这一步,我们不需要安装oracleasm-2.6.18-194.el5-2.0.5-1.el5.x86_64,
oracleasmlib-2.0.4-1.el5.x86_64,
oracleasm-support-2.1.8-1.el5.x86_64这些rpm包,也需要对ISCSI挂载的共享磁盘进行分区;我们可以直接使用多路径这个技术。

在ISCSI磁盘挂载完成以后,我们来进行对多路径进行配置。具体步骤如下:
(1)程序包的安装。
在redhat 6.5当中,我们需要安装如下的程序包,
device-mapper-multipath-libs-0.4.9-72.el6.x86_64
device-mapper-persistent-data-0.2.8-2.el6.x86_64
device-mapper-multipath-0.4.9-72.el6.x86_64
device-mapper-libs-1.02.79-8.el6.x86_64
device-mapper-event-1.02.79-8.el6.x86_64
device-mapper-1.02.79-8.el6.x86_64
device-mapper-event-libs-1.02.79-8.el6.x86_64
对于这些程序包,我们可以使用yum来安装,用如下命令安装即可,
yum -y install device-mapper device-mapper-multipath。
(2)启动multipath,并修改为自启动。
/etc/init.d/multipathd start,执行这个命令,启动multipath。
chkconfig --level 35 multipathd on,执行这个命令修为自启动。
(3)配置/etc/multipath.conf文件。
该文件的模板,我们可以在/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf这里找到 ,然后把这个文件复制到/etc目录下,可以执行如下命令,
cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/multipath.conf。然后编辑/etc/mulitpath.conf文件,进行如下的修改,
# This is a basic configuration file with some examples, for device mapper
# multipath.
# For a complete list of the default configuration values, see
# /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf.defaults
# For a list of configuration options with descriptions, see
# /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf.annotated
#
# REMEMBER: After updating multipath.conf, you must run
#
# service multipathd reload
#
# for the changes to take effect in multipathd

## By default, devices with vendor = "IBM" and product = "S/390.*" are
## blacklisted. To enable mulitpathing on these devies, uncomment the
## following lines.
#blacklist_exceptions {
# device {
# vendor "IBM"
# product "S/390.*"
# }
#}

## Use user friendly names, instead of using WWIDs as names.
#defaults {
# user_friendly_names yes
#}
##
## Here is an example of how to configure some standard options.
##
#
defaults {
udev_dir /dev
polling_interval  10
path_selector "round-robin 0"
path_grouping_policy multibus
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
prio alua
path_checker readsector0
rr_min_io 100
max_fds 8192
rr_weight priorities
failback immediate
no_path_retry fail
user_friendly_names yes
}
##
## The wwid line in the following blacklist section is shown as an example
## of how to blacklist devices by wwid.  The 2 devnode lines are the
## compiled in default blacklist. If you want to blacklist entire types
## of devices, such as all scsi devices, you should use a devnode line.
## However, if you want to blacklist specific devices, you should use
## a wwid line.  Since there is no guarantee that a specific device will
## not change names on reboot (from /dev/sda to /dev/sdb for example)
## devnode lines are not recommended for blacklisting specific devices.
##
blacklist {
       wwid 26353900f02796769
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
}
#multipaths {
# multipath {
# wwid 3600508b4000156d700012000000b0000
# alias yellow
# path_grouping_policy multibus
# path_checker readsector0
# path_selector "round-robin 0"
# failback manual
# rr_weight priorities
# no_path_retry 5
# }
# multipath {
# wwid 1DEC_____321816758474
# alias red
# }
#}
#devices {
# device {
# vendor "COMPAQ  "
# product "HSV110 (C)COMPAQ"
# path_grouping_policy multibus
# getuid_callout          "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
# path_checker readsector0
# path_selector "round-robin 0"
# hardware_handler "0"
# failback 15
# rr_weight priorities
# no_path_retry queue
# }
# device {
# vendor "COMPAQ  "
# product "MSA1000         "
# path_grouping_policy multibus
# }
#}
其中,blacklist用来添加设备的黑名单,也就是说,设置某些设备,不让它多路径化。比如,我们可以把某些设备的wwid加入在这里。
(4)执行如下命令。
modprobe dm-multipath   
multipath -F            
multipath dm-multipath  
multipath dm-round-robin
/etc/init.d/multipathd restart
执行完成上述命令之后,会在/etc/multipath目录下生成一个bindings这的一个文件,如下,
[root@djp01 multipath]# pwd
/etc/multipath
[root@djp01 multipath]# cat bindings
# Multipath bindings, Version : 1.0
# NOTE: this file is automatically maintained by the multipath program.
# You should not need to edit this file in normal circumstances.
#
# Format:
# alias wwid
#
mpatha 14f504e46494c45526776753764752d695267332d675a4a32
mpathb 14f504e46494c4552446f646c47592d325053352d33634f42
mpathc 14f504e46494c45524559737259462d7a4278572d6b307253
mpathd 14f504e46494c45524c693336494f2d517450512d4c6d3730
mpathe 14f504e46494c45527448484b6f432d575472632d41393944
[root@djp01 multipath]#
这里存放的是多路径的磁盘名称和对应的ID。这时,我们可以使用fdisk -l这个命令查看到这些设备,比如/dev/mapper/mpatha。
(5)再次修改/etc/multipath.conf文件,对应ID对应设备的别名。
由于上述的设备名称的可读性不是很好,所以我们要加入方便我们快速读的名称。修改/etc/multipath.conf文件,内容如下:
[root@djp01 multipath]# cat /etc/multipath.conf
# This is a basic configuration file with some examples, for device mapper
# multipath.
# For a complete list of the default configuration values, see
# /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf.defaults
# For a list of configuration options with descriptions, see
# /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf.annotated
#
# REMEMBER: After updating multipath.conf, you must run
#
# service multipathd reload
#
# for the changes to take effect in multipathd

## By default, devices with vendor = "IBM" and product = "S/390.*" are
## blacklisted. To enable mulitpathing on these devies, uncomment the
## following lines.
#blacklist_exceptions {
#       device {
#               vendor  "IBM"
#               product "S/390.*"
#       }
#}

## Use user friendly names, instead of using WWIDs as names.
#defaults {
#       user_friendly_names yes
#}
##
## Here is an example of how to configure some standard options.
##
#
defaults {
        udev_dir                /dev
        polling_interval        10
        path_selector           "round-robin 0"
        path_grouping_policy    multibus
        getuid_callout          "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
        prio                    alua
        path_checker            readsector0
        rr_min_io               100
        max_fds                 8192
        rr_weight               priorities
        failback                immediate
        no_path_retry           fail
        user_friendly_names     yes
}
##
## The wwid line in the following blacklist section is shown as an example
## of how to blacklist devices by wwid.  The 2 devnode lines are the
## compiled in default blacklist. If you want to blacklist entire types
## of devices, such as all scsi devices, you should use a devnode line.
## However, if you want to blacklist specific devices, you should use
## a wwid line.  Since there is no guarantee that a specific device will
## not change names on reboot (from /dev/sda to /dev/sdb for example)
## devnode lines are not recommended for blacklisting specific devices.
##
blacklist {
        wwid 26353900f02796769
        devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
        devnode "^hd[a-z]"
}
multipaths {
        multipath {
                wwid                    14f504e46494c45526776753764752d695267332d675a4a32
                alias                   ocrvdisk1
                path_grouping_policy    multibus
        }
         multipath {
                wwid                    14f504e46494c45527448484b6f432d575472632d41393944
                alias                   ocrvdisk2
                path_grouping_policy    multibus
        }
        multipath {
                wwid                    14f504e46494c45524559737259462d7a4278572d6b307253
                alias                   ocrvdisk3
                path_grouping_policy    multibus
        }
        multipath {
                wwid                    14f504e46494c4552446f646c47592d325053352d33634f42
                alias                   dbfile1
                path_grouping_policy    multibus
        }
         multipath {
                wwid                    14f504e46494c45524c693336494f2d517450512d4c6d3730
                alias                   fra1
                path_grouping_policy    multibus
        }

#       multipath {
#               wwid                    1DEC_____321816758474
#               alias                   red
#       }
}
#devices {
#       device {
#               vendor                  "COMPAQ  "
#               product                 "HSV110 (C)COMPAQ"
#               path_grouping_policy    multibus
#               getuid_callout          "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
#               path_checker            readsector0
#               path_selector           "round-robin 0"
#               hardware_handler        "0"
#               failback                15
#               rr_weight               priorities
#               no_path_retry           queue
#       }
#       device {
#               vendor                  "COMPAQ  "
#               product                 "MSA1000         "
#               path_grouping_policy    multibus
#       }
#}
[root@djp01 multipath]#
修改完成以后,重启机器即可(注意,在FC存储环境下不需要重新启动机器,直接执行service mutipathd reload命令即可)。
(6)重启完成以后查看对应的设备。
重启完成以后,使用fdisk -l命令再次查看,会看到如下的形式的设备。
Disk /dev/mapper/ocrvdisk1: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
这时,我们就完成了multipath的相关配置。

完成多路径的配置以后,我们还不能直接安装grid,因为多路径对应的设备的权限需要更改。这个时候,我们还需要借助udev来完成。
下面,我们来修改多路径的权限。
对于多路径操作的有两个位置,/dev/mapper目录对应的文件与/dev/dm-*开头对应的文件。我们只需要修改/dev/dm-*应对的权限就可以了。详细说明,请查阅相关资料。例如如下:
[root@djp01 ~]# ls -l /dev/mapper/
total 0
crw-rw----. 1 root root 10, 58 Nov 23 04:20 control
lrwxrwxrwx. 1 root root      7 Nov 23 05:34 dbfile1 -> ../dm-3
lrwxrwxrwx. 1 root root      7 Nov 23 05:25 fra1 -> ../dm-1
lrwxrwxrwx. 1 root root      7 Nov 23 05:25 ocrvdisk1 -> ../dm-4
lrwxrwxrwx. 1 root root      7 Nov 23 05:25 ocrvdisk2 -> ../dm-0
lrwxrwxrwx. 1 root root      7 Nov 23 05:25 ocrvdisk3 -> ../dm-2
[root@djp01 ~]# ls -l /dev/dm-*
brw-rw----. 1 root disk 253, 0 Nov 23 05:38 /dev/dm-0
brw-rw----. 1  root  disk 253, 1 Nov 23 05:38 /dev/dm-1
brw-rw----. 1  root   disk 253, 2 Nov 23 05:38 /dev/dm-2
brw-rw----. 1  root  disk 253, 3 Nov 23 05:38 /dev/dm-3
brw-rw----. 1  root  disk 253, 4 Nov 23 05:38 /dev/dm-4
[root@djp01 ~]#
我们需要修改root  disk为grid asmadmin。直接修改,grid还是无法识别,所以,可以通过udev来完成。
在/etc/udev/rules.d目录下,加入如下的文件与内容,
[root@djp01 rules.d]# cat 99-asm.rules
KERNEL=="dm-[0-4]", OWNER="grid", GROUP="asmadmin", MODE="0660"
[root@djp01 rules.d]#
这里要说明一下,文件名前面的数字是有规定的,应该是udev的一个类型吧,中间的名称是随意的,当然了,最好符合要求,后面的后缀名也是固定的。具体用那个呢,当然了,我们可以查看相关的资料,或者是在 /etc/udev/rules.d目录下查看已经存在的文件。
[root@djp01 rules.d]# ls
60-fprint-autosuspend.rules  70-persistent-cd.rules   90-hal.rules               99-asm.rules
60-pcmcia.rules              70-persistent-net.rules  97-bluetooth-serial.rules  99-fuse.rules
60-raw.rules                 90-alsa.rules            98-kexec.rules
[root@djp01 rules.d]#
有这么多文件。我每一个都看过了,得出的结论前面的那个数字应该是类型。由于我们指定多路径的用户,用户组及权限就可以了,较为简单,所以,我们可以参考99-fuse.rules这个文件。如下,
[root@djp01 rules.d]# cat 99-fuse.rules
KERNEL=="fuse", MODE="0666",OWNER="root",GROUP="root"
[root@djp01 rules.d]#
我们照猫画虎,可以弄出来一个99-asm.rules这样文件来。接下来,我们重启udev或是操作系统即可,这时,我们再次查看,
[root@djp01 ~]# ll /dev/dm-*
brw-rw----. 1 grid asmadmin 253, 0 Nov 23 05:48 /dev/dm-0
brw-rw----. 1 grid asmadmin 253, 1 Nov 23 05:48 /dev/dm-1
brw-rw----. 1 grid asmadmin 253, 2 Nov 23 05:48 /dev/dm-2
brw-rw----. 1 grid asmadmin 253, 3 Nov 23 05:48 /dev/dm-3
brw-rw----. 1 grid asmadmin 253, 4 Nov 23 05:48 /dev/dm-4
[root@djp01 ~]#
权限是我们想要的了。
另外一种修改权限的方法就是,编辑另外一个udev的配置文件,为12-.rules这样的一个udev的配置文件,比如文件名为12-mulitpath-privs.rules,其内容如下:
[root@djp01 rules.d]# cat 12-mulitpath-privs.rules
ENV{DM_NAME}=="dbfile*", OWNER:="grid", GROUP:=" asmadmin", MODE:="660"
ENV{DM_NAME}=="fra*", OWNER:="grid", GROUP:=" asmadmin ", MODE:="660"
ENV{DM_NAME}=="ocrvdisk*", OWNER:="grid", GROUP:=" asmadmin", MODE:="660"

[root@djp01 rules.d]# 
以上是使用name来进行的,也可以使用uuid,比如如下:
[root@djp01 rules.d]# cat 12-mulitpath-privs.rules
ENV{DM_UUID}=="mpath-?*", OWNER:="grid", GROUP:=" asmadmin", MODE:="660"
[root@djp01 rules.d]# 
每个磁盘的uuid可以在/dev/disk/by-id目录下找到,用ls -l命令就可以详细看到。
该udev的配置文件,可以在/usr/share/doc/device-mapper-/12-dm-permissions.rules中找到,这里有详细的模板。
推荐使用第二种方法来修改多路径设备的权限。

多路径配置好了,其他的也都配置完成了。这个时候,我们就可以进行对grid,database进行安装了。
 安装grid,到了配置表决磁盘(votedisk)那里,我们点击“Change Discovery Path”,在输入框里输入“/dev/mapper/*”,然后点击OK,这样就看到我们需要的磁盘了,选择对应的磁盘以后,点击下一步开始安装就是了。
其他的步骤都一样,请参考上述的连接。

下面,我们列出一些完成安装后的一些路径。
表决磁盘:
[root@djp01 bin]# ./crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   a2b232f16cdb4f99bf2886e413786c68 (/dev/mapper/ocrvdisk3) [OCRVDISK]
 2. ONLINE   3058cbd2b8254f68bf86547d208e8a05 (/dev/mapper/ocrvdisk2) [OCRVDISK]
 3. ONLINE   651fc5f3db374f20bf7d18190bc088d7 (/dev/mapper/ocrvdisk1) [OCRVDISK]
Located 3 voting disk(s).
[root@djp01 bin]#
DBFILE1磁盘组对应的磁盘路径:
ASMCMD> lsdsk -p -G dbfile1
Group_Num  Disk_Num      Incarn  Mount_Stat  Header_Stat  Mode_Stat  State   Path
        1         0  3915945212  CACHED      MEMBER       ONLINE     NORMAL  /dev/mapper/dbfile1
ASMCMD>


你可能感兴趣的:(RAC)