一,iSCSI简介

  iSCSI全称为Internet Small Computer System Interface 就是internet 小型计算机系统接口,iSCSI是一种新型的存储技术,它将现有的TCP/IP网络与SCSI接口很好的结合了起来,用来建立和管理基于IP的存储设备,是SAN(存储区域网络)的一种实现方式,它通过SCSI指令和iSCSI协议以及外层TCP/IP的封装是的存储区域得以延展,并且这种传输是以块级别(block-level)的方式在各个存储网络间进行的。iSCSI具有硬件成本低,操作维护较为简便,可扩展性强等优势,近几年发展迅猛。

二,实验规划

  target:

      ip地址:192.168.1.30 系统平台: rhel6.5 x86_64

      共享的磁盘为:/dev/sdd2

   initiator:

      ip地址:192.168.1.65 系统平台: rhel5.8 x86

三,实验过程

  target端:

  1.确保安装iscsi相关的target端组件: scsi-target-utils

# rpm -qa | grep scsi-target-utils 
scsi-target-utils-1.0.24-10.el6.x86_64

  如果没有安装则执行以下命令进行安装,系统镜像中自带有scsi-target-utils的软件包

# yum -y install scsi-target-utils

 2.使用rpm命令查看scsi-target-utils生成了哪些文件

# rpm -ql scsi-target-utils
/etc/rc.d/init.d/tgtd
/etc/sysconfig/tgtd
/etc/tgt/targets.conf
/usr/sbin/tgt-admin
/usr/sbin/tgt-setup-lun

这里只列出一部分,我们发现在/etc/init.d/下有一个tgtd的启动脚本,这就是iscsi服务器端的启动脚本,它监听在tcp的3260端口上

  3.启动服务,并保证服务能够开机自动启动

# service tgtd start
# chkconfig tgtd on
# chkconfig tgtd --listtgtd            0:off   1:off   2:on    3:on    4:on   5:on     6:off

 4.创建用来输出的磁盘(这里使用分区来做,实际应用中建议直接输出磁盘)

# fdisk -cul /dev/sdd
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    20973567    10485760   83  Linux
/dev/sdd2        20973568    41945087    10485760   83  Linux

 5.配置target端将/dev/sdd1和/dev/sdd2输出给192.168.1.0/24网段

  (1)创建一个target

# tgtadm --lld iscsi --mode target --op new --targetname iqn.2015-08.com.test:test.disk1 --tid 1

命令解释:

tgtadm 是一个模式化的命令,它用来实现target端的管理,常用选项

--lld iscsi: 指定driver,这里使用iscsi

--mode : 模式,有 target, logicalunit, account

--op : 后面加操作

target模式下的操作通常有new, delete, show, update, bind, unbind

--targetname: 指定target的名字,这里使用iqn格式

iqn格式: iqn.YY-MM.域名反写.设备标示

--tid : 指定target的id号码

  (2) 查看target

# tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2015-08.com.test:test.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: 
    Account information:
    ACL information:

以上会显示target的详细信息,LUN0是target的控制器,并不是磁盘


  (3)在target中创建LUN

# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sdd1

命令解释:

--lun: 指定LUN的号码,从1开始

--backing-store: 指定真实要使用的物理设备


再次查看target

# tgtadm --lld iscsi --mode target --op show
...
 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/sdd1
            Backing store flags: 
    Account information:
    ACL information:

发现多了LUN 1的内容,从中可以看出LUN1 的各种属性


  (4)将target输出给对应的网络中

# tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 192.168.1.0/24

再来查看

# tgtadm --lld iscsi --mode target --op show
..
 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/sdd1
            Backing store flags: 
    Account information:
    ACL information:
        192.168.1.0/24

最后一行显示已经绑定到了相应网络,至此,target端的配置告一段落。


initiator端:

  1.确保安装iscsi相关的initiator端组件: iscsi-initiator-utils

# rqm -qa | grep iscsi-initiator-utils

  没安装则使用如下命令安装

# yum -y install iscsi-initiator-utils

 2.启动iscsi服务,并设置开机自动启动

# service iscsi start
# chkconfig iscsi on
# chkconfig iscsi --list
iscsi           0:off   1:off   2:on    3:on    4:on    5:on    6:off

 3.发现target的设备

# iscsiadm -m discovery -t st -p 192.168.1.30:3260
192.168.1.30:3260,1 iqn.2015-08.com.test:test.disk1

命令解释: 

iscsiadm 模式化命令

  -m {discovery | node | session | iface}

    discovery: 发现某服务器是否有target输出,以及输出了哪些target

    node: 管理跟某target的关联关系

    session: 会话管理

    iface: 接口管理

-t: type 这里只能是sendtargets, 可以简写为st

-p: 指定target端的套接字

  

  4.登录发现的target

# iscsiadm -m node -T iqn.2015-08.com.test:test.disk1 -p 192.168.1.30 -l
Logging in to [iface: default, target: iqn.2015-08.com.test:test.disk1, portal: 192.168.1.30,3260] (multiple)
Login to [iface: default, target: iqn.2015-08.com.test:test.disk1, portal: 192.168.1.30,3260] successful.

-l: 表示登录

-u: 表示退出

以上表示登录成功

 5.查看本地是否可用

# fdisk -l
Disk /dev/sda: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      208813+  83  Linux
/dev/sda2              27         282     2056320   82  Linux swap / Solaris
/dev/sda3             283       13054   102591090   8e  Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

至此,iscsi就可以正常工作了,将/dev/sdb分区,挂载使用即可

# fdisk /dev/sdb
# partprobe /dev/sdb
# mkfs.ext3 /dev/sdb1 
# mount /dev/sdb1 /mnt
# cp /etc/fstab /mnt/
# ls /mnt/
fstab  lost+found


四,注意事项

 1,initiator退出target时使用如下命令

# iscsiadm -m node -T iqn.2015-08.com.test:test.disk1 -p 192.168.1.30 -u

 这样并不能将/var/lib/iscsi/下的discovery数据库删除,重启服务后依然会自动登录

# ls /var/lib/iscsi/send_targets/192.168.1.30,3260/
iqn.2015-08.com.test:test.disk1,192.168.1.30,3260,1,default  st_config

要使用如下命令,删除discovery数据库

# iscsiadm -m node -T iqn.2015-08.com.hpf:tstore.disk1 -p 192.168.1.30 -o delete
#  rm -rf /var/lib/iscsi/send_targets/192.168.1.30,3260/

2,基于用户名的认证方法

target端:

创建用户:

# tgtadm --lld iscsi --mode account --op new --user testuser --password testuser

绑定用户到tid 1:

# tgtadm --lld iscsi --mode account --op bind --tid 1 --user testuser
查看:
# tgtadm --lld iscsi --mode account --op show 
...
 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/sdd1
            Backing store flags: 
    Account information:
        testuser
    ACL information:
        192.168.1.0/24

initiator端:

编辑/etc/iscsi/iscsid.conf文件,启用如下选项

...
# To enable CHAP authentication set node.session.auth.authmethod
# to CHAP. The default is None.
node.session.auth.authmethod = CHAP
# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
node.session.auth.username = testuser
node.session.auth.password = testuser

重启服务

# service iscsi restart

再次发现target设备,即可成功使用target上的硬盘设备

# iscsiadm -m discovery -t st -p 192.168.1.30
192.168.1.30:3260,1 iqn.2015-08.com.test:test.disk1


 3.使target端配置重启后仍能生效

编辑/etc/tgt/targets.conf

<target iqn.2015-08.com.hpf.tstore.disk1>
      <backing-store /dev/sdd1>
        lun 1
      </backing-store>
     incominguser testuser testuser
     initiator-address 192.168.1.0/24
</target>

保存退出重启服务即可

# service tgtd restart

查看:

# tgtadm --lld iscsi --mode target --op show 
 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/sdd1
            Backing store flags: 
    Account information:
        testuser
    ACL information:
        192.168.1.0/24