续 iSCSI 在Linux下的模拟实验(一)
4、iSCSI服务端配置
本节主要说明在Linux环境下如何配置客户端,以使用基于iSCSI的存储设备,
由于手头没有专用的iSCSI存储设备,采用在另一台Linux机器上通过安装部署iSCSI
服务端(target)软件模拟一台支持iSCSI协议的存储设备,客户端通过访问这台
设备来体验iSCSI。
本文使用的Linux为Centos5.7,服务端管理软件采用Linux SCSI target framework (tgt),
Linux SCSI target framework (tgt)旨在简化不同的SCSI target驱动(iSCSI、光线通道、
SRP等)的建立和维护。其主要目标是无缝地集成到SCSI中间层,并且在用户空间实现tgt
的大部分内容。tgt由内核空间(kernel-space)和用户空间(user-space)代码组成,如果
只关注iSCSI,则不涉及内核空间代码,只是有用户空间代码。
tgt软件的具体介绍请参加http://stgt.sourceforge.net/。
安装后的文件包括(通过命令rpm -ql scsi-target-utils查看):
/etc/rc.d/init.d/tgtd --tgt管理服务守护进程在安装完tgt软件后,需要进行配置,主要包括建立target,为target添加lun,设置
访问target的控制策略等。
在SCSI协议中,目标器(target)是基本的访问单元,一个服务器或专业存储设备可以
提供 一个或多个目标器(target),目标器target内可以包括多个LUN,LUN的概念比较复杂,
在SCSI规范中,LUN代表物理外围设备和执行SCSI命令所需的逻辑电路,在这里可以将其理解
为基本的存储单元,即从存储设备中分配的具有明确大小的存储,划分LUN 一般由存储设备提供
的管理程序完成,LUN与存储采用的RAID级别无关。
建立target包括两种方法,基于命令方式和基于配置文件方式,其中配置文件为/etc/tgt/targets.conf。
首先说明基于命令的方式,这里采用的命令为tgtadm。tgtadm用来监控和修改Linux SCSI 目标器软件的
相关参数和对象,如targets、volumes等。tgtadm的详细说明请参加《tgtadm 命令参考》。
【一】命令方式配置Target的流程及相关命令如下:
<1> 建立一个target
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2012-01.cn.nayun:test-01
建立target需要提供target ID和名称,在一个网络内,target名称必须是唯一的,主要采用
iqn-type格式和eui-type 格式表示,在Linux中主要用iqn-type格式,iqn是Internet限定名
(Internet Qualified Name)的简称。iSCSI target命名采用“iqn.yyyy-mm.<反向的域名>:标识名”
的形式,在上例中,所建立的target名称为iqn.2012-01.cn.nayun:test-01,其中cn.nayun为
nayun.cn的反向,采用域名反向的方法主要是为了防止重名。
<2> 查看所建立的target信息
tgtadm --lld iscsi --op show --mode target
命令执行完成后,显示如下信息:
Target 1: iqn.2012-01.cn.nayun:test-01
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
Account information:
ACL information:
在建立一个target后,其默认将建立LUN编号为0的控制器,这个LUN不能被删除。
I_T nexus information 显示Initiator与此Target的连接关系,只有在连接时才能
显示相关信息,本例中因为没有连接,所有没有信息显示。LUN information显示
此Target所包含的各个LUN的相关属性。 Account information显示此Target绑定
的帐号信息,ACL information则显示此Target的访问控制策略。
<3> 向Target中添加LUN
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb
将本机的第二块硬盘作为一个LUN添加到建立的Target中,此命令完成后,再执行
tgtadm --lld iscsi --op show --mode target
在显示出Target信息中,增加了新加入的LUN1的信息,具体如下:
Target 1: iqn.2012-01.cn.nayun:test-01
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 537 MB, Block size: 512
Online: Yes
Removable media: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdb
Backing store flags:
Account information:
ACL information:
<4> 设置target的访问控制策略
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL --网内所有Initiator均可访问
tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.1.210 --允许某个IP地址访问
tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.1.0/24 --允许某个网络访问
添加上述一个访问控制后,再查看一下target信息,
tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2012-01.cn.nayun:test-01
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 537 MB, Block size: 512
Online: Yes
Removable media: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdb
Backing store flags:
Account information:
ACL information:
192.168.1.0/24
192.168.1.210
可以看到,在ACL information部分列出了可访问此Target的Initiator列表。
<5> 访问帐号操作
建立新帐号
tgtadm --lld iscsi --op new --mode account --user scott --password tiger
显示帐号信息
tgtadm --lld iscsi --op show --mode account
将一个帐号与一个Target绑定(bind)
tgtadm --lld iscsi --op bind --mode account --tid 1 --user scott
将帐号与Target绑定后再查看Target信息:
Target 1: iqn.2012-01.cn.nayun:test-01
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 537 MB, Block size: 512
Online: Yes
Removable media: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdb
Backing store flags:
Account information:
scott
ACL information:
192.168.1.0/24
192.168.1.210
可以看到在Account information下显示出本Target绑定的帐号。
上述配置完成后,则SCSI Initiator即可访问和连接所定义的Target。
【二】通过配置文件的方式配置Target
通过tgtadm命令建立的target相关配置,在关闭机器后将不保存,通过配置文件的
方式则可以保存Target相关信息,在系统重启时,tgtd守护进程从配置文件中提取
配置信息,根据配置信息建立相应的Target。
Linux SCSI target framework (tgt)使用的配置文件为/etc/tgt/targets.conf,
此配置文件采用XML格式保存Target配置信息,将上述通过tgtadm命令建立的Target
在配置文件中的表示形式如下:
<target iqn.2012-01.cn.nayun:test-01>
backing-store /dev/sdb
incominguser scott tiger
initiator-address 192.168.1.0/24
initiator-address 192.168.1.210
</target>
每一个Target的定义在<target></target>对中进行说明,具体属性包括:
backing-store :Target包含的LUN对应的存储设备、分区或逻辑卷。
incominguser :定义iSCSI接入认证设置,包括用户名和密码
initiator-address:允许连接Target的客户端(Initiator)主机或网络地址。
配置完成后,重新启动tgtd服务,系统将自动根据配置文件中的设置,建立对应
的Target。可通过tgtadm --lld iscsi --mode target --op show进行查看。查看
某个具体Target的信息,使用tgtadm --lld iscsi --mode target --op show --tid n
命令,其中的n是指对应的Target ID号。
至此,Target设置完成,可以提供服务了。关于配置文件具体内容将在另一篇文章
中进行说明,这里不再赘述。
3)Linux SCSI target framework (tgt) 的管理命令
tgt主要通过以下几个命令进行Target的管理:
<1> tgtadm
tgtadm用来监控和修改关于Linux SCSI target software的任何内容,包括targets, volumes等。
<2> tgt-admin
tgt-admin是一个对Target和luns进行持久化配置的工具。它使用tgtadm命令进行Target
创建、删除和显示等操作。
<3> tgt-setup-lun
建立Target,增加设备到Target中,定义可以连接到此Target的客户端(Initiator)。这个
工具就是一个脚本,主要的操作也是通过tgtadm完成