简单介绍两个概念:

      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

       基于iscsi实现文件存储共享_第1张图片

       关联逻辑单元lun

       # tgtadm -L iscsi -o new -m logicalunit -t 1 -l 1 -b /dev/sda5

       再次查看

       # tgtadm -L iscsi -o show -m target

基于iscsi实现文件存储共享_第2张图片

     开启逻辑单元对用户的访问,即基于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:3260
192.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 -l
Logging in to [iface: default, target: iqn.2014-05.com.aperson.web:1, portal: 192.168.2.117,3260] (multiple)
Login to [iface: default, target: iqn.2014-05.com.aperson.web:1, portal: 192.168.2.117,3260] successful.

     查看硬盘情况:

基于iscsi实现文件存储共享_第3张图片

     分区格式化对此磁盘 并挂载到本地,验证数据的输入删除等操作   基于iscsi实现文件存储共享_第4张图片

    注意:共享存储不能同时给两个客户端使用,否则文件系统会崩溃。

    退出登录:    

iscsiadm -m node -T iqn.2014-05.com.aperson.web:1 -p 192.168.2.117 -u

    基于iscsi实现文件存储共享_第5张图片

    我们下次登录的时候会自动发现共享存储是因为我们登录过一次以后就会在/var/lib/iscsi/目录下自动生成一些文件,记录我们曾经登录过的共享服务器的一些信息:

    基于iscsi实现文件存储共享_第6张图片

   如果不想记录,我们可以删除这些文件,也可以使用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

   基于iscsi实现文件存储共享_第7张图片

   命令的配置无法长久保存,所以我们需要基于配置文件的设置来实现持久配置

# vim /etc/tgt/targets.conf

    direct-store /dev/sda5
    initiator-address 192.168.2.0/24

基于iscsi实现文件存储共享_第8张图片  

   iscsi基于用户的认证配置:

   在服务器端:

# vim /etc/tgt/targets.conf

    direct-store /dev/sda5
    initiator-address 192.168.2.0/24
   incominguser admin admin

   在客户端:

# vim /etc/iscsi/iscsid.conf
node.session.auth.authmethod = CHAP
node.session.auth.username = admin
node.session.auth.password = admin

   如果是先前登录过的需要在客户端停止iscsi、iscsid服务,并删除/var/lib/iscsi/目录下的文件:重新发现,重新登录。

   基于iscsi实现文件存储共享_第9张图片

    OK,以上就是iscsi的基础知识!