概述:这篇文章来介绍LIO下的用户态工具targetcli来配置iSCSI服务
虚拟机环境:centos7.x(内核版本3.10.0-862.el7.x86_64)
IP分别为192.168.1.200/201
targetcli安装
centos一般都自带了此工具,没有的话去官网下载,这里就不再介绍
快速创建IP-SAN
1.命令行输入targetcli进入交互界面,在交互界面可以使用ls,cd等命令灵活简单的操作,如图所示,最上层目录包括backstores、iscsi等,如果有FC或Infiniband的话,还会有其余的一些子模块如qla2xxx等
2.创建卷资源
使用cd进入/backstores/block目录,
cd backstores/block
然后创建卷资源,使用块设备/dev/sdb
create dev=/dev/sdb name=sdb
提示sdb设备正在被使用,重新选择/dev/sdc来创建卷资源,提示创建成功(readonly属性表示读写权限,wwn号为卷资源的唯一标号)
3.创建iSCSI
快速创建一个iSCSI服务的步骤如下:
a.首先创建一个iqn
b.在iqn下添加提供服务的IP以及需要映射的卷
c.设置认证
操作如下:
这里介绍一个技巧,在交互界面输入cd,可以进入下图界面,可以灵活快速地跳到指定目录
接下来在iscsi目录下创建iqn
然后在iqn的对应目录下添加服务IP,映射卷和权限设置
initiator端发现:可以看到已经可以发现登录过来的逻辑卷
发现命令:iscsiadm -m discovery -t st -p IP
登录命令:在发现命令后面加入-l或者iscsiadm -m node -T IQN -l
登出命令:iscsiadm -m node -T IQN -u 如 iscsiadm -m node -T iqn.2018-10.hzhrinet.com:test -u
iSCSI认证
iSCSI认证分为发现认证和登录认证,其中每种认证又分为单向认证和双向认证
发现认证和登录认证的意思就和名字一样
单向认证是指initiator端在发现target端的时候,要提供正确的认证才能发现在target端的iSCSI服务
双向认证是指在单向认证的基础上,target端需要正确设置initiator端设置的认证才能被initiator端发现
发现认证:
1.首先我们来看发现认证的默认属性,这是一个全局的设置
2.设置单向认证
首先在target端执行命令,设置单向认证
此时initiator端登录会出现认证错误,无法发现
这时我们需要设置initiator端的配置文件/etc/iscsi/iscsid.conf
此时再在initiator端发现,发现成功
3.设置双向认证(必须建立在单向认证的基础上)
首先在initiator端设置认证
然后在target端设置initiator的认证
PS:这里也可以不动配置文件,通过操作discoverydb来发现认证,首先我们看一下现在的数值
[root@nodeb ~]# iscsiadm -m discoverydb -t st -p node -o show # BEGIN RECORD 6.2.0.874-10 discovery.startup = manual discovery.type = sendtargets discovery.sendtargets.address = node discovery.sendtargets.port = 3260 discovery.sendtargets.auth.authmethod = None discovery.sendtargets.auth.username = <empty> discovery.sendtargets.auth.password = <empty> discovery.sendtargets.auth.username_in = <empty> discovery.sendtargets.auth.password_in = <empty> discovery.sendtargets.timeo.login_timeout = 15 discovery.sendtargets.use_discoveryd = No discovery.sendtargets.discoveryd_poll_inval = 30 discovery.sendtargets.reopen_max = 5 discovery.sendtargets.timeo.auth_timeout = 45 discovery.sendtargets.timeo.active_timeout = 30 discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768 # END RECORD
然后可以通过类似如下命令来修改值
iscsiadm -m discoverydb -t st -p node -o update -n discovery.sendtargets.auth.authmethod -v CHAP
然后执行
iscsiadm -m discoverydb -t st -p node -D
这里注意,iscsiadm -m discovery命令默认是从配置文件去获取的,所以如果执行了discovery命令,discoverydb的默认值又会被改回来
登录认证:
登录认证和发现认证类似,也是分为单向认证和双向认证,设置的方法和发现认证几乎一样
这里有几个注意的地方
1.generate_node_acls属性表示是否开启ACL,当为no-gen-acls的是否,initiator端的iqn号(/etc/iscsi/initiatorname.iscsi下)必须加入acl才能登陆
2.在tpg目录下打开认证set attribute authentication=1,作用类似发现认证的enable
在acl的iqn目录下设置用户和密码,操作类似发现认证
initiator端修改这些选项就可以了,和发现认证类似