Linux ISCSI服务器搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux ISCSI服务器搭建相关的知识,希望对你有一定的参考价值。


Linux ISCSI服务器搭建

1. iscsi服务器简述

iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。

iSCSIInternet 小型计算机系统接口 iSCSIInternet 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服务器包

[[email protected] ~]# yum list |grep scsi*

 

技术分享

 

[[email protected] ~]# yum install  scsi-target-utils

 技术分享


安装完毕后,查看scsi-target-utils具体安装位置

[[email protected] ~]# rpm -ql  scsi-target-utils

 

技术分享

2.2.2  设置服务开机自启动

[[email protected] ~]# service tgtd start

[[email protected] ~]# chkconfig tgtd on

[[email protected] ~]# 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


 

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

 

技术分享

技术分享

2.  显示所有target

[[email protected] ~]# tgtadm --lld iscsi --op  show --mode target

 

技术分享


3.  创建LUN1

[[email protected]  ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b  /dev/sdb

[[email protected]  ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 2 -b  /dev/sdc

 

技术分享

技术分享

技术分享

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

[[email protected]  ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address  172.20.0.0/16

 

技术分享

技术分享



3. iscsi客户端配置

 

3.1  安装iscsi-initiator-utils

 

[[email protected]  ~]# yum install iscsi-initiator-utils

[[email protected]  ~]# rpm -ql iscsi-initiator-utils

技术分享

技术分享

 

3.2  更改客户端iqn名称

[[email protected] ~]# cat  /etc/iscsi/initiatorname.iscsi

 技术分享


 

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

[[email protected]  ~]# cat /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.2017-08.com.test.web:client1

 

技术分享

技术分享


 

生成iscsi名称,这个名称后面字符串唯一

[[email protected]  ~]# 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  设置开机自启动

[[email protected]  ~]# service iscsi start

[[email protected]  ~]# chkconfig iscsi on

[[email protected]  ~]# service iscsid start

[[email protected]  ~]# chkconfig iscsid on

 

技术分享

 

3.5  客户端发现

 

[[email protected]  ~]# iscsiadm -m discovery -t sendtargets -p 172.20.100.100

 技术分享


3.6  客户端登录

 

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


技术分享

技术分享


技术分享

 

3.7  分区格式化挂载

[[email protected]  ~]# mkfs.ext4 /dev/sdb

[[email protected]  ~]# mkdir /data1

[[email protected]  ~]# 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  卸载

[[email protected] ~]# umount /data1

[[email protected] ~]# iscsiadm -m node -T  iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -u

 

 

技术分享

 

3.10  删除

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

 

技术分享

 

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

 

技术分享

再删除目录


 技术分享

3.11  服务器解除IP绑定

[[email protected] ~]# tgtadm --lld iscsi --op  unbind -m target -t 1 -I 172.20.0.0/16

 

技术分享

3.12  服务器删除LUN2

 

[[email protected] ~]# tgtadm --lld iscsi --op  delete --mode logicalunit --tid 1 --lun 2

 

技术分享


3.13  服务器删除target

 

[[email protected] ~]# tgtadm --lld iscsi --op  delete -m target -t 1

 

技术分享

 

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

4.1   配置文件

 

[[email protected] tgt]# vi  /etc/tgt/targets.conf

<target  iqn.2017-08.com.test.web:server1>

         backing-store /dev/sdb

</target>

 技术分享


[[email protected] tgt]# service tgtd restart

[[email protected] tgt]# tgtadm --lld iscsi  --op show  --mode target


技术分享

技术分享

 

 

[[email protected] 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服务器搭建的全过程。


本文出自 “星星的夜” 博客,请务必保留此出处http://guomin.blog.51cto.com/2483984/1959786

以上是关于Linux ISCSI服务器搭建的主要内容,如果未能解决你的问题,请参考以下文章

linux下实现文件共享:搭建iSCSI服务器(与samba,nfs不同,直接共享设备)

Linux下搭建iSCSI共享存储详细步骤(服务器模拟IPSAN存储)

Linux下搭建iSCSI共享存储

Linux下搭建iSCSI共享存储

搭建iscsi存储系统

小白都能学会的Linux系统搭建ISCSI服务