Linux上配置使用iSCSI详细说明(8)

####以下是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>

3.3 重启tgtd服务不加载配置文件的问题

如果在正常状态下有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配置文件中启用的项如下。这和上面的状态是一样的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12783.html