您的位置:首页 > 运维架构 > Linux

iscsi Target (TGT)

2012-04-24 01:06 295 查看
最近在做iscsi 性能评估,为以后ESXi集群等高级功能做准备,使用过openfiler,不过测试时openfiler 自带的iscsi target软件性能似乎有问题,所以有了本文的主角 TGT ,RHLE/CENTOS 自带,使用 Yum 安装即可,下面是具体步骤。

一 TGT 设置

检查系统是否安装 scsi-target
//用来将Linux 系统模拟成为iSCSI target 的功能,也就是常说的软iscsi target.
# rpm -qa | grep scsi
scsi-target-utils-1.0.14-4.el6.x86_64

iscsi target 配置文档与管理程序

/etc/tgt/targets.conf   主配置文档,设置要分享的磁盘
/usr/sbin/tgt-admin     线上查询、删除target 等功能的管理工具;
/usr/sbin/tgt-setup-lun 建立target 以及设置分享的磁盘与可使用的用户端等工具软体。
/usr/sbin/tgtadm        手动直接管理的管理员工具(可使用配置文档取代);
/usr/sbin/tgtd          主要提供iSCSI target 服务的主程式;
/usr/sbin/tgtimg        建置预计分享的映像档装置的工具(以映像档模拟磁盘)

准备iscsi共享的磁盘
//本次将共享一个LVM 物理卷

査看卷组
//注意 关键字"Free  PE / Size"
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name               VolGroup
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  6
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                4
Open LV               3
Max PV                0
Cur PV                2
Act PV                2
VG Size               1.36 TiB
PE Size               4.00 MiB
Total PE              356833
Alloc PE / Size       151074 / 590.13 GiB
Free  PE / Size       205759 / 803.75 GiB
VG UUID               ZjL1o1-I90u-K0iY-MwPJ-TA1h-cez3-q4crAe

创建物理卷
//创建的逻辑卷大小200G,名称为iscsi 属于VolGroup卷组
lvcreate -L 200G -n iscsi VolGroup

査看建立的逻辑卷
[root@localhost ~]# lvscan
ACTIVE            '/dev/VolGroup/lv_root' [50.00 GiB] inherit
ACTIVE            '/dev/VolGroup/lv_home' [306.65 GiB] inherit
ACTIVE            '/dev/VolGroup/lv_swap' [33.48 GiB] inherit
ACTIVE            '/dev/VolGroup/iscsi' [200.00 GiB] inherit

配置target.conf (TGT)
vim /etc/tgt/targets.conf
//添加如下
<target iqn.2012-04.com.test:server.target1>
backing-store /dev/VolGroup/iscsi
lun 10

</target>

//此配置文档语法如下:
<target iqn.相关装置的target名称>
backing-store /你的/虚拟装置/完整名称-1  <==LUN 1
backing-store /你的/虚拟装置/完整名称-2  <==LUN 2
lun N                                 <==LUN 10 自定义lun
</target>
//iqn 名称规范
iqn.yyyy-mm.<reversed domain name>:identifier
iqn.年年-月.单位网域名的反转写法:这个分享的target名称

启动并检查tgt
[root@localhost yum.repos.d]# /etc/init.d/tgtd start
Starting SCSI target daemon:                               [  OK  ]
[root@localhost yum.repos.d]# tgt-admin --show
Target 1: iqn.2012-04.com.test:server.target1
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
Online: Yes
Removable media: No
Backing store type: rdwr
Backing store path: None
LUN: 10

Type: disk
SCSI ID: IET     00010001
SCSI SN: beaf11
Size: 214748 MB
Online: Yes
Removable media: No
Backing store type: rdwr
Backing store path: /dev/VolGroup/iscsi
Account information:
ACL information:
ALL
//tgtd 进程使用 tcp 3260 端口
# lsof -i :3260
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
tgtd    2856 root    5u  IPv4  19726      0t0  TCP *:iscsi-target (LISTEN)
tgtd    2856 root    6u  IPv6  19727      0t0  TCP *:iscsi-target (LISTEN)
tgtd    2857 root    5u  IPv4  19726      0t0  TCP *:iscsi-target (LISTEN)
tgtd    2857 root    6u  IPv6  19727      0t0  TCP *:iscsi-target (LISTEN)


二 ESXI 配置ISCSI
1 配置 -> iSCSI Software Adapter -> 属性




2 可以在静态发现或者动态发现添加 iscsi target ip 地址




3 配置 -> 存储器 -> 添加存储器 -> 磁盘/lun -> 下一步 -> 下一步 即可




三 linux initiator 设置

检查系统是否安装 iscsi-target-utils
//iscsi-initiator-utils:挂载target 的磁盘到Linux 本机上
$ rpm -qa | grep scsi
iscsi-initiator-utils-6.2.0.871-0.10.el5

iscsi initiator 配置文档与管理程序
/etc/iscsi/iscsid.conf  主要的配置文档,用于连接到 iSCSI target
/sbin/iscsid            启动 iSCSI initiator 的服务进程
/sbin/iscsiadm          用于管理 iSCSI initiator
/etc/init.d/iscsid      模拟成 iSCSI initiater 的服务
/etc/init.d/iscsi       在本机成为 iSCSI initiator 后,会调用此脚本,用于登入 iSCSI target
/etc/iscsi/initiatorname.iscsi  initiator 名称

启动 iscsi-initiator
192.168.57.71 [~]$ /etc/init.d/iscsi start
iscsid dead but pid file exists
Turning off network shutdown. Starting iSCSI daemon:       [  OK  ]
[  OK  ]
Setting up iSCSI targets: iscsiadm: No records found!
[  OK  ]
192.168.57.71 [~]$ /etc/init.d/iscsid status
iscsid (pid  7740) is running...
192.168.57.71 [~]$ /etc/init.d/iscsi status
iscsid (pid  7740) is running...

$ chkconfig iscsi on

侦测target
$ iscsiadm -m discovery -t sendtargets -p 10.0.100.99
10.0.100.99:3260,1 iqn.2012-04.com.test:server.target1

$ ll -R /var/lib/iscsi/nodes/
/var/lib/iscsi/nodes/:
total 4
drw------- 3 root root 4096 Apr 18 15:59 iqn.2012-04.com.test:server.target1

/var/lib/iscsi/nodes/iqn.2012-04.com.test:server.target1:
total 4
drw------- 2 root root 4096 Apr 18 15:59 10.0.100.99,3260,1

/var/lib/iscsi/nodes/iqn.2012-04.com.test:server.target1/10.0.100.99,3260,1:
total 4
-rw------- 1 root root 1571 Apr 18 15:59 default

//注意:iscsiadm 侦测的结果会直接写入 /var/lib/iscsi/nodes/

査看可用的target
$ iscsiadm -m node
10.0.100.99:3260,1 iqn.2012-04.com.test:server.target1

载入target
$ iscsiadm -m node -T iqn.2012-04.com.test:server.target1 --login
Logging in to [iface: default, target: iqn.2012-04.com.test:server.target1, portal: 10.0.100.99,3260]
Login to [iface: default, target: iqn.2012-04.com.test:server.target1, portal: 10.0.100.99,3260]: successful

验证target
$ fdisk -l /dev/sdc

Disk /dev/sdc: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdc doesn't contain a valid partition table
//一块磁盘,接下来就可以分区格式化等操作了

卸载target
$ iscsiadm -m node -T iqn.2012-04.com.test:server.target1 --logout
Logging out of session [sid: 1, target: iqn.2012-04.com.test:server.target1, portal: 10.0.100.99,3260]
Logout of [sid: 1, target: iqn.2012-04.com.test:server.target1, portal: 10.0.100.99,3260]: successful
//再次fdisk -l 发现 sdc 磁盘不见了

删除target
//刪除 target 连接信息,再次 ll /var/lib/iscsi/nodes/ 为0
192.168.57.71 [~]$ iscsiadm -m node -o delete -T iqn.2012-04.com.test:server.target1
192.168.57.71 [~]$ ll -R /var/lib/iscsi/nodes/
/var/lib/iscsi/nodes/:
total 0

四 扩展(鸟哥)

/etc/tgt/targets.conf 配置文件
除了backing-store 之外,在这个配置文档当中还有一些比较特别的参数(man tgt-admin):

backing-store (虚拟的装置), direct-store (实际的装置): 设定装置时,如果你的整颗磁盘是全部被拿来当iSCSI 分享之用,那么才能够使用direct-store 。不过,根据网路上的其他文件, 似乎说明这个设定值有点危险的样子。所以,基本上还是建议单纯使用模拟的backing-store 较佳

initiator-address (使用者端位址): 如果你想要限制能够使用这个target 的用户端来源,才需要填写这个设定值。基本上,不用设定它(代表所有人都能使用的意思), 因为我们后来会使用iptables 来规范可以连接的客户端

incominguser (使用者帐号密码设定): 如果除了来源IP 的限制之外,你还想要让使用者输入帐密才能使用你的iSCSI target 的话,那么就加用这个设定项目。此设定后面接两个参数,分别是帐号与密码啰。

write-cache [off|on] (是否使用快取): 在预设的情况下,tgtd 会使用快取来增快速度。不过,这样可能会有遗失资料的风险。所以,如果你的资料​​比较重要的话, 或许不要使用快取,直接存取装置会比较妥当一些。

参考 http://linux.vbird.org/linux_server/0460iscsi.php
更多欢迎到此讨论:

71921660 37275208 (已满)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux iscsi openfiler tgt