准备环境

Target:   node1 192.168.139.2

Initiator1:node2 192.168.139.4

Initiatos2:node4 192.168.139.8

Target:安装scsi-target-utils

Initiatos:安装scsi-initiator-utils


有关iSCSI和SCSI的详细介绍请看 http://11107124.blog.51cto.com/11097124/1884637  


创建一个分区用来做SCSI的存储盘,最好用整个磁盘别用分区

[root@node1 ~]# fdisk /dev/sdb

[root@node1 ~]# partprobe /dev/sdb

[root@node1 ~]# fdisk -l

Device Boot      Start       End    Blocks    Id  System

/dev/sdb1         1        654    5253223+  83  Linux

/dev/sdb2         655       1308    5253255  83  Linux

/dev/sdb3         1309      1701    156772+  83  Linux

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

[root@node1 ~]# rpm -ql scsi-target-utils

/etc/rc.d/init.d/tgtd \\服务脚本

/etc/sysconfig/tgtd 

/etc/tgt/targets.conf \\配置文件

/usr/sbin/tgt-admin \\通过读取配置好的文件,在启动服务时创建target和lun

/usr/sbin/tgt-setup-lun

/usr/sbin/tgtadm \\在梦里行下创建target和lun的工具

/usr/sbin/tgtd

[root@node1 ~]# service tgtd start

Starting SCSI target daemon:                               [  OK  ]

[root@node1 ~]# netstat -tnlp |grep tgtd

tcp    0      0 0.0.0.0:3260  0.0.0.0:*    LISTEN      1820/tgtd           

tcp    0      0 :::3260      :::*       LISTEN      1820/tgtd       


tatadm命令是一个高度模式化的命令:

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


-L/--lld 指定驱动 一般为iscsi

-t/--tid 指定target的ID

-l/--lun 指定lun ID

-b/--back-store 指定真正的后端存储设备

-I/--initiators-ddress 指定initiators的ip 一般用于绑定target和initiators进行授权

-T/--targetname 指定target的名称,用以区分多个不同的target

--mode 创建target为target,创建logicalunit则为logicalunit

--op new delete show update bind unbind 

(bind/unbind 经常用来将initiator 的地址与target绑定,从而对其进行使用授权)

 tatadm命令详细使用请看: http://blog.chinaunix.net/uid-30212356-id-5520545.html 


一个target上最多可以有32个LUN

target name的语法:iqn.yyyy-xx.com.zxl:机架.磁盘

            inq iSCSI的全局唯一标示名

           yyyy-xx 年-月 如:2016-12

           com.zxl 你公司域名的反写

          机架.磁盘 用来区分磁盘的具体位置,是那一块盘

 如:iqn.2016-12.com.zxl:store.disk1


[root@node1 ~]# tgtadm --lld iscsi --mode target --op new --targetname iqn.2016-12.com.zxl:store1.disk1 --tid 1

驱动:iscsi 

targetname:iqn.2016-12.com.zxl:store1.disk1

target ID:1 (0 为系统给当前主机保留使用)

[root@node1 ~]# tgtadm --lld iscsi --mode target --op show \\查看创建的target

Target 1: iqn.2016-12.com.zxl:store1.disk1

    System information:

        Driver: iscsi

        State: ready

    I_T nexus information:

    LUN information:

        LUN: 0

            Type: controller \\类型为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: 

    Account information:

    ACL information:

创建logicalunit,并关联后端存储

[root@node1 ~]# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store  /dev/sdb1

在target ID为1的target创建一个lun ID 为1的logicalunit,且后端存储设备为/dev/sdb1

注:当我用--backing-store /dev/sdb2或/dev/sdb3时,创建不了,一直出现如下错误,可能是因为刚创建的/dev/sdb2 /dev/sdb3没被内核识别(我用了partprobe),实际使用时建议用整个磁盘,别用分区

tgtadm: invalid request

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

Target 1: iqn.2016-12.com.zxl:store1.disk1

    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 \\类型为disk

            SCSI ID: IET     00010001

            SCSI SN: beaf11

            Size: 5379 MB, Block size: 512

            Online: Yes

            Removable media: No

            Prevent removal: No

            Readonly: No

            Backing store type: rdwr

            Backing store path: /dev/sdb1

            Backing store flags: 

    Account information:

    ACL information:


客户端的认证方式有两种,以保证不同用户数据的安全性:

1:基于IP

2:基于用户的CHAP(CHAP为双向认证server认证client,client也认证server)


下面将对initiators进行基于IP的认证

[root@node1 ~]# tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 192.168.139.0/24


允许来自192.168.139.0/24网段的所有主机访问target ID为1的target

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

    Account information:

    ACL information: 192.168.139.0/24

              


在node2(192.168.139.4)装iscsi-initiator-utils

[root@node2 ~]# yum -y install iscsi-initiator-utils

[root@node2 ~]# rpm -ql iscsi-initiator-utils

/etc/iscsi

/etc/iscsi/iscsid.conf \\配置文件

/etc/logrotate.d/iscsiuiolog

/etc/rc.d/init.d/iscsi \\服务脚本

/etc/rc.d/init.d/iscsid \\服务脚本,只要启动iscsi就可以启动iscsid

/sbin/iscsi-iname \\-p 自己指定initiator的iqn名称前缀,后面会由系统自动生成随机数,并保存                 在/etc/iscsi/initiatorname.iscsi文件中

/sbin/iscsiadm \\客户端命令

/var/lib/iscsi/ifaces \\可以选定用哪个网卡与target交换数据



iscsiadm也是一个模式化的命令,是客户端的命令


-m {discovery|node|session|iface}

discovery:发现某个server是否有target输出及有哪些输出

node:自己作为节点与server端建立连接

session:查看会话

iface:进行接口管理的

-d:debug_lebel 等级为0—8越高输出的debug信息越详细,可省略

-I:指定使用哪个网络接口,如果只有一块网卡则不用指定

-t:sendtarget,slp,iSNS三种形式,一般我们用到的是sendtarget简写为st

-p:IP:port IP为server的IP,port可以省略,默认为3260


发现输出target后与登录target有关的

-U 登出

-R 重新登入

-l 登入

-T 指定targetname

-p 指定server的IP/port

-s 显示session的统计数据

-op 其他一些操作

......

iscsiadm命令详细使用可以参考这里 

http://blog.chinaunix.net/uid-30212356-id-5520545.html 



[root@node2 ~]# iscsiadm -m discovery -d 2  -t st -p 192.168.139.2:3260

iscsiadm: Max file limits 1024 4096


iscsiadm: starting sendtargets discovery, address 192.168.139.2:3260, 

iscsiadm: connecting to 192.168.139.2:3260

iscsiadm: connected local port 52104 to 192.168.139.2:3260

iscsiadm: connected to discovery address 192.168.139.2

iscsiadm: login response status 0000

iscsiadm: discovery process to 192.168.139.2:3260 exiting

iscsiadm: disconnecting conn 0xad5a78, fd 3

192.168.139.2:3260,1 iqn.2016-12.com.zxl:store1.disk1


可以看到发现了node2输出的target:iqn.2016-12.com.zxl:store1.disk1


进行target登录

[root@node2 ~]# iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -l

Logging in to [iface: default, target: iqn.2016-12.com.zxl:store1.disk1, portal: 192.168.139.2,3260] (multiple)

Login to [iface: default, target: iqn.2016-12.com.zxl:store1.disk1, portal: 192.168.139.2,3260] successful.

successful(登录成功)


[root@node2 ~]# fdisk -l \\可以看到多了一个/dev/sdc大小约为5G,将server端的target关联的LUN                  \\设备识别为了本机的本地存储,且将一个分区识别成了整块磁盘

Disk /dev/sdc: 5379 MB, 5379300864 bytes

166 heads, 62 sectors/track, 1020 cylinders


在/dev/sdc上创建分区

[root@node2 ~]# fdisk /dev/sdc

Device Boot      Start       End     Blocks   Id  System

/dev/sdc1        1         612     3149321  83  Linux


[root@node2 ~]# partprobe /dev/sdc \\通知内核识别

[root@node2 ~]# mke2fs -j /dev/sdc1 \\格式化为ext3文件系统

[root@node2 ~]# mount /dev/sdc1 /mnt \\挂载

[root@node2 ~]# cp /etc/issue /mnt \\复制一个文件过去

[root@node2 ~]# cd /mnt

[root@node2 mnt]# ll \\OK

total 20

-rw-r--r--. 1 root root    47 Dec 21 10:28 issue

drwx------. 2 root root 16384 Dec 21 10:27 lost+found



在加入一个node4(192.168.139.8)作为第二个initiator


[root@node4 ~]# yum install -y iscsi-initiator-utils

[root@node4 ~]# iscsiadm -m discovery -t st -p 192.168.139.2

Starting iscsid:                                           [  OK  ]

192.168.139.2:3260,1 iqn.2016-12.com.zxl:store1.disk1

[root@node4 ~]# iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -l

Logging in to [iface: default, target: iqn.2016-12.com.zxl:store1.disk1, portal: 192.168.139.2,3260] (multiple)

Login to [iface: default, target: iqn.2016-12.com.zxl:store1.disk1, portal: 192.168.139.2,3260] successful.

[root@node4 ~]# fdisk -l

Disk /dev/sdc: 5379 MB, 5379300864 bytes

166 heads, 62 sectors/track, 1020 cylinders

Device Boot      Start       End     Blocks   Id  System

/dev/sdc1        1         612     3149321  83  Linux

[root@node4 ~]# mount /dev/sdc1 /mnt

[root@node4 ~]# cd /mnt

[root@node4 mnt]# ll \\可以看到node2复制的issue文件node4页可以看到

total 20

-rw-r--r--. 1 root root    47 Dec 21 10:28 issue

drwx------. 2 root root 16384 Dec 21 10:27 lost+found


至此本次实验完成