iSCSI
说明:
172.166.10.16 Target端
在服务端:
### Target端:(172.16.10.16)
1、准备要共享的设备,这里使用本地磁盘上的新分区代替(只需要分区,不需要格式化即可)
fdisk /dev/sda
partx -d /dev/sda
partx -a /dev/sda
或者使用文件:
dd if=/dev/zero of=/var/lun1.bin count=0 bs=1 seek=50G
准备好共享磁盘后,继续以下的操作:
2、安装iscsi服务端:
# redhat
yum -y install scsi-target-utils
service tgtd start
chkconfig tgtd on
netstat -tnlp | grep 3260
# ubuntu
apt install tgt
lsof -i:3260
服务端的配置,可以使用命令方式,也可使用配置文件的方式。
使用tgtadm命令方式配置SCSI服务:
tgtadm命令的介绍:
tgtadm 是一个模式化的命令
使用格式:tgtadm --lld [driver] --op [operation] --mode [mode] [OPTION]...
常见的模式(mode):target logicalunit account
#####################################################
target模式的管理命令:管理target
new:创建一个新的 target
show:显示target
delete:删除target
update:更新(修改)target
bind:基于IP地址控制
unbind:解除绑定
#####################################################
logicalunit模式的管理命令:关联tid和后端磁盘
new:创建一个新的LUN
deltete:删除一个已有的LUN
#####################################################
account模式的管理命令:管理account CHAP(挑战式握手应用) 单向认证
new
deltete
bind
unbid
#####################################################
target和Initator之间是通过iqn名称来通信的
iqn格式名称:
iqn.yyyy-mm.reverse-domaim-name:string[.sunstring]
例如:iscsi-iname -p iqn.2014-09.com.magedu.target
也可通过命令的生成的方式:iscsi-iname -p iqn.2014-09.com.magedu
#####################################################
示例:
# (1)、添加一个新的 target 且其ID为 [id], 名字为 [name].
--lld [driver] --op new --mode target --tid=[id] --targetname [name]
# (2)、显示所有或某个特定的target:
--lld [driver] --op show --mode target [--tid=[id]]
# (3)、向某ID为[id]的设备上添加一个新的LUN,其号码为[lun],且此设备提供给initiator使用。
## [path]是某“块设备”的路径,此块设备也可以是raid或lvm设备。lun0已经被系统预留。
--lld [driver] --op new --mode=logicalunit --tid=[id] --lun=[lun] --backing-store [path]
# (4)、删除ID为[id]的target:
--lld [driver] --op delete --mode target --tid=[id]
# (5)、删除target [id]中的LUN [lun]:
-lld [driver] --op delete --mode=logicalunit --tid=[id] --lun=[lun]
# (6)、定义某target的基于主机的访问控制列表,其中,[address]表示允许访问此target的
# initiator客户端的列表:
--lld [driver] --op bind --mode=target --tid=[id] --initiator-address=[address]
# (7)、解除target [id]的访问控制列表中[address]的访问控制权限:
--lld [driver] --op unbind --mode=target --tid=[id] --initiator-address=[address]
通过tgtadm命令提供SCSI服务:
步骤如下:
# 创建一个target:
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2014-09.com.magedu:test2
# 创建LUN,号码为1:
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sda5
# 开放给172.16.0.0/16网络中的主机访问:
tgtadm --lld iscsi --op bind --mode target --tid 1 -I 172.16.0.0/16
其中的-I相当于--initiator-address
创建完成后,可以使用如上图的命令查看,查看正确后,服务端配置完成。
在客户端:
这里使用的地址是:172.16.10.22
客户端配置(Initiator):
# redhat
yum install iscsi-initiator-utils # 客户端管理工具
# 以下配置是非必需的,默认情况下,会有一个默认的iqn名称
echo "InitiatorName=`iscsi-iname -p iqn.2014-09.com.magedu`" > \
/etc/iscsi/initiatorname.iscsi
echo "InitiatorAlias=initiator1" >> /etc/iscsi/initiatorname.iscsi
service iscsi start
chkconfig iscsi on
# ubuntu
apt install open-iscsi open-iscsi-utils # 存在 utils 包时才安装
客户端Initator使用iscsiadm命令来发现,登陆设备。
iscsiadm命令的介绍:
iscsiadm是个模式化的工具,其模式可通过-m或--mode选项指定,常见的模式有discovery、
node、fw、session、host、iface几个。
如果没有额外指定其它选项,则discovery和node会显示其相关的所有记录;
session用于显示所有的活动会话和连接
fw显示所有的启动固件值
host显示所有的iSCSI主机
iface显示/var/lib/iscsi/ifaces目录中的所有ifaces设定。
# 用法如下:
iscsiadm -m discovery [ -d debug_level ] [ -P printlevel ] \
[ -I iface -t type -p ip:port [ -l ] ]
iscsiadm -m node [ -d debug_level ] [ -P printlevel ] [ -L all,manual,automatic ] \
[ -U all,manual,automatic ] [ [ -T tar-getname -p ip:port -I iface ] \
[ -l | -u | -R | -s] ] [ [ -o operation ]
# 参数说明:
-d, --debug=debug_level 显示debug信息,级别为0-8;
-l, --login
-t, --type=type 这里可以使用的类型为sendtargets(可简写为st)、slp、fw和 isns,
此选项仅用于discovery模式,且目前仅支持st、fw和isns;其中st表示允许每个iSCSI target
发送一个可用target列表给initiator;
-p, --portal=ip[:port] 指定target服务的IP和端口;
-m, --mode op 可用的mode有discovery, node, fw, host iface 和 session
-T, --targetname=targetname 用于指定target的名字
-u, --logout
-o, --op=OPEARTION:指定针对discoverydb数据库的操作,其仅能为new、delete、update、show
和nonpersistent其中之一;
-I, --interface=[iface]:指定执行操作的iSCSI接口,这些接口定义在/var/lib/iscsi/ifaces中;
通过iscsiadm命令发现target命令:
iscsiadm -m discovery -t sendtargets -p 172.16.10.16
iscsiadm -m node -T iqn.2014-09.com.magedu:test2 -p 172.16.10.16 -l
登陆成功后,在客户端会发现多了一块磁盘,可以向本地磁盘一样,分区、格式化、挂载使用。
完成挂载使用。
Target端使用配置文件配置:
一般情况下,在服务端是使用配置文件。使用命令式为了更好的了解Target端的工作模式。
# 配置文件/etc/tgt/targets.conf
<target iqn.2014-09.com.magedu:test2>
backing-store /dev/sda5
initiator-address 172.16.0.0/16
</target>
target 名称不能命名用大写字母,否则 windows 无法使用
如果客户端不想使用的话,可以登出
iscsiadm -m node -T iqn.2014-09.com.magedu:test2 -p 172.16.10.16 -u
iscsiadm -m node -T iqn.2014-09.com.magedu:test2 -p 172.16.10.16 -o delete
# 必要的时候,使用
rm -rf -rf /var/lib/iscsi/send_targets/*
补充:
创建服务端谁所需要的帐号,并实现单方向的认证:
1、在target端创建帐号christina,并为其授予访问某tid的权限:
# tgtadm --lld iscsi --op new --mode account --user mageedu --password 123456
接下来还要将用户与某target进行绑定:
# tgtadm --lld iscsi --op bind --mode account --tid 1 --user mageedu
# tgtadm --lld iscsi --op show --mode account
2、编辑initiator端主配置文件,配置客户端登录target时使用此帐号和密码:
# vim /etc/iscsi/iscsid.conf
取消如下项的注释:
# node.session.auth.authmethod = CHAP
# node.session.auth.username = username
# node.session.auth.password = password
而后,将后两项的用户名密码设置为target端设置的用户名和密码:
node.session.auth.username = mageedu
node.session.auth.password = 123456
哪果此前尚未登录过此target,接下来直接发现并登入即可。否则,则需要按照下面的第三步实
现认证的启用。
3、如果initiator端已经登录过此target,此时还需要先注销登录后重启iscsid服务,并在删除此
前生成的database后重新发现target,并重新登入,过程如下:
# iscsiadm -m session -r sid -u
# iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 172.16.10.16:3260 -u
# iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 172.16.10.16:3260 -o delete
# rm -rf -rf /var/lib/iscsi/send_targets/172.16.10.16:3260
# service iscsid restart
# iscsiadm -m discovery -t sendtargets -p 192.168.0.11
# iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -l
说明:其中的target名字和target主机地址可能需要按照您的实际情况修改。
配置完成。