ISCSI(Internet Small Computer System Interface,Internet 小型计算机系统接口)是一种由IBM公司研究开发的IP SAN技术,它是经过 TCP/IP 网络传输 SCSI 指令的协议,让 SCSI 命令经过网络传送到远程 SCSI 设备上,而 SCSI 协议只能访问本地的 SCSI 设备。html
iSCSI 使用客户/服务器模型。客户端称为 initiator,服务器端称为 target。
iSCSI 是传输层之上的协议,使用 TCP 链接创建会话。在 initiator 端的 TCP 端口号随机选取, target 的端口号默认是 3260。node
- Initiator:一般指用户主机系统,用户产生 SCSI 请求,并将 SCSI 命令和数据封装到 TCP/IP 包中发送到 IP 网络中。
- Target:一般存在于存储设备上,用于转换 TCP/IP 包中的 SCSI 命令和数据。
这里选用的SCSI target的架构是SCST后端
SCST是Generic SCST Target Subsystem forLinux的简称,意为Linux通用SCSI目标子系统,是Linux SCSI目标子系统的一种实现。它为SCST Target Driver和Linux内核之间提供了一个统一的接口,同时提供Linux内核与存储后端的句柄链接,链接真实或模拟的存储后端与目标驱动程序。缓存
SCST由三部分构成:scst、iscsi-scst和scstadmin安全
SCST在Linux内核层和SCSI目标驱动层之间提供统一的、持久的接口,它尽量地简化了目标驱动的开发。SCST支持以下5种I/O模式:服务器
(1).pass-through:此模式下,initiators的SCSI命令将不被修改地直接传给Target端的SCSI硬件。 (2).fileio:默认状况下SCST的导出模式是fileio,它容许使用文件系统上的文件或者块设备做为虚拟的SCSI设备或光驱。Fileio模式能够充分利用Linux的cache。NV_CACHE是fileio的一种模式,它能够提供最好的性能。 (3).blockio:绕开系统的page-cache(页面缓存)直接bio。该模式适用于后端存储设备比较高端或者不须要caching的应用或者须要大量块级吞吐的环境。 (4).user space:在SCST环境中使用用户空间的虚拟SCSI设备模拟执行。 (5).performance:不与底层的SCSI设备发生实际的数据传输,只提供直接的性能改进措施。
目标驱动,与设备驱动程序一块儿工做。主要负责接收主机命令,维护目标端和启动段的传输通道,并根据命令处理状态向主机返回信息。在Initiator看来,Target就是一个专属的SCSI Host,将用户分配的LUN或DISK映射成为远程可访问的虚拟设备。
目前为止SCST支持的Target驱动包括:iSCSI-SCST、FC Target、FCoE Target、SAS、InfiniBand和并行的SCSI设备。网络
scstadmin是SCST的配置和管理脚本,它能够接受命令行输入或者直接读取SCST的配置文件(/etc/scst.conf)来管理scst。架构
节点 | 系统 | IP |
---|---|---|
target | CentOS7.2 | 192.168.26.200 |
initiator1 | Windows 7 | 192.168.26.128 |
initiator2 | CentOS7.2 | 192.168.26.201 |
systemctl stop firewalld systemctl disable firewalld setenforce 0
svn checkout svn://svn.code.sf.net/p/scst/svn/trunk scst-trunk
yum install gcc perl-ExtUtils-MakeMaker perl-Data-Dumper -y rpm -ivh kernel-devel-3.10.0-514.el7.x86_64.rpm 这里的kernel-devel的版本要与系统的kernel版本对应,uname -r
mkdir /mnt/vd1 mkdir /mnt/vd2 mount /dev/sdb1 /mnt/vd1 mount /dev/sdc1 /mnt/vd2 chmod -R 777 /mnt/*
cd scst-trunk make help #根据所需的包进行编译
#编译安装scst make scst make scst_install #编译安装iscsi make iscsi make iscsi_install #安装scstadm make scstadm_install
cp scst-trunk/iscsi-scst/etc/scst.conf /etc/ vi /etc/scst.conf HANDLER vdisk_fileio { DEVICE disk01 { filename /dev/sdb1 #磁盘1 nv_cache 1 } DEVICE disk02 { filename /dev/sdc1 #磁盘2 nv_cache 1 } } TARGET_DRIVER iscsi { enabled 1 TARGET iqn.2006-10.net.vlnb:tgt { LUN 0 disk01 LUN 1 disk02 enabled 1 } }
chkconfig scst on systemctl start scst.service
lsmod |grep scst
Windows:ide
控制面板—->管理工具—->iSCSI发起程序 svn
在目标中填入安装scst主机的ip ,快速链接
打开磁盘管理能够看到2块共享磁盘
Linux:
yum install -y iscsi-initiator-utils systemctl start iscsi chkconfig iscsi on
iscsiadm -m discovery -t sendtargets -p 192.168.26.200:3260
iscsiadm -m node -T iqn.2006-10.net.vlnb:tgt -p 192.168.26.200:3260 -l