multipath 安装配置
二. 安装配置
2.1 安装Multipath
查看相关包:
[root@rac1 ~]# rpm -qa|grep device-mapper
device-mapper-multipath-0.4.7-30.el5
device-mapper-event-1.02.32-1.el5
device-mapper-1.02.32-1.el5
如果没有安装,从系统的安装文件里找到这集个包:
device-mapper-1.02.32-1.el5.i386.rpm
device-mapper-event-1.02.32-1.el5.i386.rpm
device-mapper-multipath-0.4.7-30.el5.i386.rpm
安装很简单:
rpm –Uvh device-mapper-*.rpm
说明:
(1)device-mapper-multipath
提供multipathd和multipath等工具和multipath.conf等配置文件。这些工具通过device mapper的ioctr的接口创建和配置multipath设备(调用device-mapper的用户空间库。创建的多路径设备会在/dev/mapper中)
(2)device-mapper
device-mapper包括两大部分:内核部分和用户部分。
内核部分由device-mapper核心(multipath.ko)和一些target driver(dm-multipath.ko)构成。dm-mod.ko是实现multipath的基础,dm-multipath其实是dm的一个target驱动。核心完成设备的映射,而target根据映射关系和自身特点具体处理从mappered device 下来的i/o。同时,在核心部分,提供了一个接口,用户通过ioctr可和内核部分通信,以指导内核驱动的行为,比如如何创建mappered device,这些device的属性等。
用户空间部分包括device-mapper这个包。其中包括dmsetup工具和一些帮助创建和配置mappered device的库。这些库主要抽象,封装了与ioctr通信的接口,以便方便创建和配置mappered device。device-mapper-multipath的程序中就需要调用这些库。
2.2 配置ISCSI多session访问
1个iSCSI Initiator透过多个Session连入同1个iSCSI Target设备,以便利用多网卡或iSCSI HBA启用负载平衡与故障失效切换机制,也可称作Multiple Sessions per Initiator。
2.2.1 断开ISCSI登录状态
[root@rac1 ~]# iscsiadm -m node -T iqn.2006-01.com.san -p 192.168.6.1 -u
Logging out of session [sid: 1, target: iqn.2006-01.com.san, portal: 192.168.6.1,3260]
Logout of [sid: 1, target: iqn.2006-01.com.san, portal: 192.168.6.1,3260]: successful
-u 表示logout,-l 表示login。 具体可以用man iscsiadm 查看。
2.2.2新建访问接口文件
[root@rac1 ~]# iscsiadm -m iface -I iface0 --op=new
New interface iface0 added
[root@rac1 ~]# iscsiadm -m iface -I iface1 --op=new
New interface iface1 added
接口文件保存在/var/lib/iscsi/ifaces目录中
[root@rac1 ifaces]# cd /var/lib/iscsi/ifaces/
[root@rac1 ifaces]# ls
iface0 iface1
[root@rac1 ifaces]# cat iface0
# BEGIN RECORD 2.0-871
iface.iscsi_ifacename = iface0
iface.transport_name = tcp
# END RECORD
[root@rac1 ifaces]# cat iface1
# BEGIN RECORD 2.0-871
iface.iscsi_ifacename = iface1
iface.transport_name = tcp
# END RECORD
[root@rac1 ifaces]#
2.2.3 配置iface
[root@rac1 ifaces]# iscsiadm -m iface -I iface0 --op=update -n iface.net_ifacename -v eth0
iface0 updated.
[root@rac1 ifaces]# iscsiadm -m iface -I iface1 --op=update -n iface.net_ifacename -v eth1
iface1 updated.
2.2.4 确认iface配置
[root@rac1 ifaces]# iscsiadm -m iface
default tcp,<empty>,<empty>,<empty>,<empty>
iser iser,<empty>,<empty>,<empty>,<empty>
iface1 tcp,<empty>,<empty>,eth1,<empty>
iface0 tcp,<empty>,<empty>,eth0,<empty>
2.2.5 搜索ISCSI Target
[root@rac1 ifaces]# iscsiadm -m discovery -t st -p 192.168.6.1 -I iface0 -I iface1
192.168.6.1:3260,1 iqn.2006-01.com.san
192.168.6.1:3260,1 iqn.2006-01.com.san
2.2.6 建立与Target的连接
[root@rac1 ifaces]# iscsiadm -m node -l
Logging in to [iface: iface1, target: iqn.2006-01.com.san, portal: 192.168.6.1,3260]
Logging in to [iface: iface0, target: iqn.2006-01.com.san, portal: 192.168.6.1,3260]
Login to [iface: iface1, target: iqn.2006-01.com.san, portal: 192.168.6.1,3260]: successful
Login to [iface: iface0, target: iqn.2006-01.com.san, portal: 192.168.6.1,3260]: successful
注意事项:
删除失效的iscsi 连接:如果因为错误配置等原因创建了iscsi 对应,系统不会自动删除,需手动删除。
如:
[root@rac3 mapper]# iscsiadm -m node
192.168.6.1:3260,1 iqn.2006-01.com.san
192.168.6.1:3260,1 iqn.2006-01.com.san
我们看到上面有二个iscsi对应,加入这个对应已经失效,系统不会自动删除。
删除命名:
iscsiadm -m node -o delete -T iqn.2006-01.com.san -p 192.168.6.1:3260
2.2.7 查看连接状态
[root@rac1 ifaces]# netstat -anp |grep 3260
tcp 0 0 192.168.6.5:63327 192.168.6.1:3260 ESTABLISHED 2370/iscsid
tcp 0 0 192.168.6.6:32380 192.168.6.1:3260 ESTABLISHED 2370/iscsid
2.3 multipath的默认配置
Multipath的配置文件是:/etc/multipath.conf。该文件中大部分配置是注释掉的,可以将他保存为备用,然后新建一个multipath.conf 文件,编辑新的配置文件。
[root@rac1 etc]# cp multipath.conf multipath.conf.back
2.3.1 黑名单过滤
multipath会把所有设备都加入到黑名单(devnode "*"),也就是禁止使用。所以,我们首先需要取消该设置,把配置文件修改为类似下面的内容:
devnode_blacklist {
#devnode "*"
devnode "hda"
wwid 3600508e000000000dc7200032e08af0b
}
这里禁止使用hda,也就是光驱。另外,还使用wwid限制使用本地的sda设备。
可通过下面的命令获得wwid:
[root@rac1 ~]# /sbin/scsi_id -g -u -s /block/sdf
14f504e46494c450034594d6462472d534745442d6a714841
可以通过一条shell命令,来获取系统所有磁盘的wwid:
# for i in `cat /proc/partitions ¦ awk {'print $4'} ¦grep sd`; do echo "### $i: `scsi_id --whitelist /dev/$i`"; done
在RHEL 5中,可以通过如下方式获取磁盘wwid:
# for i in `cat /proc/partitions ¦ awk {'print $4'} ¦grep sd`; do echo "### $i: `scsi_id -g -u -s /block/$i`"; done
这里有redhat的一个bug,具体参考:
scsi_id does not return WWID for /dev/sda with aacraid driver
https://bugzilla.redhat.com/show_bug.cgi?id=445696
这里要有一点要注意的,就是要获取某个设备的wwid时,必须先确保用fdisk –l等看到这个设备。 如果没有看到,是获取不到的。 这时候可以尝试把iscsi initiator 重启一下,网卡禁用启用,最后在与target 连接:iscsiadm -m node –l。
当fdsk –l能看到设备了,我们可以正常获取设备的wwid了。
[root@rac1 ~]# iscsiadm -m node -l
Logging in to [iface: iface1, target: iqn.2006-01.com.san, portal: 192.168.6.1,3260]
Logging in to [iface: iface0, target: iqn.2006-01.com.san, portal: 192.168.6.1,3260]
Login to [iface: iface1, target: iqn.2006-01.com.san, portal: 192.168.6.1,3260]: successful
Login to [iface: iface0, target: iqn.2006-01.com.san, portal: 192.168.6.1,3260]: successful
[root@rac1 ~]# fdisk –l
…
Disk /dev/sdf: 39.7 GB, 39795556352 bytes
64 heads, 32 sectors/track, 37952 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdf doesn't contain a valid partition table
Disk /dev/sdg: 39.7 GB, 39795556352 bytes
64 heads, 32 sectors/track, 37952 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
[root@rac1 ~]# /sbin/scsi_id -g -u -s /block/sdf
14f504e46494c450034594d6462472d534745442d6a714841
[root@rac1 ~]# /sbin/scsi_id -g -u -s /block/sdg
14f504e46494c450034594d6462472d534745442d6a714841
关于:scsi_id
其包含在udev程序包中,可以在multipath.conf中配置该程序来获取scsi设备的序号。通过序号,便可以判断多个路径对应了同一设备。这个是多路径实现的关键。scsi_id是通过sg驱动,向设备发送EVPD page80或page83 的inquery命令来查询scsi设备的标识。但一些设备并不支持EVPD 的inquery命令,所以他们无法被用来生成multipath设备。但可以改写scsi_id,为不能提供scsi设备标识的设备虚拟一个标识符,并输出到标准输出。
multipath程序在创建multipath设备时,会调用scsi_id,从其标准输出中获得该设备的scsi id。在改写时,需要修改scsi_id程序的返回值为0。因为在multipath程序中,会检查该直来确定scsi id是否已经成功得到。
2.3.2 编辑默认规则
不同的device-mapper-multipath或操作系统发行版,其默认的规则都有点不同,以红旗 DC Server 5.0 SP2 for x86_64为例,其path_grouping_policy默认为failover,也就是主备的方式。HDS支持多路径负载均衡,EMC CX300等只支持Failover。默认允许friendly_name,否则使用设备的wwid作为持久化名称. 我们修改默认的规则:
defaults {
udev_dir /dev
path_grouping_policy multibus
failback immediate
path_checker readsector0
no_path_retry fail
user_friendly_names yes
}
2.3.3 配置multipath.conf 文件
我们通过多session来访问target。 这样有2个设备/dev/sdf 和 /dev/sdg。 其实他们都对应一个target。 通过上面的查询知道,他们的wwid是一样的。 我们就用这个wwid,把他们配置到一起,当成一个设备。在该文件最后添加如下内容。
[root@rac1 ~]#cat /etc/multipath.conf|more
…
multipaths {
multipath {
wwid 14f504e46494c450034594d6462472d534745442d6a714841
alias rac-share
path_grouping_policy multibus
path_checker readsector0
path_selector "round-robin 0"
failback manual
rr_weight priorities
no_path_retry 5
}
}
一个target 对应一个multipath. 如果有多个target 就写多个multipath 选项。
示例:
multipaths {
multipath {
wwid 36000c29a75c29ec80344bf3d94630eab
alias vote
path_selector "round-robin 0"
failback manual
rr_weight priorities
no_path_retry 5
}
multipath {
wwid 36000c2997222805d0ad31b8995345b7c
alias db
path_grouping_policy multibus
path_selector "round-robin 0"
failback manual
rr_weight priorities
no_path_retry 5
}
}
2.3.4 重启multipathd 服务,验证配置
[root@rac1 dev]# service multipathd restart
Device /dev/sda1 not found
Command failed
Stopping multipathd daemon: [ OK ]
Starting multipathd daemon: [ OK ]
进入/dev/mapper 目录进行验证:
root@rac3 mapper]# ls -lrt /dev/mapper/*
crw------- 1 root root 10, 62 Nov 1 05:51 /dev/mapper/control
brw-rw---- 1 root disk 253, 0 Nov 1 06:20 /dev/mapper/rac-share
用 multipath –ll 命令查看到两条活跃路径,他们之间互为A/A 关系。断掉其中一根线路,那么系统自动切换到另外一条。
[root@rac3 mapper]# multipath -ll
rac-share (14f504e46494c450034594d6462472d534745442d6a714841) dm-0 OPNFILER,VIRTUAL-DISK
[size=37G][features=1 queue_if_no_path][hwhandler=0][rw]
/_ round-robin 0 [prio=2][active]
/_ 2:0:0:0 sdf 8:80 [active][ready]
/_ 3:0:0:0 sdg 8:96 [active][ready]
2.3.5 将multipathd服务设置成开机自启动
[root@rac3 mapper]# chkconfig multipathd on
2.3.6 分区或者创建PV
看到了我们刚才配置的多路径的目录。 但是这里有一个问题。 因为这个是设备创建的,还不能挂载。我们需要对个这个设备进行分区或者创建为PV.
注意,用fdisk分区并保存后,必须刷新multipath的映射表,以便其创建分区对应的设备符.
(1)分区
[root@rac3 mapper]# fdisk /dev/mapper/rac-share
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 4838.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4838, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-4838, default 4838):
Using default value 4838
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@rac3 mapper]# multipath -F --清除多路径设备缓存
[root@rac3 mapper]# multipath –v3 --重新加载
[root@rac3 mapper]# fdisk -l
……
Disk /dev/sdf: 39.7 GB, 39795556352 bytes
255 heads, 63 sectors/track, 4838 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdf1 1 4838 38861203+ 83 Linux
Disk /dev/sdg: 39.7 GB, 39795556352 bytes
255 heads, 63 sectors/track, 4838 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdg1 1 4838 38861203+ 83 Linux
Disk /dev/dm-0: 39.7 GB, 39795556352 bytes
255 heads, 63 sectors/track, 4838 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/dm-0p1 1 4838 38861203+ 83 Linux
分区之后使用fdisk –l 命令查看磁盘会看到磁盘下面已经有分区的信息了。 这时磁盘就可以mount挂载及使用了。
(2) 创建PV
要配置LVM,可以按以下步骤进行:
1. 创建和初始化物理卷(Physical Volume),通过pvcreate建立pv,即pv阶段;
2. 添加物理卷到卷组(Volume Group),使用vgcreate加入多个pv成为vg,即vg阶段;
3. 在卷组上创建逻辑卷(logical volume),使用lvcreate划分vg,成为一个或多个lv,即lv阶段;
常用命令:
# pvcreate /dev/md0 #创建PV
# pvscan
# vgcreate LVM1 /dev/md0 #创建VG
# vgdisplay LVM1
# lvcreate -L 1.5TB -n data1 LVM1 #创建LV
# lvcreate -L 325GB -n data2 LVM1 #创建LV
# lvscan #查看LV信息
# pvscan #再次查看PV信息
# vgdisplay LVM1 #再次查看VG信息
挂载命令:
#mount /dev/LVM1/data1 /data1
#mount /dev/LVM1/data2 /data2
设置开机自动挂载:
编辑/etc/fstab
/dev/LVM1/data1 /data1 ext3 defaults 2 2
/dev/LVM1/data2 /data2 ext3 defaults 2 2
示例:
[root@rac3 mapper]# pvcreate /dev/mapper/rac-share
Physical volume "/dev/mapper/rac-share" successfully created
[root@rac3 mapper]# vgcreate vg0 /dev/mapper/rac-share
Volume group "vg0" successfully created
[root@rac3 mapper]# lvcreate -L 10M -n lv1 vg0
Rounding up size to full physical extent 12.00 MB
Logical volume "lv1" created
[root@rac3 mapper]# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/lv1
VG Name vg0
LV UUID XkbDyS-btpZ-fIFA-MvBH-d4kl-hibU-RhuKu1
LV Write Access read/write
LV Status available
# open 0
LV Size 12.00 MB
Current LE 3
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
[root@rac3 mapper]# mkfs.ext3 /dev/mapper/vg0-lv1 -- 格式化
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
3072 inodes, 12288 blocks
614 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=12582912
2 block groups
8192 blocks per group, 8192 fragments per group
1536 inodes per group
Superblock backups stored on blocks:
8193
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
注意:
有部分multipath版本存在与lvm兼容的问题。当使用device-mapper设备创建lvm完成,重启后,虽然lvm仍存在,但/dev/mapper下的设备丢失。可以参考:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/230006
解决方法:
/etc/lvm/lvm.conf文件中加入:
types=["device-mapper", 1]
2.4 清除multipath 设置
操作步骤如下:
1、记录各磁盘设备的挂载点,保存fstab和df -h以及mount等输出信息。
2、比对ll /dev/mpath/mpath*和multipath -ll,找到mpath*对应存储LUN的关系,最终得到如下对应关系:
/mountdir -> (mpath1p1 -> dm-10) -> mpath1 -> dm-1 -> LUN2
3、禁用Multipath多路径软件,首先修改/etc/multipath.conf保留以下三行:
blacklist {
devnode "*"
}
通常启用Multipath后没有以上三行或者用#注释掉,若要禁用Multipath请务必先恢复以上三行。
4、删除现有路径并重新载入Multipath多路径,检查是否生效。
multipath -F 删除现有multipath生成的路径
service multipathd reload 重新载入multipath多路径
multipath -v2 查看是否还存留multipath生成的路径信息
5、关闭Multipath开机自启动,修改fstab并重启系统。
chkconfig multipathd off
init 6
6、开机用multipath -ll确认没有路径信息后,用dmsetup remove_all清除Multipath多路径信息。
multipath 安装配置的更多相关文章
- ORACLE 12C R2 RAC 安装配置指南
>> from zhuhaiqing.info ASM磁盘空间最低要求 求12C R2相比前一版本,OCR的磁盘占用需求有了明显增长.为了方便操作,设置如下:External: 1个卷x4 ...
- Hive安装配置指北(含Hive Metastore详解)
个人主页: http://www.linbingdong.com 本文介绍Hive安装配置的整个过程,包括MySQL.Hive及Metastore的安装配置,并分析了Metastore三种配置方式的区 ...
- Hive on Spark安装配置详解(都是坑啊)
个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...
- ADFS3.0与SharePoint2013安装配置(原创)
现在越来越多的企业使用ADFS作为单点登录,我希望今天的内容能帮助大家了解如何配置ADFS和SharePoint 2013.安装配置SharePoint2013这块就不做具体描述了,今天主要讲一下怎么 ...
- Hadoop的学习--安装配置与使用
安装配置 系统:Ubuntu14.04 java:1.7.0_75 相关资料 官网 下载地址 官网文档 安装 我们需要关闭掉防火墙,命令如下: sudo ufw disable 下载2.6.5的版本, ...
- redis的安装配置
主要讲下redis的安装配置,以及以服务的方式启动redis 1.下载最新版本的redis-3.0.7 到http://redis.io/download中下载最新版的redis-3.0.7 下载后 ...
- Windows环境下的NodeJS+NPM+Bower安装配置
npm作为一个NodeJS的模块管理,之前我由于没有系统地看资料所以导致安装配置模块的时候走了一大段弯路,所以现在很有必要列出来记录下.我们要先配置npm的全局模块的存放路径以及cache的路径,例如 ...
- ubuntu kylin 14.04安装配置MongoDB v2.6.1(转)
1.获取最新版本 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.1.tgz 2.解压并进入bin目录 tar zxvf mongo ...
- Django基础之安装配置
安装配置 一 MVC和MTV模式 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的 ...
随机推荐
- 【CodeForces】【148D】Bag of mice
概率DP kuangbin总结中的第9题 啊……题目给的数据只有白鼠和黑鼠的数量,所以我们只能在这个上面做(gao)文(D)章(P)了…… 明显可以用两种老鼠的数量来作为状态= = 我的WA做法: 令 ...
- iOS 委托和协议区别和联系
iOS上的协议类似于C#.Java上面的接口,他是从类中抽出来的一系列方法,但方法的实现是在实现这个协议的类中,任何实现这个协议的类都需要实现协议类中的@require方法: 委托是一种设计模式,是一 ...
- hdu 1005 Number Sequence(矩阵快速幂,找规律,模版更通用)
题目 第一次做是看了大牛的找规律结果,如下: //显然我看了答案,循环节点是48,但是为什么是48,据说是高手打表出来的 #include<stdio.h> int main() { ], ...
- this指针指向的彻底理解
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- Jmeter 快速入门教程(二)--创建简单web测试
[版权所有: whoistester.com & jmeter.cf] http://wenku.baidu.com/linkurl=9zc4VHe6vUUeMdDZPpNsRehkazZFw ...
- mapreduce程序编写(WordCount)
折腾了半天.终于编写成功了第一个自己的mapreduce程序,并通过打jar包的方式运行起来了. 运行环境: windows 64bit eclipse 64bit jdk6.0 64bit 一.工程 ...
- 李洪强iOS开发之OC[017]函数和方法的区别
// // main.m // 15 - 函数和对象的方法的区别 // // Created by vic fan on 16/7/12. // Copyright © 2016年 李洪强. ...
- lintcode:Palindrome Partitioning 分割回文串
题目: 分割回文串 给定一个字符串s,将s分割成一些子串,使每个子串都是回文串. 返回s所有可能的回文串分割方案. 样例 给出 s = "aab",返回 [ ["aa&q ...
- 缓存初解(四)---Ibatis的缓存配置+Ehcache
项目完结,整理一些技术方面的相关收获. 已经记不得EhCacheController这个实现类最早来自于那里了,总之稍加修改后非常有效果,大家就这么用了,感谢最初开源的那位兄弟.这里,主要是做个记录, ...
- 只有innoDB才允许使用外键
1.只有InnoDB引擎才允许使用外键,所以,我们的数据表必须使用InnoDB引擎. 2.注意: 1.必须使用InnoDB引擎: 2.外键必须建立索引(INDEX): 3.外键绑定关系这里使用了“ O ...