简单介绍两个概念:
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: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.
查看硬盘情况:
注意:共享存储不能同时给两个客户端使用,否则文件系统会崩溃。
退出登录:
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.confdirect-store /dev/sda5 initiator-address 192.168.2.0/24
iscsi基于用户的认证配置:
在服务器端:
# vim /etc/tgt/targets.confdirect-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/目录下的文件:重新发现,重新登录。
OK,以上就是iscsi的基础知识!