网站地图    收藏   

主页 > 系统 > windows >

iSCSI target配置[windows下使用linux的存储设备] - Wi

来源:自学PHP网    时间:2015-04-17 17:13 作者: 阅读:

[导读] iSCSI target配置[windows下使用linux的存储设备]实验步骤:(1)iSCSItarget配置步骤1Linux下安装iscsitarget-1.4.20.2步骤2修改配置/etc/ietd.conf,将RAID的逻辑卷映射为iSCSITargetLUN0步骤3(重)启动/etc/i.....

iSCSI target配置[windows下使用linux的存储设备]

实验步骤:
(1)iSCSItarget配置
步骤1 Linux下安装iscsitarget-1.4.20.2
步骤2 修改配置/etc/ietd.conf,将RAID的逻辑卷映射为iSCSI Target LUN0
步骤3 (重)启动/etc/init.d/iscsi-target并查看端口
步骤4 Windows下initiator的安装配置
步骤5 查看实验结果
(2)多LUN实验
再新建一些硬盘创建RAID,修改配置/etc/ietd.conf,将新RAID映射为iSCSI Target LUN1

 iSCSI的介绍:
 iSCSI是internet Small Computer System Interface的缩写,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。 
iSCSI的目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,iSCSI推动了数据在网络之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,iSCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用,iSCSI能够在LAN、WAN甚至Internet上进行数据传送,使得数据的存储不再受地域的现在。iSCSI技术的核心是在TCP/IP网络上传输SCSI协议,即使用TCP/IP报文和iSCSI报文封装SCSI报文,使得SCSI命令和数据可以在普通以太网络上进行传输,如下图所示。 
 
iSCSI的工作过程:当iSCSI主机应用程序发出数据读写请求后,操作系统会生成一个相应的SCSI命令,该SCSI命令在iSCSI initiator层被封装成ISCSI消息包并通过TCP/IP传送到设备侧,设备侧的iSCSI target层会解开iSCSI消息包,得到SCSI命令的内容,然后传送给SCSI设备执行;设备执行SCSI命令后的响应,在经过设备侧iSCSI target层时被封装成ISCSI响应PDU,通过TCP/IP网络传送给主机的ISCSI initiator层,iSCSI initiator会从ISCSI响应PDU里解析出SCSI响应并传送给操作系统,操作系统再响应给应用程序。 
iet(iSCSI Enterprise Target)是Linux下的iSCSI Target实现,open-iscsi是Linux下的iscsi initiator实现,使用iet(官方网站:http://iscsitarget.sourceforge.net)和open-iscsi就可以方便的实现简单的IPSAN,同时iet也可以和其他系统的iscsi initiator配合使用。这里我们实验windows来连接linux。
 最终的效果:
 在windows下可以看到linux服务器“共享”出去的文件设备或者块设备,可以当成本地硬盘来使用,其实数据什么的都是存放在linux上的。

 实验步骤:
1. 在linux下安装iscsitarget-1.4.20.2.tar.gz 
 tar -zvxf iscsitarget-1.4.20.2.tar.gz
 cd iscsitarget-1.4.20.2
 make && make install 
2. 修改配置文件/etc/iet/iet.conf
 配置前对iet的介绍:
iet基本配置 
iet主要包括以下配置文件(控制文件的优先级类似与tcp_wrappers)。 
/etc/iet/ietd.conf :iet的主配置文件 
/etc/iet/initiators.allow:控制initiator对target的访问权限。 
/etc/iet/initiators.deny:控制initiator对target的访问权限。 
/etc/iet/targets.allow:控制不同target的被访问权限。 
通过iet实现iSCSI Target的基本功能需要完成以下二个配置 
iSCSI Target的命名,命名在同一子网内应该是唯一。在/etc/iet/ietd.conf文件中增加如下内容实现iSCSI Target命名。 
Target target名称 
其中: 
target 名称:是iSCSI Target名称。一般iSCSI Target命名采用“iqn.yyyy-mm.<reversed domain name>: identifier 识别代号”的格式。 
将块设备、文件、LVM卷、RAID卷作为块设备映射给iSCSI initiator使用。在/etc/iet/ietd.conf文件中增加如下内容实现块设备映射。 
Lun <lunID> Path=<device>,Type=fileio|blockio[,IOMode=(wb|ro)] 
其中: 
<lunID>:是Lun的编号从0开始,最大2^14-1。 
Path=<device>:指定块设备。可以使用dd命令生成一个文件。 
Type=fileio|blockio:指定块设备类型,分区及dd命令生成的文件使用fileio类型;LVM卷、RAID卷使用blockio类型。 
IOMode=(wb|ro):指定iSCSI initiator允许的操作,wb表示可读写;ro表示只读。 
将如下内容加入/etc/iet/ietd.conf文件后,通过重新启动计算机再运行/etc/init.d/iscsi-target restart命令(不知什么原因,修改/etc/iet/ietd.conf文件后必须重新启动计算机)启动iet后iSCSI initiator即可使用。 
Target iqn.2011-02.zqin.example:storage.lun0 
Lun 0 Path=/dev/sdb1,Type=fileio 
Alias lun0 
iet常用命令 
1、 查看当前iSCSI Target清单。 
srv10:~#cat /proc/net/iet/volume 
2、 查看当前服务器iSCSI Target服务以及连接状态命令 
srv10:~#cat /proc/net/iet/sessions 
3、 停止某个Target 的某个 Connection 的连接。 
srv10:~#ietadm --op delete --tid=2 --sid=562950876233792 --cid=1 && ietadm --op delete --tid=2 
4、 停止所有Target 的连接。 
srv10:~#ietadm --op delete 
5、 删除某个Target (已经没有 Session 连接的)。 
srv10:~#ietadm --op delete --tid= 1 
[FAILED]ietd: no process killedStopping iSCSI Target: Connection refused. 
vi /etc/iet/iet.conf
在最后添加:
Target iqn.2013-04.com.example:storage.lun0
Lun 0 Path=/dev/houqdvg/houqdlv,Type=blockio
Alias lun0
#注: 我用的是lv(逻辑卷),它是块设备
 3. 重启iscsi-target 并查看端口
/etc/init.d/iscsi-target restart
[root@compute-1 iet]# /etc/init.d/iscsi-target restart
Starting iSCSI Target: FATAL: Error inserting crc32c_intel (/lib/modules/2.6.32-220.el6.x86_64/kernel/arch/x86/crypto/crc32c-intel.ko): No such device
 [ OK ]
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 3959/ietd  [root@compute-1 iet]# vi /etc/init.d/iscsi-target 
会出现如上的错误:原因是因为RedHat 6以上已经不需要crc32-intel.ko模块了,所以会出现这个错误,去掉报错信息更改如下:


#!/bin/sh
#
# chkconfig: - 39 35
# description: Starts and stops the iSCSI target
#
# pidfile: /var/run/ietd.pid
# config: /etc/ietd.conf

PATH=/sbin:/bin:/usr/sbin:/usr/bin
OPTIONS=""

# Source function library.
if [ -f /etc/init.d/functions ] ; then
 . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
 . /etc/rc.d/init.d/functions
else
 exit 0
fi

if [ -f /etc/sysconfig/iscsi-target ]; then
 . /etc/sysconfig/iscsi-target
fi

RETVAL=0

start()
{
 echo -n "Starting iSCSI Target: "
# modprobe -q crc32c 注释掉
 modprobe iscsi_trgt
 daemon /usr/sbin/ietd $OPTIONS
 RETVAL=$?
 if [ $RETVAL -eq 0 ]; then
 echo_success
 else
 echo_failure
 fi
 echo
 return $RETVAL
}
在重新启动,就没有错误了。
查看端口启动:(可以看到启动端口为3260)

[root@compute-1 iet]# netstat -tunpl | grep ietd
tcp 0 0 :::3260 :::* LISTEN 3959/ietd  

4. Windows下安装initiator
 下载Initiator-2.08-build3825-x86fre.exe
 安装完成后启动界面:


 填写linux服务器的ip等信息:
 

 点击确定,再点击Targets面板,点击"Reference" , 就会显示出:
 
 "我的电脑" -》右键-》管理-》磁盘管理-》可以看到新的设备。
 如果你linux下的设备没有分区,可以在这里进行分区,如果挂载的是已经分过区的,则这里不能再分区了。而且不能使用。
 
 再点击"Log On" , 状态为Connected之后,就可以看到新出现的windows下的盘了:
 


 That's all 。。。。 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论