####以下是target authentication相关
# To set a CHAP username and password for target(s) authentication by the initiator:
#node.session.auth.username_in = username_in
#node.session.auth.password_in = password_in
####以下是discovery认证相关,iscsi-initiator-utils似乎不支持这个认证,所以以下项不能开启和设置
# To enable CHAP authentication for a discovery session to the target
# set discovery.sendtargets.auth.authmethod to CHAP. The default is None.
#discovery.sendtargets.auth.authmethod = CHAP
# To set a discovery session CHAP username and password for the initiator authentication by the target(s):
#discovery.sendtargets.auth.username = username
#discovery.sendtargets.auth.password = password
# To set a discovery session CHAP username and password for target(s) authentication by the initiator:
#discovery.sendtargets.auth.username_in = username_in
#discovery.sendtargets.auth.password_in = password_in所以,如果只要实现单向认证,则开启以下三项即可。
node.session.auth.authmethod = CHAP
node.session.auth.username = username
node.session.auth.password = password如果要实现双向认证,则需要开启以下5项。
node.session.auth.authmethod = CHAP
node.session.auth.username = username
node.session.auth.password = password
node.session.auth.username_in = username_in
node.session.auth.password_in = password_in且需要注意的是,如果是单向认证,则后两项必须不能开,开了就会进行双向认证。
虽然iscsi-initiator-utils支持discovery认证,但是由于scsi-target-utils不支持discovery认证,所以在认证关联target之前必须先进行discovery,也就是说在target端的访问控制列表ACL项中必须要定义允许initiator进行discovery。
3.2 target配置文件的配置方法target端使用tgtadm命令配置的结果都是工作在内核中的,重启tgt服务或重启系统时,内存中的内容都会丢失。所以要永久让配置生效需要写入到配置文件中去。
target的配置文件默认是/etc/tgt/targets.conf,但是可以在/etc/tgt/temp/目录(默认不存在)下建立多个以".conf"为后缀的配置文件,然后启用主配置文件中的include指令即可。
以下给出两个配置的例子,这个配置文件很通俗易懂。
#include /etc/tgt/temp/*.conf
default-driver iscsi
<target iqn.2017-03.com.longshuai:test.disk1>
backing-store /dev/sdb1
backing-store /dev/sdc
incominguser <incoming_username> <PASSWORD>
outgoinguser <outgoing_username> <PASSWORD>
initiator-address 192.168.100.0/24
</target>这样的配置,backing-store的顺序决定了lun号码的顺序,上面的配置中/dev/sdb1会是Lun1,/dev/sdc会是lun2。
若想要为每个逻辑设备指定想要指定的lun号码,需要将每个backing-store封装在target中并独立指定lun号码。
#include /etc/tgt/temp/*.conf
default-driver iscsi
<target iqn.2017-03.com.longshuai:test.disk1>
<backing-store /dev/sdb1>
lun 5
</backing-store>
<backing-store /dev/sdc>
lun 6
</backing-store>
incominguser <incoming_username> <PASSWORD>
outgoinguser <outgoing_username> <PASSWORD>
initiator-address 192.168.100.0/24
</target>
如果在正常状态下有initiator关联了target设备,此时重启tgtd服务很可能会导致配置文件中的配置不生效,这是为了保护initiator仍然可以随时关联target而不丢失数据和状态设立的机制。但不得不说,这个特性真的很让人烦恼,配置不生效,难道非得再使用tgtadm来重新生成到内核吗?
问题如下描述。
当前的target状态如下:
bash> tgt-admin -s
Target 1: iqn.2017-03.com.longshuai:test1.disk1
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
……省略部分结果……
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
……省略部分结果……
LUN: 2
Type: disk
SCSI ID: IET 00010002
SCSI SN: beaf12
Size: 42950 MB, Block size: 512
……省略部分结果……
Account information:
ACL information:
192.168.100.0/24配置文件中启用的项如下。这和上面的状态是一样的。