基于SSD的iSCSI target的建立和Vdbench测试

简介:

 在SAN存储系统中,LIO是把存储设备直接转化为可用存储资源的高效工具,它实现了基于文件/块设备/ramdisk甚至回环设备创建存储设备的iscsi target接口和CLI。 通过iSCSI initiator访问iSCSI target 的典型应用场景和联接如下图所示意:

wKiom1dn49KzhEujAAMDcvI2nJE043.png


上图非常直观地显示了基于ram、/dev/下的设备以及文件,创建iSCSI target的数据流。如果更深入地再往下看,可以看到它和底层文件系统、卷管理的接口如下所示:


wKioL1dn5ATD03SZAACig3_OBpg732.png

厘清了iSCSI的应用模式和软件层次后,就不难理解如何创建iscsi target 设备了,并且也会理解为何

在数据传输之前,需要iscsi initiator 和iscsi target 设备建立起连接了。


    下面通过具体的命令,举例说明在linux操作系统里面如何创建iscsi target、建立iscsi链接和使用iscsi资源。首先需要在存储资源所挂载的机器上用targetcli创建 target:

[root@localhost]# targetcli /backstores/block create my_ssd /dev/disk/by-id/wwn-0x55cd2e404b7b8ced-part5

\Created block storage object my_ssd using /dev/disk/by-id/wwn-0x55cd2e404b7b8ced-part5.



[root@localhost]# targetcli /iscsi create

Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120.

Created TPG 1.

Global pref auto_add_default_portal=true

Created default portal listening on all IPs (0.0.0.0), port 3260.


[root@localhost]# targetcli /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120/tpg1/luns create /backstores/block/my_ssd

Created LUN 0.

You have new mail in /var/spool/mail/root


[root@localhost]# targetcli /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120/tpg1 set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1

Parameter authentication is now '0'.

Parameter demo_mode_write_protect is now '0'.

Parameter generate_node_acls is now '1'.


[root@localhost]# targetcli saveconfig myssd.config

Configuration saved to myssd.config


上面命令还把当前配置保存到文件myssd.config当中去,机器重启后,还可以从这个文件

恢复到当前设置,这样就可以避免需要重新输入上面的命令:

[root@localhost]# targetcli clearconfig confirm=True

All configuration cleared

如果上面没有制定文件名,默认会保存到/etc/target/saveconfig.json文件当中去。


[root@localhost]# targetcli restoreconfig myssd.config



    接着需要在initiator 端连接到target 端,先探测有没有iscsi能被找到,如果找到自动连接上去:


[root@localhost PlxSdk]# iscsiadm -m discovery -t st -p 10.10.2.33 -l

Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120, portal: 10.10.2.33,3260] (multiple)

Login to [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:19 ip-10.10.2.33:3260-iscsi-iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120-lun-0 -> ../../sdr


这就证明iscsi target已经映射到了initiator /dev/sdr这个设备上,在initiator端对/dev/sdr进行读写访问,就相当于往远端的10.10.2.33机器上的/dev/disk/by-id/wwn-0x55cd2e404b7b8ced-part5进行读写。


当然,使用完了之后,可以用下面的命令断开连接:

[root@localhost PlxSdk]# iscsiadm -m session -u

Logging out of session [sid: 1, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.b5928f6012db, portal: 10.10.2.33,3260]

Logging out of session [sid: 2, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.beb1fd396120, portal: 10.10.2.33,3260]



    最后运行测试程序,下面以vdbench 为例,开始测试:


[root@localhost vdbench]# cat ssd_param && ./vdbench  -f ssd_param -k -o ssd_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




Vdbench distribution: vdbench504

For documentation, see 'vdbench.pdf'.


20:25:40.991 Created output directory '/home/vdbench_qichao/ssd_vdbench.out'

20:25:41.021 input argument scanned: '-fssd_param'

20:25:41.021 input argument scanned: '-k'

20:25:41.021 input argument scanned: '-ossd_vdbench.out'

20:25:41.153 Starting slave: /home/vdbench/vdbench SlaveJvm -m localhost -n localhost-10-160620-20.25.40.968 -l localhost-0 -p 5570

20:25:41.627 All slaves are now connected

20:25:43.001 Starting RD=rd1; I/O rate: Uncontrolled MAX; elapsed=5 warmup=5; For loops: threads=24

20:25:54.068 Vdbench 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






















本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1791157 ,如需转载请自行联系原作者


相关文章
|
传感器 存储 机器学习/深度学习
cartographer环境建立以及建图测试(详细级)
cartographer环境建立以及建图测试(详细级)
707 1
cartographer环境建立以及建图测试(详细级)
|
Shell Android开发 Python
Back Track下建立“钓鱼”热点测试
Back Track下建立“钓鱼”热点测试
94 0
|
固态存储 计算机视觉
【24】目标检测模型SSD的搭建及其训练与测试
【24】目标检测模型SSD的搭建及其训练与测试
189 0
【24】目标检测模型SSD的搭建及其训练与测试
|
测试技术 数据库
一起谈.NET技术,VS2010 测试功能之旅:编码的UI测试(4)-通过编写测试代码的方式建立UI测试(下)
  回顾   最近比较忙,距离上次更新的时间较久,见谅。   在本章上部分,介绍了“添加用户”窗口的测试代码编写。想必大家也看到了,在UIMap.cs文件中实现自定义编码是一件很轻松的事情,接下来将介绍下个部分,查询用户窗体的测试代码的编写,以及他们测试的关联。
759 0
|
测试技术
一起谈.NET技术,VS2010 测试功能之旅:编码的UI测试(4)-通过编写测试代码的方式建立UI测试(上)
  回顾   在之前的入门篇系列中,分别介绍了一个简单的示例, 操作动作的录制原理,通过修改UIMap.UItest文件控制操作动作代码的生成,对象的识别原理。接下来正式进入我们UI测试的进阶篇,在这一章,将讲述如何初步通过自己编写代码的方式来建立UI测试。
847 0
|
测试技术 数据库
VS2010 测试功能之旅:编码的UI测试(4)-通过编写测试代码的方式“.NET研究”建立UI测试(下)
  回顾   最近比较忙,距离上次更新的时间较久,见谅。   在本章上部分,介绍了“添加用户”窗口的测试代码编写。想必大家也看到了,在UIMap.cs文件中实现自定义编码是一件很轻松的事情,接下来将介绍下个部分,查询用户窗体的测试代码的编写,以及他们测试的关联。
855 0
|
测试技术
VS2010 测试功能之旅:编码的UI测试(4)-通“.NET研究”过编写测试代码的方式建立UI测试(上)
  回顾   在之前的入门篇系列中,分别介绍了一个简单的示例, 操作动作的录制原理,通过修改UIMap.UItest文件控制操作动作代码的生成,对象的识别原理。接下来正式进入我们UI测试的进阶篇,在这一章,将讲述如何初步通过自己编写代码的方式来建立UI测试。
938 0
|
存储 固态存储 测试技术
|
固态存储 关系型数据库 MySQL
|
固态存储 Oracle 关系型数据库