您的位置:首页 > 运维架构 > Linux

Linux ISCSI服务器搭建

2017-08-27 22:14 501 查看
Linux ISCSI服务器搭建

1. iscsi服务器简述

iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。iSCSI:Internet 小型计算机系统接口 (iSCSI:Internet SmallComputer System Interface)。Internet 小型计算机系统接口(iSCSI)是一种基于 TCP/IP的协议,用来建立和管理 IP 存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。SAN 使得 SCSI 协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行。SCSI 结构基于客户/服务器模式,其通常应用环境是:设备互相靠近,并且这些设备由 SCSI 总线连接。iSCSI 的主要功能是在 TCP/IP 网络上的主机系统(启动器 initiator)和存储设备(目标器 target)之间进行大量数据的封装和可靠传输过程。此外,iSCSI 提供了在 IP 网络封装 SCSI 命令,且运行在 TCP 上。iSCSI的工作过程:当iSCSI主机应用程序发出数据读写请求后,操作系统会生成一个相应的SCSI命令,该SCSI命令在iSCSI initiator层被封装成ISCSI消息包并通过TCP/IP传送到设备侧,设备侧的iSCSI target层会解开iSCSI消息包,得到SCSI命令的内容,然后传送给SCSI设备执行;设备执行SCSI命令后的响应,在经过设备侧iSCSI target层时被封装成ISCSI响应PDU,通过TCP/IP网络传送给主机的ISCSI initiator层,iSCSI initiator会从ISCSI响应PDU里解析出SCSI响应并传送给操作系统,操作系统再响应给应用程序。

2. iscsi服务器搭建

2.1 物理环境准备

Server
172.20.100.100
4C 8G
client1
172.20.100.101
4C 8G
client2
172.20.100.202
4C 8G

2.1.1 Server服务器配置

Server服务器三块硬盘,硬盘1是系统盘,硬盘2、硬盘3分别作为ISCSI服务端,提供给客户端访问


2.1.2 Client服务器配置





2.2 Server端配置

2.2.1 安装scsi-target-utils服务器包

[root@Server ~]# yum list |grep scsi*




[root@Server ~]# yum install scsi-target-utils




安装完毕后,查看scsi-target-utils具体安装位置
[root@Server ~]# rpm -ql scsi-target-utils



2.2.2 设置服务开机自启动

[root@Server ~]# service tgtd start
[root@Server ~]# chkconfig tgtd on
[root@Server ~]# netstat -tunpl |grep 3260



2.2.3 tgtadm命令常用选项

NAME
tgtadm - Linux SCSI TargetAdministration Utility

SYNOPSIS
tgtadm [OPTIONS]... [-C --control-port<port>] [-L --lld <driver>]
[-o --op<operation>] [-m --mode <mode>] [-t --tid <id>]
[-T --targetname<targetname>] [-Y --device-type <type>]
[-l --lun<lun>] [-b --backing-store <path>]
[-E --bstype <type>][-I --initiator-address <address>]
[-Q --initiator-name<name>] [-n --name <parameter>]
[-v --value<value>]
[-P --params<param=value[,param=value...]>] [-F --force]
[-h --help]

tgtadm常用于管理三类对象:
target:创建new,删除,查看

lun:创建,查看,删除

account:创建用户,绑定,解绑定,删除,查看 常用选项:-L: --lld <driver> <driver> iscsi-m:--mode <mode> <mode>:target,logicalunit等-o:--op<operation> <operation>:new,show,delete,bind,unbind-t:--tid <id>:指定target的ID-T:--targetname<targetname>:指定target的名称 Target的命名机制:为了保证全局唯一,命名要遵循iqn规则 Iqn:iqn.yyyy-mm.reverse_domain.STRING[:substring] Iqn.2017-08.com.test.web:server1-l: --lun <lun>:指定LUN的号码-b: --backing-store<path>:关联到某指定LUN上的后端存储设备,可以是磁盘,分区,建议使用磁盘-I –initiator-address<address>:指定授权访问某target的IP地址:

语法:tgtadm--lld [driver] --op [operation] --mode [mode] [OPTION]...

(1)、添加一个新的 target 且其ID为 [id], 名字为 [name].
--lld[driver] --op new --mode target --tid=[id] --targetname [name]

如:创建一个target
tgtadm --lld iscsi --op new --mode target --tid 1 –T iqn.2013-05.com.magedu:tsan.disk1

(2)、显示所有或某个特定的target:
--lld[driver] --op show --mode target [--tid=[id]]

如:显示所有
tgtadm--lld iscsi --op show --mode target

(3)、向某ID为[id]的设备上添加一个新的LUN,其号码为[lun],且此设备提供给initiator使用。[path]是某“块设备”的路径,此块设备也可以是raid或lvm设备。lun0已经被系统预留。
--lld[driver] --op new --mode=logicalunit --tid=[id] --lun=[lun] --backing-store[path]

如:显示刚创建的target
tgtadm--lld iscsi --op show --mode target --tid 1

(4)、删除ID为[id]的target:
--lld[driver] --op delete --mode target --tid=[id]

如:创建LUN,号码为1
tgtadm--lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sda1

(5)、删除target [id]中的LUN[lun]:
-lld[driver] --op delete --mode=logicalunit --tid=[id] --lun=[lun]

如:开放给192.168.0.0/24网络中的主机访问(其中的-I相当于--initiator-address):
tgtadm--lld iscsi --op bind --mode target --tid 1 -I 192.168.85.0/24

(6)、定义某target的基于主机的访问控制列表,其中[address]表示允许访问此target的initiator客户端的列表
--lld[driver] --op bind --mode=target --tid=[id] --initiator-address=[address]

如:Create anew account
tgtadm--lld iscsi --op new --mode account --user administrator --password 123456

tgtadm--lld iscsi --op show --mode account

Assignthis account to a target:
tgtadm--lld iscsi --op bind --mode account --tid 1 --user administrator

tgtadm--lld iscsi --op show --mode target

(7)、解除target [id]的访问控制列表中[address]的访问控制权限:
--lld[driver] --op unbind --mode=target --tid=[id] --initiator-address=[address]

如:Set up anoutgoing account. First, you need to create a new account like the previousexample

tgtadm--lld iscsi --op new --mode account --user abc --password 123456

tgtadm--lld iscsi --op show --mode account

tgtadm--lld iscsi --op bind --mode account --tid 1 --user abc --outgoing

tgtadm--lld iscsi --op show --mode target

2.2.4 创建target

1. 创建一个target

[root@Server ~]# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2017-08.com.test.web:server1






2. 显示所有target

[root@Server ~]# tgtadm --lld iscsi --op show --mode target




3. 创建LUN1

[root@Server ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb
[root@Server ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 2 -b /dev/sdc









4. 开放172.20.0.0/16网络中的主机访问权限

[root@Server ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address 172.20.0.0/16







3. iscsi客户端配置

3.1 安装iscsi-initiator-utils

[root@client1 ~]# yum install iscsi-initiator-utils
[root@client1 ~]# rpm -ql iscsi-initiator-utils







3.2 更改客户端iqn名称

[root@client1 ~]# cat /etc/iscsi/initiatorname.iscsi




[root@client1 ~]# echo "InitiatorName=iqn.2017-08.com.test.web:client1" > /etc/iscsi/initiatorname.iscsi
[root@client1 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2017-08.com.test.web:client1







生成iscsi名称,这个名称后面字符串唯一
[root@client1 ~]# iscsi-iname -p iqn.2018-08.com.test
iqn.2018-08.com.test:df34e78608a




3.3 客户端常用命令选项

# yuminstall iscsi-initiator-utils

# echo"InitiatorName=`iscsi-iname -p iqn.2013-05.com.magedu`" >/etc/iscsi/initiatorname.iscsi
# echo"InitiatorAlias=initiator1" >> /etc/iscsi/initiatorname.iscsi

iscsiadm工具的使用:

iscsiadm是个模式化的工具,其模式可通过-m或--mode选项指定,常见的模式有discovery、node、fw、session、host、iface几个,如果没有额外指定其它选项,则discovery和node会显示其相关的所有记录;session用于显示所有的活动会话和连接,fw显示所有的启动固件值,host显示所有的iSCSI主机,iface显示/var/lib/iscsi/ifaces目录中的所有ifaces设定。

iscsiadm-m discovery [ -d debug_level ] [ -P printlevel ] [ -I iface -t type -p ip:port[ -l ] ]
iscsiadm-m node [ -d debug_level ] [ -P printlevel ] [ -L all,manual,automatic ] [ -Uall,manual,automatic ] [ [ -T tar-getname -p ip:port -I iface ] [ -l | -u | -R| -s] ] [ [ -o operation ]

-d,--debug=debug_level 显示debug信息,级别为0-8;
-l,--login
-t,--type=type 这里可以使用的类型为sendtargets(可简写为st)、slp、fw和 isns,此选项仅用于discovery模式,且目前仅支持st、fw和isns;其中st表示允许每个iSCSI target发送一个可用target列表给initiator;
-p,--portal=ip[:port] 指定target服务的IP和端口;
-m,--mode op 可用的mode有discovery, node, fw, host iface 和 session
-T,--targetname=targetname 用于指定target的名字
-u,--logout
-o,--op=OPEARTION:指定针对discoverydb数据库的操作,其仅能为new、delete、update、show和nonpersistent其中之一;
-I,--interface=[iface]:指定执行操作的iSCSI接口,这些接口定义在/var/lib/iscsi/ifaces中;

#iscsiadm -m discovery -t sendtargets -p 172.20.100.100
# iscsiadm-m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100:3260 -l

#iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100:3260 -u
#iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100:3260 -odelete

查看会话相关信息:
#iscsiadm -m session -s

挂载时使用_netdev作为选项

创建服务端谁所需要的帐号,并实现单方向的认证:

1、在target端创建帐号christina,并为其授予访问某tid的权限:
#tgtadm --lld iscsi --op new --mode account --user mageedu --password 123456

接下来还要将用户与某target进行绑定:
#tgtadm --lld iscsi --op bind --mode account --tid 1 --user mageedu

#tgtadm --lld iscsi --op show --mode account

2、编辑initiator端主配置文件,配置客户端登录target时使用此帐号和密码:
# vim/etc/iscsi/iscsid.conf

取消如下项的注释:
#node.session.auth.authmethod = CHAP
#node.session.auth.username = username
# node.session.auth.password= password

而后,将后两项的用户名密码设置为target端设置的用户名和密码:
node.session.auth.username= mageedu
node.session.auth.password= 123456

哪果此前尚未登录过此target,接下来直接发现并登入即可。否则,则需要按照下面的第三步实现认证的启用。

3、如果initiator端已经登录过此target,此时还需要先注销登录后重启iscsid服务,并在删除此前生成的database后重新发现target,并重新登入,过程如下:

#iscsiadm -m session -r sid -u

#iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -u
#iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -odelete
# rm-rf -rf /var/lib/iscsi/send_targets/192.168.0.11,3260
#service iscsid restart

#iscsiadm -m discovery -t sendtargets -p 192.168.0.11
#iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -l

说明:其中的target名字和target主机地址可能需要按照您的实际情况修改。

3.4 设置开机自启动

[root@client1 ~]# service iscsi start
[root@client1 ~]# chkconfig iscsi on
[root@client1 ~]# service iscsid start
[root@client1 ~]# chkconfig iscsid on




3.5 客户端发现

[root@client1 ~]# iscsiadm -m discovery -t sendtargets -p 172.20.100.100




3.6 客户端登录

[root@client1 ~]# iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -l











3.7 分区格式化挂载

[root@client1 ~]# mkfs.ext4 /dev/sdb
[root@client1 ~]# mkdir /data1
[root@client1 ~]# mount /dev/sdb /data1

3.8 client2同样的方法操作,挂载/dev/sdc

yum install iscsi-initiator-utils
iscsiadm -m discovery -t sendtargets -p 172.20.100.100
service iscsi start
service iscsid start
chkconfig iscsi on
chkconfig iscsid on
iscsiadm -m node -I iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -l
iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -l
fdisk -l
mkdir /data1
mkfs.ext4 /dev/sdc
mount /dev/sdc /data1
cd /data1

3.9 卸载

[root@client1 ~]# umount /data1
[root@client1 ~]# iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -u




3.10 删除

节点发现登录之后,信息缓存到这里,下次启动会自动登录,要彻底消失,可直接把目录删掉,也可用命令删除





[root@client1 iscsi]# iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -o delete




再删除目录




3.11 服务器解除IP绑定

[root@Server ~]# tgtadm --lld iscsi --op unbind -m target -t 1 -I 172.20.0.0/16



3.12 服务器删除LUN2

[root@Server ~]# tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 2




3.13 服务器删除target

[root@Server ~]# tgtadm --lld iscsi --op delete -m target -t 1




4. 服务器端基于文件配置

4.1 配置文件

[root@Server tgt]# vi /etc/tgt/targets.conf
<target iqn.2017-08.com.test.web:server1>
backing-store /dev/sdb
</target>




[root@Server tgt]# service tgtd restart
[root@Server tgt]# tgtadm --lld iscsi --op show --mode target







[root@Server tgt]# vi /etc/tgt/targets.conf

<target iqn.2017-08.com.test.web:server1>
backing-store /dev/sdb
initiator-address 172.20.0.0/16
</target>




客户端挂载,根上述方法一样。

综上:就是iscsi服务器搭建的全过程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux iscsi