这里都是关于 使用 ISCSI Enterprise Target (简称 IET ) 的使用说明。
常用操作命令:
查看当前虚拟单元清单。
cat /proc/net/iet/volume
tid:2 name:200M.img lun:1 state:0 iotype:fileio iomode:wt path:/work/janco/VirtualDisk/test.iso tid:1 name:windows.iso lun:0 state:0 iotype:fileio iomode:wt path:/work/janco/VirtualDisk/windows.iso |
查看当前服务器 ISCSI target 服务以及连接状态命令
cat /proc/net/iet/sessions
tid:2 name:200M.img sid:562950876233792 initiator:iqn.1991-05.com.microsoft:admin-pc cid:1 ip:192.168.1.240 state:active hd:none dd:none sid:281475899523136 initiator:jacko cid:1 ip:192.168.1.60 state:active hd:none dd:none tid:1 name:windows.iso |
关于ISCSI Target 的配置,常用有两种方式 :
1.修改配置文件
vi /etc/ietd.conf
2.使用 IET 管理命令行
² 添加一个新的target
ietadm --op new --tid=[id] --params Name=iqn.foo.example
其中[id] 为数字,必须是没有使用过的。后面的 Name 需要自己自定义,也需要保证是唯一的。
当然不知道自己本机所有target id 的话,可以使用这个命令查看当前的 target 状态和得到 target id
² 添加一个新的 lun
Note: 在一个已经存在的 target 上加入一个 lun, 以便共享出来给外界 。
ietadm --op new --tid=[id] --lun=[lun] --params Path=/path/exported/file,Type=fileio
[id] 必须是一个已经存在的 tid 号, [lun] 可以自己定义。
后面的path 就是共享的路径了。
NOTE: 通过这种方式添加的LUN 在重启服务之后会丢失。
² 停止某个Target 的某个 Connection 的连接
ietadm --op delete --tid=2 --sid=562950876233792 --cid=1 && ietadm --op delete --tid=2
// 后半句很重要,如果不执行的话Initiator 有可能自动重连,导致又生成一个 session 和 connection
² 停止所有Target 的连接
ietadm --op delete
² 删除某个Target (已经没有 Session 连接的)
ietadm --op delete --tid= 1
关于ietadm 其余的命令,大家可以使用 ietadm --help 来查看更多的指令。
其他常见问题
1.防火墙链接限制,外界无法访问 Target 服务器 3260 端口。
请在防火墙上手动放开 3260 端口,或者有条件的话干脆关闭防火墙。
更改防火墙配置并重启生效
vi /etc/sysconfig/iptables
server iptable restart
2.共享的路径都可以有哪些?
在IET 的技术文档中规定,以下几种路径是被支持的:
1)一个完整的 block 磁盘,比如我在前文中所述的 /dev/sdb 。
2)一个 RAID 设备或者是一个 LVM , 这个我没测试过! -_-!
3)一个虚拟的镜像文件 , 可能性能可比直接 IO 读取稍差点!
例子:
制作一个512M 的磁盘镜像
dd if=/dev/zero of=/disk.img bs=512 count=1000000
IET 配置中 lun 设置:
LUN 0 Path=/disk.img,Type=fileio
重启IET 服务生效!
/etc/init.d/iscsi-target restart