一,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