将此行注释后,以后可以导出配置文件到/etc/tgt/temp目录下并以.conf作为后缀,重启tgtd服务即可重新加载,而不需要在手动加载了。不过有个问题,使用dump出来的配置文件会有default-driver指令行,而这一行在主配置文件中也有,且他们是不能出现多次的,否则将会报错,所以需要将主配置文件中的default-driver指令注释掉。
2.3 安装initiator安装Initiator的机器成为iscsi的发起者,initiator本身的意思就是"发起者",在这里即iscsi的"客户端"程序的意思。
此处先在B服务器(192.168.100.5)上安装iscsi-initiator-utils。另一台C服务器后面再做测试。
yum -y install iscsi-initiator-utils
2.3.1 相关文件和目录说明下面是此安装包生成的一些重要文件和目录(只列出了必要的部分)。
rpm –ql iscsi-initiator-utils
其中:
/etc/iscsi/iscsid.conf:是iscsi发起者的配置文件。
/etc/rc.d/init.d/{iscsi,iscsid}:服务启动脚本,只需要启动iscsi即可,因为它会自动调用iscsid脚本。
/sbin/iscsi-iname:为initiator命名的工具。就像target有自己独特的iqn名称,initiator也有独特的名称标识自己。
/sbin/iscsiadm:initiator的管理工具,在initiator上的绝大部分的命令都是通过它来执行的。
/var/lib/iscsi/ifaces:指定使用哪个网卡接口和target通信。
/var/lib/iscssi/nodes:该目录中保存了发现的target,分别是以target_name命名的目录,在target_name目录下又保存了以"target_ip,port"(如192.168.100.151,3260)的配置文件,这个配置文件是本initiator向对应的target 发起连接时的参数,这些参数继承于/etc/iscsi/iscsid.conf。
/var/lib/iscsi/send_targets:该目录中也存储了一个或多个以"target_IP,port"命名的目录,记录的是discovery的历史记录,对于discovery成功的则在对应的目录会有文件,否则是空目录。
其中IP,port的记录方式称为protal,是入口、入门的意思。
需要注意的是,建议不要把iscsi和iscsid设置为开机自启动,因为开机时如果它找不到target的时候会一直卡在那里等待。可以将其放在rc.local文件中来启动。
chkconfig iscsi off
chkconfig iscsid off
echo "service iscsi start" >>/etc/rc.d/rc.local
和target一样,initiator也需要一个独特的名称来标识自己让target识别。initiator在连接target的时候,会读取/etc/iscsi/initiatorname.iscsi中的内容作为自己的iname。
初始状态的iname如下:
bash> cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.RedHat:ceb390801983
其中后缀"ceb390801983"是一个随机串。
也可以为iname生成一个别名,只需在此文件中另起一行写入以下内容:
InitiatorAlias=INAME_ALIAS
如:
InitiatorAlias=client.longshuai.com
若要自指定iname,可以手动修改该文件。也可以使用iscsi-iname工具来生成iname并保存到该文件。
bash> iscsi-iname
iqn.1994-05.com.redhat:5a804fa64f8e
bash> iscsi-iname
iqn.1994-05.com.redhat:ca4eb16bbddd
可以看出iscsi-iname生成的iname前缀都是一样的,修改的只是后缀部分的随机串。如果要指定前缀,则使用-p选项。
bash> iscsi-iname -p iqn.2017-03.com.longshuai
iqn.2017-03.com.longshuai:adb6a5ec885c
所以,通过iscsi-iname向/etc/iscsi/initiatorname.iscsi中写入一个iname。
echo Initiatorname=`iscsi-iname -p iqn.2017-03.com.longshuai` >/etc/iscsi/initiatorname.iscsi
然后重启下iscsi服务。
service iscsi restart
2.3.3 iscsiadm命令iscsiadm也是一个模式化的命令,使用-m指定mode。mode有:discovery、node、session、iface。一般就用前两个mode。
discovery:发现某服务器是否有target输出,以及输出了哪些target。发现target后会生成target数据库discoverydb。
node:管理跟某target的关联关系。在discovery发现了target后,是否要跟target建立关系,是否要删除已有的关系或者解除已有的关系等。删除关联关系不仅会解除关联,还会删除发现target后生成的discoverydb。
session:会话管理。
iface:接口管理。
2.3.4 发现target(discovery)即使用discovery模式。
iscsiadm -m discovery [ -d debug_level ] [ -t type -p ip:port -I ifaceN [ -p ip:port ]
-d:输出调试信息,级别从0-8。出现错误的时候用来判断错误来源是很有用处的,可以使用级别2。
-I:指定发现target时通信接口。
-t type:有三种type(sendtargets,SLP,iSNS),一般只会用到sendtargets,可以简写为st。
-p IP:PORT:指定要发现target的IP和端口,不指定端口时使用默认的3260。现在可以进行discovery了。这里发起两次,第一次是正确的,第二次是错误的(该IP上没有target或主机未启动)。
bash> iscsiadm -m discovery -t st -p 192.168.100.151:3260
192.168.100.151:3260,1 iqn.2017-03.com.longshuai:test.disk1