准备环境
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
至此本次实验完成