博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
multipath多路径实验01-构建iSCSI模拟环境
阅读量:5885 次
发布时间:2019-06-19

本文共 8640 字,大约阅读时间需要 28 分钟。

multipath多路径实验01-构建iSCSI模拟环境

前几天跟同事网上闲聊技术,吐槽之前自己没有配置过多路径的经历,虽然多路径的配置过程很简单,职责划分也应是主机或存储工程师来搞定,DBA只需要直接拿来用,但这样总感觉少了些踏实感。

本着学习的心态,在虚拟环境下模拟,来做一个多路径的实验。
本文主要描述使用iscsi模拟存储划出的1个LUN,最终由两条链路连接到主机,显示为两个磁盘的场景。为后续配置multipath提供前置环境。

1.模拟主机环境

首先虚拟一个linux服务器,用作搭建iSCSI服务器。然后客户端直接就使用我之前的一套RAC环境的第1个节点,在这里就相当于普普通通的一个iSCSI客户端。

要求如下:

客户端(192.168.56.150),需要新增配置两块网卡;
服务端(192.168.56.99),需要新增配置两块网卡.

这里实际使用Virtual Box给每台机器新增两个内部网络即可。

客户端配置2块网卡:

--复制现有网卡配置[root@jyrac1 network-scripts]# cat ifcfg-eth3DEVICE=eth3TYPE=EthernetONBOOT=yesBOOTPROTO=staticIPADDR=10.10.10.11NETMASK=255.255.255.0[root@jyrac1 network-scripts]# cp ifcfg-eth3 ifcfg-eth4[root@jyrac1 network-scripts]# cp ifcfg-eth3 ifcfg-eth5--修改DEVICE名称和IPADDR信息,其他不变eth4 10.10.1.150eth5 10.10.2.150--启动新配置的两块网卡ifup eth4ifup eth5

这里的eth4和eth5可以想象成是和存储连接的内部网络。

服务端配置2块网卡:

--复制现有网卡配置[root@Storage network-scripts]# cat ifcfg-eth2 DEVICE=eth2TYPE=EthernetONBOOT=yesBOOTPROTO=staticIPADDR=192.168.56.99NETMASK=255.255.255.0[root@Storage network-scripts]# cp ifcfg-eth2 ifcfg-eth3[root@Storage network-scripts]# cp ifcfg-eth2 ifcfg-eth4--修改DEVICE名称和IPADDR信息,其他不变eth3 10.10.1.99eth4 10.10.2.99--启动新配置的两块网卡ifup eth3ifup eth4

测试服务端和客户端的IP互通没问题。

2.准备软件环境

各自安装scsi相关的软件包。

引用鸟哥的iSCSI搭建说明:

scsi-target-utils:用來將 Linux 系統模擬成為 iSCSI target 的功能;

iscsi-initiator-utils:掛載來自 target 的磁碟到 Linux 本機上。

这样我们就知道服务端需要安装scsi-target-utils这个包,客户端需要安装iscsi-initiator-utils这个包。

现在来直接yum安装对应软件,如果yum本地源配置有问题,可以参考之前文章:
配置yum本地源:http://www.cnblogs.com/jyzhao/p/3938290.html

--服务端

yum安装scsi-target-utils

yum install scsi-target-utils

--客户端

yum安装iscsi-initiator-utils

yum install iscsi-initiator-utils

3.模拟存储加盘

--服务端操作

填加一个50G的盘,实际就是用来模拟存储新增实际的一块盘。我这里选择固定大小存储50G。

我这里新增加的盘显示为/dev/sdb,我将它创建成lvm,并先分出一个10g的lv,供后续使用。

[root@Storage ~]# pvcreate /dev/sdb  Physical volume "/dev/sdb" successfully created[root@Storage ~]# vgcreate vg_storage /dev/sdb  Volume group "vg_storage" successfully created[root@Storage ~]# lvcreate -L 10g -n lv_lun1 vg_storage  Logical volume "lv_lun1" created

lvm的信息:

[root@Storage ~]# pvs  PV         VG           Fmt  Attr PSize  PFree   /dev/sda2  vg_linuxbase lvm2 a--  29.51g     0   /dev/sdb   vg_storage   lvm2 a--  50.00g 40.00g[root@Storage ~]# vgs  VG           #PV #LV #SN Attr   VSize  VFree   vg_linuxbase   1   2   0 wz--n- 29.51g     0   vg_storage     1   1   0 wz--n- 50.00g 40.00g[root@Storage ~]# lvs  LV      VG           Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert  lv_root vg_linuxbase -wi-ao---- 27.54g                                               lv_swap vg_linuxbase -wi-ao----  1.97g                                               lv_lun1 vg_storage   -wi-a----- 10.00g         [root@Storage ~]# lvscan  ACTIVE            '/dev/vg_storage/lv_lun1' [10.00 GiB] inherit  ACTIVE            '/dev/vg_linuxbase/lv_root' [27.54 GiB] inherit  ACTIVE            '/dev/vg_linuxbase/lv_swap' [1.97 GiB] inherit

从上面LVM相关信息的输出可以看到,我这里新建的lv已经是正常状态,可以理解成为模拟存储上划分出的一个10g大小的LUN

4.配置iSCSI服务端

iSCSI服务端主要配置文件:/etc/tgt/targets.conf

iSCSI 有一套自己分享 target 檔名的定義,基本上,藉由 iSCSI 分享出來的 target 檔名都是以 iqn 為開頭,意思是:『iSCSI Qualified Name (iSCSI 合格名稱)』的意思(註5)。那麼在 iqn 後面要接啥檔名呢?通常是這樣的:

iqn.yyyy-mm.

所以我这里按照规范设置的名称,添加好如下配置:

backing-store /dev/vg_storage/lv_lun1 # Becomes LUN 1

配置完成后,就启动服务和设置开机自启动:

[root@Storage ~]# service tgtd startStarting SCSI target daemon: [  OK  ][root@Storage ~]# chkconfig tgtd on[root@Storage ~]# chkconfig --list|grep tgtdtgtd            0:off   1:off   2:on    3:on    4:on    5:on    6:off[root@Storage ~]# service tgtd statustgtd (pid 1763 1760) is running...

然后查询下相关的信息,比如占用的端口、LUN信息(Type:disk):

[root@Storage ~]# netstat -tlunp |grep tgttcp        0      0 0.0.0.0:3260                0.0.0.0:*                   LISTEN      1760/tgtd           tcp        0      0 :::3260                     :::*                        LISTEN      1760/tgtd           [root@Storage ~]# tgt-admin --showTarget 1: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk    System information:        Driver: iscsi        State: ready    I_T nexus information:    LUN information:        LUN: 0            Type: controller            SCSI ID: IET     00010000            SCSI SN: beaf10            Size: 0 MB, Block size: 1            Online: Yes            Removable media: No            Prevent removal: No            Readonly: No            Backing store type: null            Backing store path: None            Backing store flags:         LUN: 1            Type: disk            SCSI ID: IET     00010001            SCSI SN: beaf11            Size: 10737 MB, Block size: 512            Online: Yes            Removable media: No            Prevent removal: No            Readonly: No            Backing store type: rdwr            Backing store path: /dev/vg_storage/lv_lun1            Backing store flags:     Account information:    ACL information:        ALL

5.配置iSCSI客户端

确认开机启动项设置开启:

[root@jyrac1 ~]#  chkconfig --list|grep scsiiscsi           0:off   1:off   2:off   3:on    4:on    5:on    6:offiscsid          0:off   1:off   2:off   3:on    4:on    5:on    6:off

使用iscsiadm命令扫描服务端的LUN

iscsiadm -m discovery -t sendtargets -p 10.10.1.99

--报错[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.1.99[  OK  ] iscsid: [  OK  ]iscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: connection login retries (reopen_max) 5 exceedediscsiadm: Could not perform SendTargets discovery: encountered connection failure[root@jyrac1 ~]# --ping可以通[root@jyrac1 ~]# ping 10.10.1.99PING 10.10.1.99 (10.10.1.99) 56(84) bytes of data.64 bytes from 10.10.1.99: icmp_seq=1 ttl=64 time=0.789 ms64 bytes from 10.10.1.99: icmp_seq=2 ttl=64 time=0.536 ms^C--- 10.10.1.99 ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 1073msrtt min/avg/max/mdev = 0.536/0.662/0.789/0.129 ms

上面这个报错是因为scsi服务端的主机防火墙没有关闭,端口受到限制,关闭防火墙后,再尝试,就可以正常发现如下内容:

[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.1.9910.10.1.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.2.9910.10.2.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk

查看/var/lib/iscsi/nodes/下的文件:

[root@jyrac1 ~]# ll -R /var/lib/iscsi/nodes//var/lib/iscsi/nodes/:total 4drw------- 4 root root 4096 Jul 18 12:13 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk:total 8drw------- 2 root root 4096 Jul 18 12:12 10.10.1.99,3260,1drw------- 2 root root 4096 Jul 18 12:13 10.10.2.99,3260,1/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk/10.10.1.99,3260,1:total 4-rw------- 1 root root 1822 Jul 18 12:12 default/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk/10.10.2.99,3260,1:total 4-rw------- 1 root root 1822 Jul 18 12:13 default

查看iscsiadm -m node

[root@jyrac1 ~]# iscsiadm -m node10.10.2.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk10.10.1.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk

iscsiadm -m node -T target名称 --login

iscsiadm -m node -T iqn.2017-07.com.cnblogs.jyzhao:alfreddisk --login

[root@jyrac1 ~]# iscsiadm -m node -T iqn.2017-07.com.cnblogs.jyzhao:alfreddisk --loginLogging in to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.2.99,3260] (multiple)Logging in to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.1.99,3260] (multiple)Login to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.2.99,3260] successful.Login to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.1.99,3260] successful.

最后查询 fdisk -l结果:

省略之前无关内容...Disk /dev/sdi: 10.7 GB, 10737418240 bytes64 heads, 32 sectors/track, 10240 cylindersUnits = cylinders of 2048 * 512 = 1048576 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/sdj: 10.7 GB, 10737418240 bytes64 heads, 32 sectors/track, 10240 cylindersUnits = cylinders of 2048 * 512 = 1048576 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000

发现通过两条链路(10.10.1.*和10.10.2.*),已经正常识别到两个大小为10G的磁盘,而实际上这两个磁盘对应到存储上的一个底层LUN

这其实就是多路径。后续我会再根据这个环境测试multipath(Linux自带的多路径软件)的使用。
重启主机测试,这两个磁盘信息依然存在,说明iSCSI的配置没有问题。

Reference

  • http://linux.vbird.org/linux_server/0460iscsi.php
你可能感兴趣的文章
斯坦福凸优化课程Video2.4_
查看>>
阿里AI设计师一秒出图,小撒连连惊呼,真相是...
查看>>
python之Unittest单元测试框架
查看>>
Spring学习笔记
查看>>
C# Lambda表达式详解,及Lambda表达式树的创建
查看>>
基于Docker搭建Jumpserver堡垒机操作实践
查看>>
vs2017开发IOS(vs2017 xamarin 连接mac)
查看>>
聊聊 scala 的模式匹配
查看>>
百度L4量产杀入乘用车后院,李彦宏首谈“车路城”终极形态
查看>>
Tornado 在模板里使用 Python 语句
查看>>
飞天2.0 | 万物智能的基础服务
查看>>
Android 拦截WebView加载URL,控制其加载CSS、JS资源
查看>>
Confluence 6 导入 SSL 证书和问题解决
查看>>
采用个hook技术对writefile函数进行拦截(2)
查看>>
马化腾可能不需要知乎,但知乎需要马化腾
查看>>
uC/OS-II源码分析(三)
查看>>
什么是SEM和付费搜索营销?
查看>>
Linux下安装Tomcat 8.0.53
查看>>
10月12日云栖精选夜读 | 程序员工资那么高,为什么会找不到女朋友?
查看>>
轻松搞定RabbitMQ3:消息应答与消息持久化
查看>>