@shjanken
2014-11-30T12:46:23.000000Z
字数 2809
阅读 1332
linux
iscsi 的服务器端称为 iscsi target , 一个 iscsi target可以包含多个逻辑的存储设备(LUN)。iscsi 协议监听在 3260 端口上,使用 tcp 协议工作。
iscsi 服务器端和客户端之间将会一直保持连接,称为 iscsi 会话。
iscsi 客户端称为 iscsi initiator,客户端可以通过硬件( iscsi HBA 卡或者 TOE 卡)或者软件来处理数据报文。
服务器端需要安装 scsi-target-utils 来提供服务。
安装完成之后将会生成tgtd服务。
tgt-admin 是根据配置文件,/etc/tgt/targets.conf 来创建逻辑设备,服务器等相关信息。
而 tgtadm 是通过命令行来配置逻辑设备,服务器信息等内容。
--lld iscsi: 设置驱动,一般都是iscsi--mode 指定模式: target logicalunitaccount--op 指定操作.** 具体的使用方法,可以查看man **
iqn.<yyyy-mm>.<reversed domain name>[:identify]
例子:
创建一个iscsi控制器,该控制器不是磁盘,不能用于存储数据:
tgtadm --lld iscsi --mode target --op new --targetname iqn.2013-05.com.janken:teststore.disk1 --tid 1//注意! tid 不能设置为0
查看target信息:
tgtadm --lld iscsi --mode target --op show
关联一个具体的后端存储设备,创建可以用于存储的target(在iscsi控制器上创建一个具体的逻辑设备):
tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /path/to/dev
绑定存储设备和客户端 ( 基于 IP 的认证 )
tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 172.16.0.0/16
创建帐号 ( 基于用户的认证 )
tgtadm --lld iscsi --mode account --op new --user shjanken --password password//将账号密码绑定到targettgtadm --lld scsi --mode account --op bind --tid 1 --user shjankentgtadm -L scsi --model target --op show //查看信息是否正确//注意: 由于 iscsi initiator 不支持在 discovery 时进行认证,所以在服务器端在配置时,必须同时提供 基于 ip 的认证和基于用户名密码的认证。 基于 ip 的认证用来让客户端可以发现服务器端导出的信息。
/etc/tgt/targets
<!-- 定义 target 容器的信息 --><target iqn.2014-05.com.janken:teststore.disk1>backing-store /path/to/store<!-- 基于用户的认证 , 客户端登陆 -->incominguser username password<!-- 基于ip 的认证 -->initiator-address 172.16.0.0/16<!--也可以使用以下方式详细定义逻辑设备!注意: 如果使用了这种方式,则每个backing-store 都需要使用这种方式来定义 --><backing-store /path/to/store>vendor_id janken.comlun 1</backing-store><!-- 如果后端的存储设备是一个裸设备(一个未分区的硬盘)则可以使用 direct-store 来定义 --><!-- 配置文件中有大量示例可以参考 --></target>
iscsi-initiator-utilsiscsi 服务,直接启动即可使用iscsi-iname -p,指定客户端iqn名字。 该信息需要保存在/etc/iscsi/initiatorname.iscsi中:
iscsi-iname -p iqn.2014-05.com.janken
客户端命令行工具: iscsiadm。
相关的模块介绍: ( iscsiadm -m )
- discoery: 发现服务器是否有 target 输出,以及输出了那些 target
- node : 管理和某 target 的关联关系,比如登陆某个 target,或者删除已经登陆过的 target 信息。
- session : 会话管理。
- iface : 接口信息。
例子:
发现一个设备.
iscsiadm --mode discovery -t st -p 172.16.100.100//发现一个设备之后,target信息会保存在:/var/lib/iscsi/send_targets/目录下.// -t type 表示通过连接方式,st 是 sendtargets 方式的简写。
登陆共享存储
iscsiadm --mode node -T ign.xxx.xxx.xx:xx -p 172.168.100.100 -l// -l 表示登陆 -u 表示登出// 还可加上 --op delete | new | show 来操作相关的信息
/etc/iscsi/iscsid.conf 配置文件的相关内容
node.startup=automatic //自动启动节点并登录node.session.auth.authmethod=CHAP //启动挑战式握手协议node.session.auth.username=username //登陆服务器时提供的账号node.session.auth.password=password //登陆服务器时提供的密码node.session.auth.username_in=username //验证服务器账号node.session.auth.password_in=password //验证服务器密码
登出服务器
iscsiadm -m node -T ign.xxx.xxx.xx:xx -p 172.16.100.100 -u//注意。登出之后,只要重启 iscsi 服务,还是会自动登陆服务器
删除服务器相关信息
iscsiadm -m node -T ign.xxx.xxx.xx:xx -p 172.16.100.100 -o delete// 删除之后,还要在 /var/lib/iscsi/send_targets 目录中删除相关的目录和文件。
使用用户名密码发现设备
//修改配置文件
... no route host ... : 这是因为服务器端封锁了3260 端口的关系。请开放iptables 设置。