|
在SAN存储系统中,LIO是把存储设备直接转化为可用存储资源的高效工具,它实现了基于文件/块设备/ramdisk甚至回环设备创建存储设备的iscsitarget接口和CLI。 通过iSCSIinitiator访问iSCSItarget 的典型应用场景和联接如下图所示意:
上图非常直观地显示了基于ram、/dev/下的设备以及文件,创建iSCSItarget的数据流。如果更深入地再往下看,可以看到它和底层文件系统、卷管理的接口如下所示:
厘清了iSCSI的应用模式和软件层次后,就不难理解如何创建iscsitarget 设备了,并且也会理解为何
在数据传输之前,需要iscsiinitiator 和iscsi target 设备建立起连接了。
下面通过具体的命令,举例说明在linux操作系统里面如何创建iscsitarget、建立iscsi链接和使用iscsi资源。首先需要在存储资源所挂载的机器上用targetcli创建 target:
[iyunv@localhost]#targetcli /backstores/block create my_ssd /dev/disk/by-id/wwn-0x55cd2e404b7b8ced-part5
\Createdblock storage object my_ssd using/dev/disk/by-id/wwn-0x55cd2e404b7b8ced-part5.
[iyunv@localhost]# targetcli /iscsi create
Createdtarget iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120.
CreatedTPG 1.
Globalpref auto_add_default_portal=true
Createddefault portal listening on all IPs (0.0.0.0), port 3260.
[iyunv@localhost]# targetcli/iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120/tpg1/lunscreate /backstores/block/my_ssd
CreatedLUN 0.
Youhave new mail in /var/spool/mail/root
[iyunv@localhost]#targetcli/iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120/tpg1set attribute authentication=0 demo_mode_write_protect=0generate_node_acls=1
Parameterauthentication is now '0'.
Parameterdemo_mode_write_protect is now '0'.
Parametergenerate_node_acls is now '1'.
[iyunv@localhost]#targetcli saveconfig myssd.config
Configurationsaved to myssd.config
上面命令还把当前配置保存到文件myssd.config当中去,机器重启后,还可以从这个文件
恢复到当前设置,这样就可以避免需要重新输入上面的命令:
[iyunv@localhost]#targetcli clearconfig confirm=True
Allconfiguration cleared
如果上面没有制定文件名,默认会保存到/etc/target/saveconfig.json文件当中去。
[iyunv@localhost]#targetcli restoreconfig myssd.config
接着需要在initiator 端连接到target 端,先探测有没有iscsi能被找到,如果找到自动连接上去:
[iyunv@localhostPlxSdk]# iscsiadm -m discovery -t st -p 10.10.2.33 -l
Loggingin to [iface: default, target:iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120, portal:10.10.2.33,3260] (multiple)
Loginto [iface: default, target:iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120, portal:10.10.2.33,3260] successful.
这时能从/dev设备下看到多出一个设备:
lrwxrwxrwx.1 root root 9 Jun 20 20:19ip-10.10.2.33:3260-iscsi-iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120-lun-0-> ../../sdr
这就证明iscsitarget已经映射到了initiator/dev/sdr这个设备上,在initiator端对/dev/sdr进行读写访问,就相当于往远端的10.10.2.33机器上的/dev/disk/by-id/wwn-0x55cd2e404b7b8ced-part5进行读写。
当然,使用完了之后,可以用下面的命令断开连接:
[iyunv@localhostPlxSdk]# iscsiadm -m session -u
Loggingout of session [sid: 1, target:iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.b5928f6012db, portal:10.10.2.33,3260]
Loggingout of session [sid: 2, target:iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120, portal:10.10.2.33,3260]
最后运行测试程序,下面以vdbench 为例,开始测试:
[iyunv@localhostvdbench]# cat ssd_param && ./vdbench -f ssd_param -k -ossd_vdbench.out
sd=sd2,lun=/dev/sdr,openflags=o_direct,size=500m,threads=24
wd=wd1,xfersize=4k,rdpct=0,seekpct=100
rd=rd1,wd=wd1,sd=*,iorate=max,elapsed=5,interval=1,warmup=5,threads=24
Vdbenchdistribution: vdbench504
Fordocumentation, see 'vdbench.pdf'.
20:25:40.991Created output directory '/home/vdbench_qichao/ssd_vdbench.out'
20:25:41.021input argument scanned: '-fssd_param'
20:25:41.021input argument scanned: '-k'
20:25:41.021input argument scanned: '-ossd_vdbench.out'
20:25:41.153Starting slave: /home/vdbench/vdbench SlaveJvm -m localhost -nlocalhost-10-160620-20.25.40.968 -l localhost-0 -p 5570
20:25:41.627All slaves are now connected
20:25:43.001Starting RD=rd1; I/O rate: Uncontrolled MAX; elapsed=5 warmup=5; Forloops: threads=24
20:25:54.068Vdbench execution completed successfully. Output directory:/home/vdbench/ssd_vdbench.out
参考文档和链接:
http://linux-iscsi.org/wiki/Targetcli
http://www.linux-iscsi.org/Doc/LIO%20Admin%20Manual.pdf
|
|