multipath多路径实验01-构建iscsi模拟环境
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-eth3
DEVICE=eth3
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.11
NETMASK=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.150
eth5 10.10.2.150
--启动新配置的两块网卡
ifup eth4
ifup eth5
这里的eth4和eth5可以想象成是和存储连接的内部网络。
服务端配置2块网卡:
--复制现有网卡配置
[root@Storage network-scripts]# cat ifcfg-eth2
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.56.99
NETMASK=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.99
eth4 10.10.2.99
--启动新配置的两块网卡
ifup eth3
ifup 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.:identifier
iqn.年年-月.單位網域名的反轉寫法 :這個分享的target名稱
所以我这里按照规范设置的名称,添加好如下配置:
<target iqn.2017-07.com.cnblogs.jyzhao:alfreddisk>
backing-store /dev/vg_storage/lv_lun1 # Becomes LUN 1
</target>
配置完成后,就启动服务和设置开机自启动:
[root@Storage ~]# service tgtd start
Starting SCSI target daemon: [ OK ]
[root@Storage ~]# chkconfig tgtd on
[root@Storage ~]# chkconfig --list|grep tgtd
tgtd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@Storage ~]# service tgtd status
tgtd (pid 1763 1760) is running...
然后查询下相关的信息,比如占用的端口、LUN信息(Type:disk):
[root@Storage ~]# netstat -tlunp |grep tgt
tcp 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 --show
Target 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 scsi
iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off
iscsid 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 host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: connection login retries (reopen_max) 5 exceeded
iscsiadm: Could not perform SendTargets discovery: encountered connection failure
[root@jyrac1 ~]#
--ping可以通
[root@jyrac1 ~]# ping 10.10.1.99
PING 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 ms
64 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 1073ms
rtt 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.99
10.10.1.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.2.99
10.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 4
drw------- 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 8
drw------- 2 root root 4096 Jul 18 12:12 10.10.1.99,3260,1
drw------- 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 node
10.10.2.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
10.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 --login
Logging 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 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdj: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
发现通过两条链路(10.10.1.*和10.10.2.*
),已经正常识别到两个大小为10G的磁盘,而实际上这两个磁盘对应到存储上的一个底层LUN。
这其实就是多路径。后续我会再根据这个环境测试multipath(Linux自带的多路径软件)的使用。
重启主机测试,这两个磁盘信息依然存在,说明iSCSI的配置没有问题。
Reference
- http://linux.vbird.org/linux_server/0460iscsi.php
multipath多路径实验01-构建iscsi模拟环境的更多相关文章
- multipath多路径实验02-配置多路径软件
multipath多路径实验02-配置多路径软件 在上一篇文章<multipath多路径实验01-构建iSCSI模拟环境>,我构建了iSCSI的模拟环境,在文章最后,已经成功配置并在主机上 ...
- RHEL7 配置iSCSI模拟环境
在之前文章<multipath多路径实验01-构建iSCSI模拟环境>中,已经介绍了如何构建iSCSI模拟环境(RHEL6),但在RHEL7中已经不适用,本文记录下新的配置方法. 环境:R ...
- linux 存储技术 部署iSCSI NFS Multipath多路径
存储技术应用存储是根据不同的应用环境通过采取合理,安全,有效的方式将数据保存到某些介质上并能保证有效的访问另一方面,它是保证数据完整安全存放的方式或行为存储就是把这两方面结合起来,向客户提供一套数据存 ...
- 二十五 存储技术与应用 iSCSI技术应用 、 udev配置 NFS网络文件系统 、 Multipath多路径 、 NFS网络文件系统 、 udev配置
1.配置iSCSI服务 服务器上要额外配置一块硬盘 服务端(proxy)安装target,并将新加的硬盘配置为iSCSI 的共享磁盘 在客户端(client)上安装initiator,挂载服务器iSC ...
- Cluster基础(一):配置iSCSI服务、编写udev规则、配置并访问NFS共享、部署Multipath多路径环境
一.配置iSCSI服务 目标: 本案例要求先搭建好一台iSCSI服务器,并将整个磁盘共享给客户端: 虚拟机添加新的磁盘 将新添加的磁盘分区并创建两个逻辑卷 逻辑卷名称分别为:/dev/myvg/isc ...
- iOS系列 基础篇 01 构建HelloWorld,剖析并真机测试
iOS基础 01 构建HelloWorld,剖析并真机测试 前言: 从控制台输出HelloWorld是我们学习各种语言的第一步,也是我们人生中非常重要的一步. 多年之后,我希望我们仍能怀有学习上进的心 ...
- Multipath多路径冗余全解
一.什么是multipath 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系.而到了有光纤组成的SAN环境,由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系.也就是说 ...
- Multipath多路径冗余全解析
一.什么是multipath 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系.而到了有光纤组成的SAN环境,由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系.也就是说 ...
- Multipath多路径冗余
一.什么是multipath 多路径冗余I/O(Multipath I/O)是指服务器通过多条物理路径连接到块存储设备. 为了避免存储链路单点故障,保证在磁盘阵列控制器切换时数据访问的不间断,多链路负 ...
随机推荐
- 全景智慧掌上城,飞入寻常百姓家——VR全景智慧城市
随着腾讯和阿里陆续将AR技术加入到新年抢红包大战之中,人们对于VR.AR未来的应用空间又多了一些想象.同传统的基于二维元素的抢红包不同,借助VR.AR的技术能够让用户获得一种更加真切的体验,这种体验相 ...
- Java Web入门学习(四)Eclipse与Maven、Tomcat整合配置
Java Web学习(四)Eclipse与Maven整合配置 一.准备工作 1.Tomcat 8.5.15 2.Maven3.5 3.Eclipse Neon.3 Release (4.6.3) 二. ...
- 构建自己的PHP框架--构建模版引擎(2)
自从来到新公司就一直很忙,最近这段时间终于稍微闲了一点,赶紧接着写这个系列,感觉再不写就烂尾了. 之前我们说到,拿到{{ $name }}这样一段内容时,我们只需要将它转化成<?php echo ...
- Android控件的使用
1. RadioButton (单选按钮) 嵌入到RadioGroup中实现单选效果 android:checkedButton="radio的id值" int getchecke ...
- js的for循环闭包问题
一个简单的例子,如果想循环输出数组中的每一个数值我们可以利用for循环来输出例如: <script type="text/javascript"> var arr=[& ...
- tomcat之 JDK8.0安装、tomcat-8.5.15安装
前言:JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品.自从Java推出以来,JDK已经成为使用最广泛的Java SDK. JDK是整个Ja ...
- [1] Entity Framework / Code First
CodeFirst是EntityFramework的一种技术手段,因为传统编程方式都是先建立数据库,然后根据数据库模型为应用程序建模,再进行开发:CodeFirst从字面上理解就是代码先行,先在程序中 ...
- vijos1325 桐桐的糖果计划
Description 桐桐是一个快乐的小朋友,他生活中有许多许多好玩的事,让我们一起来看看吧-- 桐桐很喜欢吃棒棒糖.他家处在一大堆糖果店的附近. 但是,他们家的区域经常出现塞车.塞人等情况,这导致 ...
- Qlik报表开发见解
因为项目需要,最近去做了Qlik Sense报表开发,学习了Qlik报表的开发方法和一些基础的开发模式,以下是我对Qlik报表开发的一些见解,个人水平有限,欢迎大神指导. 1.Qlik Sense的函 ...
- PHP设计模式:简单工厂
示例代码详见https://github.com/52fhy/design_patterns 简单工厂 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例. 也就是使用的 ...