需要说明的是,下面的实验全是使用命令行工具tgtadm来实现的。但是修改配置文件然后使用tgt-admin也是一样可以的,且target数量多的时候,更建议使用配置为文件加载的方式。最重要的一点是,使用命令行方式创建的target及lu等是临时生效的,在target服务重启后就失效了,再手动建立它们是一件相当麻烦的事情。
如下,分别使用了长格式选项和短格式选项分别创建和显示target。注意:创建target时,tid不能是0,因为0是被系统保留的。
tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2017-03.com.longshuai:test.disk1
tgtadm -L iscsi -m target -o show
以上是第一个target的信息。从信息中可以看到:
创建完第一个target后自动就创建了一个LUN为0的logicalunit(以后简称lu),这是固定给每个target都使用的LUN。
此lu的类型是controller。
"backing store type"为null,即此lu没有向下扩展逻辑设备,因为它是lun控制器。也就是说这个LUN是保留作为lu控制器用的。
"I_T nexus information"记录的是initiator与此target的联结关系,nexus的意思就是联结、关联,在后文介绍initiator的时候会展示此处信息。
现在向此target添加一个lu,使用的是新插入的磁盘/dev/sdc(全新,未进行分区)。当然,使用新建立的分区或者已经格式化后的分区做实验也可以。
tgtadm -L iscsi -m logicalunit -o new -t 1 -l 1 -b /dev/sdc
然后再来查看target的信息。
tgtadm -L iscsi -m target -o show
从LUN 1信息中可以看出,lu type已经是disk而非controller,且显示了此lu的容量大小是42950M。另外还显示了使用的逻辑设备是/dev/sdc,且是可读可写的(rdwr)。
但到目前为止,该target都没有定义共享给谁,这从target信息的最后两行Account/ACL information中可以看出。
现在将此target绑定一个共享IP,即说明此IP可以连接该target。这是iSCSI的一种认证方式:IP认证。除此之外,还有基于account的CHAP认证,详细内容见后文。IP认证的作用是允许Initiator发现该target,并允许做进一步的基account的CHAP认证。
tgtadm -L iscsi -m target -o bind -t 1 -I 192.168.100.0/24
tgtadm -L iscsi -m target -o show
再添加一个10G分区/dev/sdb1为逻辑存储单元,lun=2。
tgtadm -L iscsi -m logicalunit -o new -t 1 -l 2 -b /dev/sdb1
tgtadm -L iscsi -m target -o show
由于该lu是在target id=1下的,所以192.168.100.0这个网段的机器也能访问此设备。也就是说,共享出去的是target级别而不是lu级别的。