42y54 发表于 2014-5-3 21:25:54

基于iscsi实现文件存储共享

简单介绍两个概念:      iSCSI:Internet Small Computer System Interface.是一种基于 TCP/IP的协议,用来建立和管理 IP 存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。SAN 使得 SCSI 协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行。   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响应并传送给操作系统,操作系统再响应给应用程序。   ISCSI通信双方:请求方:initiator即为客户端。接收方:target,即为服务器端   target:成为target需要满足的条件:要有支持SCSI,ISCSI的模块,要有创建target、lum的用户空间工具。要有SCSI、ISCSI驱动,运行为服务,且此服务开机自行启动,接收客户请求要有监听的套接字。服务器端的配置需要保存至某个配置文件中,使其永久生效。   initiator:要有SCSI、ISCSI驱动,要能发现服务器端共享出来的磁盘存储,要能登录到服务器端   有了以上思路我们就可以开始做配置:服务器端:       创建共享磁盘存储       # fdisk /dev/sda       查看是否已安装了SCSI、ISCSI的模块       # grep -i 'scsi' /boot//config-2.6.32-431.el6.x86_64       安装用户空间的工具软件       # yum -y install scsi-target-utils-1.0.24-10.el6.x86_64.rpm       开启服务       /etc/rc.d/init.d/tgtd       # service tgtd start       开机自动启动       # chkconfig tgtd on       监听套接字端口:       # ss -tnl 3260       用户空间使用工具       /usr/sbin/tgtadm       使用配置文件       /etc/tgt/targets.conf       开机重启后       /usr/sbin/tgt-admin会读取配置文件信息。       创建target       # tgtadm -L iscsi -o new -m target -t 1 -T iqn.2014-05.com.aperson.web:1       查看创建的targeto       # tgtadm -L iscsi -o show -m target              关联逻辑单元lun       # tgtadm -L iscsi -o new -m logicalunit -t 1 -l 1 -b /dev/sda5       再次查看       # tgtadm -L iscsi -o show -m target   开启逻辑单元对用户的访问,即基于ip的授权   # tgtadm -L iscsi -o bind -m target -t 1 -I 192.168.2.0/24客户端:   安装软件   iscsi-initiator-utils-6.2.0.873-10.el6.x86_64.rpm   # rpm -ql iscsi-initiator-utils   两个启动服务脚本   /etc/rc.d/init.d/iscsi   /etc/rc.d/init.d/iscsid   iscsid的配置文件   /etc/iscsi/iscsid.conf   客户端使用工具   /sbin/iscsiadm   iscsi别名生成工具   /sbin/iscsi-iname   别名存放目录:   /etc/iscsi   启动服务   service iscsi start   service iscsid start   创建自己的名称跟别名   echo "InitiatorName=`iscsi-iname -p iqn.2014-05.com.aperson`" > /etc/iscsi/initiatorname.iscsi   echo "InitiatorAlias=initiator1" >> /etc/iscsi/initiatorname.iscsi   发现共享:    # iscsiadm -m discovery -t st -p 192.168.2.117:3260192.168.2.117:3260,1 iqn.2014-05.com.aperson.web:1   登录共享服务器端

# iscsiadm -m node -T iqn.2014-05.com.aperson.web:1 -p 192.168.2.117:3260 -lLogging in to (multiple)Login to successful.查看硬盘情况:
   分区格式化对此磁盘 并挂载到本地,验证数据的输入删除等操作       注意:共享存储不能同时给两个客户端使用,否则文件系统会崩溃。    退出登录:   iscsiadm -m node -T iqn.2014-05.com.aperson.web:1 -p 192.168.2.117 -u





        我们下次登录的时候会自动发现共享存储是因为我们登录过一次以后就会在/var/lib/iscsi/目录下自动生成一些文件,记录我们曾经登录过的共享服务器的一些信息:       如果不想记录,我们可以删除这些文件,也可以使用iscsiadm的一条命令进行删除:# iscsiadm -m node -T iqn.2014-05.com.aperson.web:1 -p 192.168.2.117:3260 -o delete   删除lun,删除target指令:

# tgtadm -L iscsi -o delete -m logicalunit -t 1 -l 1# tgtadm -L iscsi -o delete -m target -t 1





   

   命令的配置无法长久保存,所以我们需要基于配置文件的设置来实现持久配置# vim /etc/tgt/targets.conf<target iqn.2014-05.com.aperson.web2.2>    direct-store /dev/sda5    initiator-address 192.168.2.0/24</target>





   iscsi基于用户的认证配置:   在服务器端:# vim /etc/tgt/targets.conf<target iqn.2014-05.com.aperson.web2.2>    direct-store /dev/sda5    initiator-address 192.168.2.0/24   incominguser admin admin</target>   在客户端:

# vim /etc/iscsi/iscsid.confnode.session.auth.authmethod = CHAPnode.session.auth.username = adminnode.session.auth.password = admin   如果是先前登录过的需要在客户端停止iscsi、iscsid服务,并删除/var/lib/iscsi/目录下的文件:重新发现,重新登录。
       OK,以上就是iscsi的基础知识!

页: [1]
查看完整版本: 基于iscsi实现文件存储共享