MPIO.docx
《MPIO.docx》由会员分享,可在线阅读,更多相关《MPIO.docx(17页珍藏版)》请在冰豆网上搜索。
MPIO
登录
linux环境下iSCSI及MPIO配置指南
∙首页
∙最新改动
∙创建网页
∙网页分类
∙查找网页
∙标题索引
∙随机网页
∙网页流量
∙帮助目录
∙帮助索引
∙linux环境下iSCSI及MPIO配置指南
∙编辑
∙备注
∙信息
∙附件
∙
窗体顶端
窗体底端
目录
1.简介
2.准备工具
3.环境配置
4.使用iscsiadm连接target
5.使用multipth建立设备映射
6.MPIO测试
7.参考文档及注解
简介
∙本文介绍在linux(ubuntu、redhat/centos)环境下通过多路径(multipath)连接iSCSI设备,并配置设备映射实现MPIO功能。
∙MPIO是利用多条实体存取通道,在服务器(iSCSIInitiator段)与存储设备(iSCSITarget端)之间建立逻辑通道,可透过轮替的存取动作,避免单一实体通道中断时,连带导致存取中断;或是平衡多个实体通道间的传输负载,避免传输负荷集中在单一实体通道上。
也就是说,允许1个iSCSIInitiator透过多个Session连入同1个iSCSITarget设备,以便利用多网卡或iSCSIHBA启用负载平衡与故障失效切换机制,也可称作MultipleSessionsperInitiator。
准备工具
∙ubuntu:
oopen-iscsi-Highperformance,transportindependentiSCSIimplementation
oopen-iscsi-utils-iSCSIinitiatioradministrativeutility
omultipath-tools-maintainmultipathblockdeviceaccess
∙redhat/centos:
oiscsi-initiator-utils.i386:
iSCSIdaemonandutilityprograms
odevice-mapper-multipath.i386:
用device-mapper管理多路径设备的工具。
∙ubuntu下使用apt-get安装,redhat/centos下使用yum安装。
∙ubuntu和redhat/centos下的工具略有不同,但使用方法相同。
都是通过/etc/init.d目录下的脚本启动、停止。
配置命令都是iscsiadm和multipath。
∙不同之处,iscsi的脚本不同,ubuntu下是open-iscsi,redhat/centos下是iscsi和iscsid。
redhat/centos下探测到target的同时设置了开机自动登录,而ubuntu不会设置自动登录。
∙以下操作都在CentOS5.4下进行。
环境配置
∙target:
MS1000I-G2
o双网口eth0192.168.100.190eth1192.168.101.190
o4块盘做raid5,映射一个20G的用户数据卷
∙initiator:
CentOS5.4安装在win2003的vm虚拟机上,双网口分别桥接在win2003的两个网口上
o双网口eth0192.168.100.199eth1192.168.101.199
o只有一块本地硬盘
∙四个网口通过交换机连接组成2条链路。
如果四个网口配置在同一网段,就会有4条链路。
使用iscsiadm连接target
∙命令帮助
∙[root@localhost~]#iscsiadm-h
∙iscsiadm-mdiscovery[-hV][-ddebug_level][-Pprintlevel][-ttype-pip:
port-IifaceN...[-l]]|[-pip:
port][-ooperation][-nname][-vvalue]
∙iscsiadm-mnode[-hV][-ddebug_level][-Pprintlevel][-Lall,manual,automatic][-Uall,manual,automatic][-S][[-Ttargetname-pip:
port-IifaceN][-l|-u|-R|-s]][[-ooperation][-nname][-vvalue]]
∙iscsiadm-msession[-hV][-ddebug_level][-Pprintlevel][-rsessionid|sysfsdir[-R|-u|-s][-ooperation][-nname][-vvalue]]
∙iscsiadm-miface[-hV][-ddebug_level][-Pprintlevel][-Iifacename][[-ooperation][-nname][-vvalue]]
∙iscsiadm-mfw[-l]
∙iscsiadm-mhost[-Pprintlevel][-Hhostno]
iscsiadm-kpriority
∙iface介绍
oiface就是initiator本地的接口,用来探测,连接target。
默认存在两个iface接口,default和iser。
default使用tcp协议。
iser是使用iser协议(注1)。
iface中可配置的参数参见下面命令的输出结果。
不指定iface时会逐个使用所有可用的iface接口。
自定义iface接口后可灵活的通过多路径连接target。
比如上面环境配置的说的四个网口配置在同一网段会有4条链路,就需要自定义两个iface接口,各使用一个网口的ip(同时也需要配置高级路由保证两个网口独立工作)。
否则默认使用default接口,只会使用一个ip。
o相应的,target端有portal接口,就是网络监听的端口ip:
port,默认会监听所有ip的3260端口。
(参见下面'探测target'章节)
o查看系统预定义的接口
o[root@localhost~]#iscsiadm-miface
odefaulttcp,,,,
oiseriser,,,,
o
o[root@localhost~]#iscsiadm-miface-Idefault
o#BEGINRECORD2.0-871
oiface.iscsi_ifacename=default
o_ifacename=
oiface.ipaddress=
oiface.hwaddress=
oiface.transport_name=tcp
oiface.initiatorname=
o#ENDRECORD
o
o[root@localhost~]#iscsiadm-miface-Iiser
o#BEGINRECORD2.0-871
oiface.iscsi_ifacename=iser
o_ifacename=
oiface.ipaddress=
oiface.hwaddress=
oiface.transport_name=iser
oiface.initiatorname=
#ENDRECORD
o下面演示了如何自定义、修改、删除iface接口。
o[root@localhost~]#iscsiadm-miface-Iiface0-onew
oNewinterfaceiface0added
o
o[root@localhost~]#iscsiadm-miface-Iiface0-oupdate-n_ifacename-veth0
oiface0updated.
o
o[root@localhost~]#iscsiadm-miface-Iiface0-oupdate-niface.ipaddress-v192.168.100.199
oiface0updated.
o
o[root@localhost~]#iscsiadm-miface-Iiface0
o#BEGINRECORD2.0-871
oiface.iscsi_ifacename=iface0
o_ifacename=eth0
oiface.ipaddress=192.168.100.199
oiface.hwaddress=
oiface.transport_name=tcp
oiface.initiatorname=
o#ENDRECORD
o
o[root@localhost~]#iscsiadm-miface-Iiface0-odelete
iface0unboundanddeleted.
∙探测target
o测试环境中网口设置在不同网段,不需要自定义iface接口,targetip使用其中任意一个即可。
o[root@localhost~]#iscsiadm-mdiscovery-tsendtargets-p192.168.100.190
o192.168.100.190:
3260,1iqn.2010-06.iscsiraid:
raid-271800034C:
default-target
192.168.101.190:
3260,1iqn.2010-06.iscsiraid:
raid-271800034C:
default-target
o返回了两条记录,同一个target名字,两个portal接口。
使用下面方式查看更清晰,本地iface接口是default。
o[root@localhost~]#iscsiadm-mnode-P1
oTarget:
iqn.2010-06.iscsiraid:
raid-271800034C:
default-target
oPortal:
192.168.100.190:
3260,1
oIfaceName:
default
oPortal:
192.168.101.190:
3260,1
IfaceName:
default
o还可以查看更详细的信息(因输出太多,一部分没有粘出来)
o[root@localhost~]#iscsiadm-mnode-Tiqn.2010-06.iscsiraid:
raid-271800034C:
default-target
o#BEGINRECORD2.0-871
onode.name=iqn.2010-06.iscsiraid:
raid-271800034C:
default-target
onode.tpgt=1
onode.startup=automatic
oiface.hwaddress=
oiface.ipaddress=
oiface.iscsi_ifacename=default
o_ifacename=
oiface.transport_name=tcp
oiface.initiatorname=
onode.discovery_address=192.168.100.190
onode.discovery_port=3260
onode.discovery_type=send_targets
o......
onode.conn[0].address=192.168.100.190
onode.conn[0].port=3260
onode.conn[0].startup=manual
o......
o#ENDRECORD
o#BEGINRECORD2.0-871
onode.name=iqn.2010-06.iscsiraid:
raid-271800034C:
default-target
onode.tpgt=1
onode.startup=automatic
oiface.hwaddress=
oiface.ipaddress=
oiface.iscsi_ifacename=default
o_ifacename=
oiface.transport_name=tcp
oiface.initiatorname=
onode.discovery_address=192.168.100.190
onode.discovery_port=3260
onode.discovery_type=send_targets
o......
onode.conn[0].address=192.168.101.190
onode.conn[0].port=3260
onode.conn[0].startup=manual
o......
#ENDRECORD
也是返回两条记录,除了node.conn[0].address是target的2个ip外,其余都相同。
如果使用-p指定其中一个ip,就只返回该ip的那条记录。
onode.startup的值为automatic,开机自动登录,如果不需要自动登录,将其值设置为manual。
不指定ip时两条记录都会修改,只改一条的话需要指定相应的ip,如下所示:
o[root@localhost~]#iscsiadm-mnode-Tiqn.2010-06.iscsiraid:
raid-271800034C:
default-target-p192.168.100.190-oupdate-nnode.startup-vmanual
o
o[root@localhost~]#iscsiadm-mnode-Tiqn.2010-06.iscsiraid:
raid-271800034C:
default-target-p192.168.100.190
o#BEGINRECORD2.0-871
onode.name=iqn.2010-06.iscsiraid:
raid-271800034C:
default-target
onode.tpgt=1
onode.startup=manual
oiface.hwaddress=
oiface.ipaddress=
oiface.iscsi_ifacename=default
o_ifacename=
oiface.transport_name=tcp
oiface.initiatorname=
onode.discovery_address=192.168.100.190
onode.discovery_port=3260
onode.discovery_type=send_targets
o......
onode.conn[0].address=192.168.100.190
onode.conn[0].port=3260
onode.conn[0].startup=manual
o......
#ENDRECORD
∙登录target
∙[root@localhost~]#iscsiadm-mnode-Tiqn.2010-06.iscsiraid:
raid-271800034C:
default-target-l
∙Logginginto[iface:
default,target:
iqn.2010-06.iscsiraid:
raid-271800034C:
default-target,portal:
192.168.100.190,3260]
∙Logginginto[iface:
default,target:
iqn.2010-06.iscsiraid:
raid-271800034C:
default-target,portal:
192.168.101.190,3260]
∙Loginto[iface:
default,target:
iqn.2010-06.iscsiraid:
raid-271800034C:
default-target,portal:
192.168.100.190,3260]:
successful
∙Loginto[iface:
default,target:
iqn.2010-06.iscsiraid:
raid-271800034C:
default-target,portal:
192.168.101.190,3260]:
successful
∙
∙[root@localhost~]#fdisk-l
∙
∙Disk/dev/sda:
21.4GB,21474836480bytes
∙255heads,63sectors/track,2610cylinders
∙Units=cylindersof16065*512=8225280bytes
∙
∙DeviceBootStartEndBlocksIdSystem
∙/dev/sda1*11310439183Linux
∙/dev/sda214261020860402+8eLinuxLVM
∙Note:
sectorsizeis4096(not512)
∙
∙Disk/dev/sdb:
20.0GB,20000014336bytes
∙64heads,32sectors/track,2384cylinders
∙Units=cylindersof2048*4096=8388608bytes
∙
∙Disk/dev/sdbdoesn'tcontainavalidpartitiontable
∙Note:
sectorsizeis4096(not512)
∙
∙Disk/dev/sdc:
20.0GB,20000014336bytes
∙64heads,32sectors/track,2384cylinders
∙Units=cylindersof2048*4096=8388608bytes
∙
Disk/dev/sdcdoesn'tcontainavalidpartitiontable
o没有指定target的ip,会自动登录到target的所有portal接口。
可以通过session命令看到详细的连接信息。
o使用fdisk查看多出来2块20G的硬盘,在target端对应同一个用户数据卷,每块硬盘代表一个链路,将2块硬盘映射为一块就实现了MPIO。
使用multipth建立设备映射
∙命令帮助(详细介绍请参见参考文档'MultipathUsageGuide')
∙[root@localhost~]#multipath-h
∙multipath-toolsv0.4.7(03/12,2006)
∙Usage:
multipath[-vlevel][-d][-h|-l|-ll|-f|-F|-r]
∙[-pfailover|multibus|group_by_serial|group_by_prio]
∙[device]
∙
∙-vlevelverbositylevel
∙0nooutput
∙1printcreateddevmapnamesonly
∙2defaultverbosity
∙3printdebuginformation
∙-hprintthisusagetext
∙-bfilebindingsfilelocation
∙-ddryrun,donotcreateorupdatedevmaps
∙-lshowmultipathtopology(sysfsandDMinfo)
∙-llshowmultipathtopology(maximuminfo)
∙-fflushamultipathdevicemap
∙-Fflushallmultipathdevicemaps
∙-rforcedevmapreload
∙-ppolicyforceallmapstospecifiedpolicy:
∙failover1pathperprioritygroup
∙multibusallpathsin1prioritygroup
∙group_by_serial1prioritygroupperserial
∙group_by_prio1prioritygroupperprioritylvl
∙group_by_node_name1prioritygrouppertargetnode
∙
∙devicelimitscopetothedevice'smultipath
∙(udev-style$DEVNAMEreference,eg/dev/sdb
ormajor:
minororadevicemapname)
∙建立默认设备映射
o直接执行multipath就可以自动检测所有设备,将多个相同的设备映射为一个设备。
新设备在/dev/mapper/目录下。
o[root@localhost~]#multipath
o