参见:http://linux.vbird.org/linux_server/0460iscsi.php

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


一 TGT 设置


1. 
检查系统是否安装 scsi-target

2. //用来将Linux 系统模拟成为iSCSI target 的功能,也就是常说的软iscsi target.
3. # rpm -qa | grep scsi
4. scsi-target-utils-1.0.14-4.el6.x86_64
5.
6.
iscsi target 配置文档与管理程序
7.
8.
/etc/tgt/targets.conf 主配置文档,设置要分享的磁盘

9.
/usr/sbin/tgt-admin 线上查询、删除target 等功能的管理工具;

10. /usr/sbin/tgt-setup-lun 建立target 以及设置分享的磁盘与可使用的用户端等工具软体。
11. /usr/sbin/tgtadm 手动直接管理的管理员工具(可使用配置文档取代);
12.
/usr/sbin/tgtd 主要提供iSCSI target 服务的主程式;

13. /usr/sbin/tgtimg 建置预计分享的映像档装置的工具(以映像档模拟磁盘)
14.
15.
准备iscsi共享的磁盘
16. //本次将共享一个LVM 物理卷
17.
18. 査看卷组
19. //注意 关键字"Free PE / Size"
20. [root@localhost ~]# vgdisplay
21. --- Volume group ---
22. VG Name VolGroup
23. System ID
24. Format lvm2
25. Metadata Areas 2
26. Metadata Sequence No 6
27. VG Access read/write
28. VG Status resizable
29. MAX LV 0
30. Cur LV 4
31. Open LV 3
32. Max PV 0
33. Cur PV 2
34. Act PV 2
35. VG Size 1.36 TiB
36. PE Size 4.00 MiB
37. Total PE 356833
38. Alloc PE / Size 151074 / 590.13 GiB
39. Free PE / Size 205759 / 803.75 GiB
40. VG UUID ZjL1o1-I90u-K0iY-MwPJ-TA1h-cez3-q4crAe
41.
42.
43. 创建物理卷
44. //创建的逻辑卷大小200G,名称为iscsi 属于VolGroup卷组
45. lvcreate -L 200G -n iscsi VolGroup
46.
47. 査看建立的逻辑卷
48. [root@localhost ~]# lvscan
49. ACTIVE '/dev/VolGroup/lv_root' [50.00 GiB] inherit
50. ACTIVE '/dev/VolGroup/lv_home' [306.65 GiB] inherit
51. ACTIVE '/dev/VolGroup/lv_swap' [33.48 GiB] inherit
52. ACTIVE '/dev/VolGroup/iscsi' [200.00 GiB] inherit
53.
54.
配置target.conf (TGT)
55. vim /etc/tgt/targets.conf
56. //添加如下
57. <target iqn.2012-04.com.test:server.target1>
58. backing-store /dev/VolGroup/iscsi
59. lun 10

60. </target>
61.
62. //此配置文档语法如下:
63. <target iqn.相关装置的target名称>
64. backing-store /你的/虚拟装置/完整名称-1 <==LUN 1
65. backing-store /你的/虚拟装置/完整名称-2 <==LUN 2
66.
lun N <==LUN 10 自定义lun

67. </target>
68. //iqn 名称规范
69. iqn.yyyy-mm.<reversed domain name>:identifier
70. iqn.年年-月.单位网域名的反转写法:这个分享的target名称
71.
72. 启动并检查tgt
73. [root@localhost yum.repos.d]# /etc/init.d/tgtd start
74. Starting SCSI target daemon: [ OK ]
75. [root@localhost yum.repos.d]# tgt-admin --show
76. Target 1: iqn.2012-04.com.test:server.target1
77. System information:
78. Driver: iscsi
79. State: ready
80. I_T nexus information:
81. LUN information:
82. LUN: 0
83. Type: controller
84. SCSI ID: IET 00010000
85. SCSI SN: beaf10
86. Size: 0 MB
87. Online: Yes
88. Removable media: No
89. Backing store type: rdwr
90. Backing store path: None
91. LUN: 10

92. Type: disk
93. SCSI ID: IET 00010001
94. SCSI SN: beaf11
95. Size: 214748 MB
96. Online: Yes
97. Removable media: No
98. Backing store type: rdwr
99. Backing store path: /dev/VolGroup/iscsi
100. Account information:
101. ACL information:
102. ALL
103.
//tgtd 进程使用 tcp 3260 端口
104. # lsof -i :3260
105. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
106. tgtd 2856 root 5u IPv4 19726 0t0 TCP *:iscsi-target (LISTEN)
107. tgtd 2856 root 6u IPv6 19727 0t0 TCP *:iscsi-target (LISTEN)
108. tgtd 2857 root 5u IPv4 19726 0t0 TCP *:iscsi-target (LISTEN)
109. 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 设置


1. 检查系统是否安装 iscsi-target-utils 
2. //iscsi-initiator-utils:挂载target 的磁盘到Linux 本机上
3. $ rpm -qa | grep scsi
4. iscsi-initiator-utils-6.2.0.871-0.10.el5
5.
6. iscsi initiator 配置文档与管理程序
7. /etc/iscsi/iscsid.conf 主要的配置文档,用于连接到 iSCSI target
8. /sbin/iscsid 启动 iSCSI initiator 的服务进程
9.
/sbin/iscsiadm 用于管理 iSCSI initiator

10. /etc/init.d/iscsid 模拟成 iSCSI initiater 的服务
11.
/etc/init.d/iscsi 在本机成为 iSCSI initiator 后,会调用此脚本,用于登入 iSCSI target

12.
/etc/iscsi/initiatorname.iscsi initiator 名称

13.

14. 启动 iscsi-initiator
15. 192.168.57.71 [~]$ /etc/init.d/iscsi start
16. iscsid dead but pid file exists
17. Turning off network shutdown. Starting iSCSI daemon: [ OK ]
18. [ OK ]
19. Setting up iSCSI targets: iscsiadm: No records found!
20. [ OK ]
21. 192.168.57.71 [~]$ /etc/init.d/iscsid status
22. iscsid (pid 7740) is running...
23. 192.168.57.71 [~]$ /etc/init.d/iscsi status
24. iscsid (pid 7740) is running...
25.
26. $ chkconfig iscsi on
27.
28. 侦测target
29. $ iscsiadm -m discovery -t sendtargets -p 10.0.100.99
30. 10.0.100.99:3260,1 iqn.2012-04.com.test:server.target1
31.
32. $ ll -R /var/lib/iscsi/nodes/
33. /var/lib/iscsi/nodes/:
34. total 4
35. drw------- 3 root root 4096 Apr 18 15:59 iqn.2012-04.com.test:server.target1
36.
37. /var/lib/iscsi/nodes/iqn.2012-04.com.test:server.target1:
38. total 4
39. drw------- 2 root root 4096 Apr 18 15:59 10.0.100.99,3260,1
40.
41. /var/lib/iscsi/nodes/iqn.2012-04.com.test:server.target1/10.0.100.99,3260,1:
42. total 4
43. -rw------- 1 root root 1571 Apr 18 15:59 default
44.
45.
//注意:iscsiadm 侦测的结果会直接写入 /var/lib/iscsi/nodes/

46.
47. 査看可用的target
48. $ iscsiadm -m node
49. 10.0.100.99:3260,1 iqn.2012-04.com.test:server.target1
50.
51.
载入target

52. $ iscsiadm -m node -T iqn.2012-04.com.test:server.target1 --login
53. Logging in to [iface: default, target: iqn.2012-04.com.test:server.target1, portal: 10.0.100.99,3260]
54. Login to [iface: default, target: iqn.2012-04.com.test:server.target1, portal: 10.0.100.99,3260]: successful
55.
56.
验证target

57. $ fdisk -l /dev/sdc
58.
59. Disk /dev/sdc: 214.7 GB, 214748364800 bytes
60. 255 heads, 63 sectors/track, 26108 cylinders
61. Units = cylinders of 16065 * 512 = 8225280 bytes
62.
63. Disk /dev/sdc doesn't contain a valid partition table
64. //一块磁盘,接下来就可以分区格式化等操作了
65.
66. 卸载target
67. $ iscsiadm -m node -T iqn.2012-04.com.test:server.target1 --logout
68. Logging out of session [sid: 1, target: iqn.2012-04.com.test:server.target1, portal: 10.0.100.99,3260]
69. Logout of [sid: 1, target: iqn.2012-04.com.test:server.target1, portal: 10.0.100.99,3260]: successful
70. //再次fdisk -l 发现 sdc 磁盘不见了
71.
72.
删除target

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

四 扩展(鸟哥)


/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 会使用快取来增快速度。不过,这样可能会有遗失资料的风险。所以,如果你的资料比较重要的话, 或许不要使用快取,直接存取装置会比较妥当一些。