CentOS6u9 Oracle11g RAC 共享存储配置

简单说明:

在11g RAC搭建的时候,共享存储配置策略分为两种:

1,使用udev做共享存储的别名和权限绑定
2,使用multipath多路软件做别名绑定,使用udev做权限绑定

多链路的产生原因:

存储的多个HBA卡(防止单点,至少两个)接入到多台光纤交换机(防止单点,至少两台)
每台服务器的多个HBA卡(防止单点,至少两个)接入到多台光纤交换机(防止单点,至少两台)
如果存储设备只有两个HBA卡:S1、S2,服务器也只有两个HBA卡:s1、s2,两台光纤交换机:F1、F2
那么从存储的某个RAID划分的LUN挂接到服务器时就存在2条链路:S1->F1->s1、S2->F2->s2
在服务器上,该LUN就会被识别成2个设备:/dev/sdb、/dev/sdc
使用scsi_id命令查看这2个设备的WWID时就会发现是相同的,也就是同一个LUN

共享存储配置的必要性:

当存在多个共享磁盘的时候,或者共享磁盘存在多链路的时候
系统重启前的/dev/sdb和重启后的/dev/sdb不一定会是同一块盘
这个时候就需要以上两个方案中的某一个,根据WWID绑定成固定的设备名
否则会造成设备使用的混乱

两种方案的区别:

第一种方法较为简单,根据设备的WWID做别名和权限绑定,不具备多路整合的特性
第二种方法是多链路整合的生产正规部署方法,具有链路冗余故障自动切换特性
生产推荐使用第二种方法

环境准备:

添加共享存储磁盘:

需要使用VirtualBOX软件做本次实验,该虚拟机软件可以方便的模拟共享存储磁盘
如果使用VMWare,则需要使用ISCSI或者FreeNAS或者Openfiler进行共享存储的模拟
需要额外搭建一台服务器,该服务器装FreeNAS或者Openfiler系统或者装CentOS配置ISCSI服务
依据《CentOS6实验机模板搭建部署》克隆部署虚拟机,添加一块共享存储,添加方法如下:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

另外一台机器就可以同时使用该存储了

这里写图片描述
这里写图片描述

重启该机器,查看磁盘设备就能看到新增的共享存储了

信息查询规划:

首先需要获取共享存储的WWID,系统目前只有两个存储设备:
/dev/sda是系统盘,/dev/sdb是新增的共享存储,因此直接获取设备的WWID:

/sbin/scsi_id -g -u -d /dev/sdb

生产环境下,可以直接排除掉类似sda本地磁盘,查看所有的设备:

ls /dev/sd*|grep -v [0-9]|grep -v sda

这里写图片描述

使用scsi_id查看设备的WWID信息和容量信息:

for i in $(ls /dev/sd*|grep -v [0-9]|grep -v sda)
do
  echo -ne "$(fdisk -l ${i}|grep ^Disk|grep ${i}|awk '{print $1,$2,$3,$4}') WWID:"
  /sbin/scsi_id -g -u -d "${i}"
done|sort -nk3 -k5|column -t

这里写图片描述

规划:

根据WWID确定是否是同一个存储设备
根据设备容量确定该设备的用途,从而确定别名:
    容量为10.7G的三个存储分别作为lun_crs01、lun_crs02、lun_crs03

CentOS5使用以下命令:

/sbin/scsi_id -g -u -s /block/sdb
# CentOS5中的设备查找的全路径是/sys/block/sdb
# 使用scsi_id生成WWID时传入的是/block/sdb

方法一部署:

使用udev直接绑定别名和权限

# 解决start_udev时候的bug
echo "options=--whitelisted --replace-whitespace"  >> /etc/scsi_id.config
cat >>/lib/udev/rules.d/90-pulseaudio.rules<<EOF
GOTO="pulseaudio_check_usb"
LABEL="pulseaudio_check_usb"
EOF

# 根据上一步查询出的WWID信息和容量信息,确定该设备的别名信息
# 例如 Disk /dev/sdb: 8589 MB, WWID:1ATA_VBOX_HARDDISK_VB934ffffd-54985435
# 计划将此设备绑定别名为lun_crs01,并且授权给测试用户grid,测试组asmadmin

groupadd -g 1001 asmadmin
useradd -u 1005 -g asmadmin grid
# 此处的用户组和用户配置并不是标准的,只做演示用

WWID=1ATA_VBOX_HARDDISK_VB934ffffd-54985435
NAME=lun_crs01
OWNER=grid
GROUP=asmadmin
# 分别设置WWID、别名和用户以及用户组变量

cat >>/etc/udev/rules.d/99-oracle-asmdevices.rules<<EOF
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/\$name", RESULT=="${WWID}", NAME="${NAME}", OWNER="${OWNER}", GROUP="${GROUP}", MODE="0660"
EOF
# 简单解释:
# KERNEL=="sd*" 表示通配/dev/sd*所有设备
# BUS=="scsi" 表示设备是scsi总线类型的设备
# PROGRAM=="... /dev/$name" 表示执行命令
# $name会被依次替换成通配到的设备名,就是 KERNEL=="sd*" 通配出的名字
# RESULT=="..." 对命令执行的结果进行匹配筛选
# NAME="..." 代表对匹配到的设备做一个别名
# OWNER="...", GROUP="...", MODE="..." 权限赋值
# 当有多个共享设备时,只需要变更WWID和NAME,再次追加即可

start_udev
# 启动udev

# 查看权限信息,进行验证

fdisk -l /dev/test_disk
# 可以使用fdisk命令查看该设备的信息

这里写图片描述

策略回滚

rm -rf /etc/udev/rules.d/99-oracle-asmdevices.rules
reboot
# 也可以直接删除/dev/test_disk,而不进行重启,但不建议这么做

方法二部署:

multipath多路软件别名绑定

# 首先需要回滚掉使用udev直接绑定的策略,否则实验会失败
# 或者新增一块没有使用第一种方法进行udev别名和权限绑定的磁盘设备
rm -rf /etc/udev/rules.d/99-oracle-asmdevices.rules
reboot

# 软件安装,设置开机启动
yum -y install device-mapper-multipath
chkconfig multipathd on
# 生成默认配置文件,启动
mpathconf --enable
/etc/init.d/multipathd start

# WWID信息依然是使用上方方法查看,别名依然使用
WWID=1ATA_VBOX_HARDDISK_VB934ffffd-54985435
NAME=lun_crs01
# 还需要一些sdb设备的vendor、product信息,可以通过命令 multipath -v3 获取
# 在此之前需要首先生成默认的配置文件,否则无法查询到相应信息
vendor=$(multipath -v3|grep sdb|grep 'vendor'|awk '{print $NF}')
product=$(multipath -v3|grep sdb|grep 'product'|awk '{print $(NF-1),$NF}')

# 生成新的配置文件
cat >/etc/multipath.conf<<EOF
defaults {
  user_friendly_names yes
}
blacklist {
  devnode "^sda"
}
multipaths {
  multipath {
    wwid "${WWID}"
    alias ${NAME}
    path_grouping_policy multibus
    path_selector "round-robin 0"
    mode 0600
  }
}
devices {
  device {
    vendor "${vendor}"
    product "${product}"
    getuid_callout "/sbin/scsi_id -g -u -d /dev/%n"
    failback immediate
    no_path_retry fail
  }
}
EOF
# man multipath.conf 可以查到诸如path_grouping_policy、path_selector的配置意义
# 当有多个共享设备时,只需要复制multipath标签,替换wwid和alias俩参数即可
# 如果多个LUN来自不同的设备,比如有些来自dell的存储,有些则来自EMC²
# 则需要复制device标签,替换vendor和product参数

/etc/init.d/multipathd restart

ls -l /dev/mapper/
# 使用多路软件之后,绑定的别名在目录/dev/mapper/之下
# 别名实际上是软连接,它指向/dev/dm-XXX
# 系统重启前后/dev/dm-XXX不一定是同一个磁盘设备
# 而别名就会根据WWID指向另外的/dev/dm-XXX设备

这里写图片描述

权限绑定

使用multipath多路软件可以根据WWID绑定别名,可以做多路整合
但是multipath配置中没有对所属人和所属主进行配置的配置参数
需要进一步借助udev进行权限设置
# 解决start_udev时候的bug,如果在上一个试验中做了此操作,则无需再做
echo "options=--whitelisted --replace-whitespace"  >> /etc/scsi_id.config
cat >>/lib/udev/rules.d/90-pulseaudio.rules<<EOF
GOTO="pulseaudio_check_usb"
LABEL="pulseaudio_check_usb"
EOF

# 要根据multipath绑定的别名进行赋权,查询当前存在的别名
dmsetup ls
# 当然也可以去查询配置文件

OWNER=grid
GROUP=asmadmin
NAME=lun_crs01
cat >>/etc/udev/rules.d/12-dm-permissions.rules<<EOF
ENV{DM_NAME}=="${NAME}", OWNER:="${OWNER}", GROUP:="${GROUP}", MODE:="0660"
EOF
# 注意此处的赋值是:=而非=
# 同样的,如果有多个共享存储,需要变更相应的NAME进行追加udev配置文件

start_udev
ls -l /dev/mapper/
ls -l /dev/dm-0

这里写图片描述

CentOS5系列的权限绑定方法

# CentOS5的多路绑定之后,/dev/mapper/下面生成的不是软连接,而是具体的设备,因此udev绑定策略变成:
cat >/etc/udev/rules.d/99-oracle-asmdevices.rules<<EOF
PROGRAM="/bin/chown grid:oinstall /dev/mapper/lun-*"
PROGRAM="/bin/mod 0660 /dev/mapper/lun-*"
EOF

[TOC]

猜你喜欢

转载自blog.csdn.net/zwjzqqb/article/details/80340872
今日推荐