一,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的软件包

# 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 showTarget 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 --listiscsi           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:3260192.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 -lLogging 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 -lDisk /dev/sda: 107.3 GB, 107374182400 bytes255 heads, 63 sectors/track, 13054 cylindersUnits = 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 LVMDisk /dev/sdb: 10.7 GB, 10737418240 bytes64 heads, 32 sectors/track, 10240 cylindersUnits = 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 = testusernode.session.auth.password = testuser

重启服务

# service iscsi restart

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

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

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

编辑/etc/tgt/targets.conf

      
        lun 1           incominguser testuser testuser     initiator-address 192.168.1.0/24

保存退出重启服务即可

# 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