ASM磁盘多路径及udev配置
1、1:多路径扫描设备
[root@node2 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.10.21:3260
[root@node2 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.11.21:3260
[root@node1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.10.20:3260
[root@node1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.11.20:3260
注意:记得每个存储两个IP都要扫描
如果是rac,节点1和节点2都要执行。
2、2:重启服务器,iscsi设备自动挂载
两个节点扫描之后重启服务器,重启之后rhel6.4 就会自动挂载iscsi设备。因为如果iscsi设备很多的话,一个一个挂载很麻烦,尽管能够双通道挂载。以下图片是双通道挂载。
iscsiadm -m node -T iqn.2001-04.com.KingStore-blockA0:71a01ebeb045 –p 10.10.10.20:3260 -l 执行这个命令同时相当于iscsiadm -m node -T iqn.2001-04.com.KingStore-blockA0:71a01ebeb045 –p 10.10.11.20:3260 -l 只要执行一个就行,就能够双通道挂载
具体挂载iscsi设备可以参考我的经验:rhel 6挂载以及卸载iscsi存储
http://jingyan.baidu.com/article/046a7b3edda53bf9c27fa9a2.html
3、3:找出iqn映射到Linux的设备别名
在节点1上
service iscsi status 就能找到iscsi设备映射到Linux服务器的别名了。
node1:上
iqn.2001-04.com.KingStore-blockA1:e7fe838f5c2e sde sdc
iqn.2001-04.com.KingStore-blockB0:63e12abcea4c sdl sdk
iqn.2001-04.com.KingStore-blockA2:ad9ac7a8dbc5 sdi sdj
iqn.2001-04.com.KingStore-blockB1:cc5eff2db421 sdh sdf
iqn.2001-04.com.KingStore-blockB2:55c6742987b sdm sdb
iqn.2001-04.com.KingStore-blockA0:4535387a44ea sdg sdd
4、4:生成wwid号
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdb
1a7131bd2c389eb5e79ff34b15e79cb1b
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdc
15c660fd0fc09e3c02d1612ca0c4511af
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdd
17f715a111c0c7ef8d05ed2298ab4c412
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sde
196d1ca5c3dfead0634b120b019d48443
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdf
11ef74500552e6ed7a3c8c80c2ead9306
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdg
1a7131bd2c389eb5e79ff34b15e79cb1b
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdh
106a6ab4342a408070ba5cf81fcaeb88c
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdi
11ef74500552e6ed7a3c8c80c2ead9306
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdj
17f715a111c0c7ef8d05ed2298ab4c412
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdk
196d1ca5c3dfead0634b120b019d48443
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdl
15c660fd0fc09e3c02d1612ca0c4511af
[root@node1 ~]# /sbin/scsi_id -g -u -d /dev/sdm
106a6ab4342a408070ba5cf81fcaeb88c
可以看到两两重复的
然后规划好,哪些设备存放集群信息,哪些设备用来存放数据
5、5:YUM安装多路径软件
核心软件:
device-mapper-multipath-0.4.9-64.el6.x86_64
device-mapper-1.02.77-9.el6.x86_64
multipath-tools。主要提供multipathd和multipath等工具和 multipath.conf等配置文件。这些工具通过device mapper的ioctr的接口创建和配置multipath设备(调用device-mapper的用户空间库。创建的多路径设备会在/dev/mapper中)
device-mapper:主要包括两大部分:内核部分和用户部分。内核部分主要由device mapper核心(dm.ko)和一些target driver(md-multipath.ko)。核心完成设备的映射,而target根据映射关系和自身特点具体处理从mappered device 下来的i/o。同时,在核心部分,提供了一个接口,用户通过ioctr可和内核部分通信,以指导内核驱动的行为,比如如何创建mappered device,这些divece的属性等。linux device mapper的用户空间部分主要包括device-mapper这个包。其中包括dmsetup工具和一些帮助创建和配置mappered device的库。这些库主要抽象,封装了与ioctr通信的接口,以便方便创建和配置mappered device。multipath-tool的程序中就需要调用这些库
YUM软件安装可以参考我的经验:rhel6.4 yum本地yum源配置
http://jingyan.baidu.com/article/59a015e340de67f7948865bc.html
6、6:启动多路径服务并配置永久生效
[root@node1 Packages]# /etc/init.d/multipathd start
Starting multipathd daemon: [ OK ]
[root@node1 Packages]# chkconfig --list | grep multipathd
multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@node1 Packages]# chkconfig --level 345 multipathd on
[root@node1 Packages]# chkconfig --list | grep multipathd
multipathd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
7、7:编辑配置文件/etc/multipath.conf
[root@node1 dev]# cat /etc/multipath.conf
defaults {
user_friendly_names yes
}
multipaths {
multipath {
wwid "1a7131bd2c389eb5e79ff34b15e79cb1b"
alias ocr1
path_grouping_policy multibus
uid 1300
gid 1301
mode 666
}
multipath {
wwid "106a6ab4342a408070ba5cf81fcaeb88c"
alias data11
path_grouping_policy multibus
uid 1200
gid 1000
mode 666
}
multipath {
wwid "11ef74500552e6ed7a3c8c80c2ead9306"
alias ocr2
path_grouping_policy multibus
uid 1300
gid 1301
mode 666
}
multipath {
wwid "17f715a111c0c7ef8d05ed2298ab4c412"
alias data22
path_grouping_policy multibus
uid 1200
gid 1000
mode 666
}
multipath {
wwid "196d1ca5c3dfead0634b120b019d48443"
alias data12
path_grouping_policy multibus
uid 1200
gid 1000
mode 666
}
multipath {
wwid "15c660fd0fc09e3c02d1612ca0c4511af"
alias data21
path_grouping_policy multibus
uid 1200
gid 1000
mode 666
}
}
编辑完之后重启多路径服务,就会发现/dev/mapper目录下生成了指定的设备名称,但是真正的设备在/dev/dm-*。/dev/mapper是安装ASM时指定的路径。但是发现这些设备名称的权限都是root(不需要更改),且/dev/dm-*读写权限设定是无效的(需要更改)。
虽然ASM中使用的/dev/mapper/下的设备,但是这些设备最终还是连接到/dev/dm-*这些设备。所以如果需要使用/dev/mapper/下的设备,必须udev修改/dev/dm-*这些设备读写权限。虽然/dev/dm-*这些设备读写权限能够通过chmod更改,但是一定重启存储或者重启服务器之后之前更改的权限又变回来了。所以必须使用udev修改这些设备权限。
8、8:使用udev规则修改设备读写权限
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="dm-0", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="dm-1", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="dm-2", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="dm-3", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="dm-4", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="dm-5", OWNER="oracle", GROUP="oinstall", MODE="0660"
注意:
/dev/目录下有多少个dm-*就写多少个,OWNER和asmadmin可以不用这么严格,但是MODE权限必须设置成0660。比如dm-1现在对应的是data11这个设备,但是如果其中一台存储宕机,dm-1对应的一定不是data11了。
9、9:加载设备
[root@node1 mapper]# partprobe /dev/sdb
[root@node1 mapper]# partprobe /dev/sdc
[root@node1 mapper]# partprobe /dev/sdd
[root@node1 mapper]# partprobe /dev/sde
[root@node1 mapper]# partprobe /dev/sdf
[root@node1 mapper]# partprobe /dev/sdg
[root@node1 mapper]# partprobe /dev/sdh
[root@node1 mapper]# partprobe /dev/sdi
[root@node1 mapper]# partprobe /dev/sdj
[root@node1 mapper]# partprobe /dev/sdk
[root@node1 mapper]# partprobe /dev/sdl
[root@node1 mapper]# partprobe /dev/sdm
10、10:加载udev规则并启动udev
[root@node1 mapper]# /sbin/udevadm control --reload-rules
[root@node1 mapper]# /sbin/start_udev
Starting udev: [ OK ]
[root@node1 mapper]# cd ../
[root@node1 dev]# ll dm-*
brw-rw----. 1 grid asmadmin 253, 0 Jul 16 12:03 dm-0
brw-rw----. 1 oracle oinstall 253, 1 Jul 16 12:03 dm-1
brw-rw----. 1 oracle oinstall 253, 2 Jul 16 12:03 dm-2
brw-rw----. 1 grid asmadmin 253, 3 Jul 16 12:03 dm-3
brw-rw----. 1 oracle oinstall 253, 4 Jul 16 12:03 dm-4
brw-rw----. 1 oracle oinstall 253, 5 Jul 16 12:03 dm-5