ISCSI简介
ISCSI(Internet Small Computer System Interface,Internet 小型计算机系统接口)是一种由IBM公司研究开发的IP SAN技术,它是通过 TCP/IP 网络传输 SCSI 指令的协议,让 SCSI 命令通过网络传送到远程 SCSI 设备上,而 SCSI 协议只能访问本地的 SCSI 设备。
iSCSI 使用客户/服务器模型。客户端称为 initiator,服务器端称为 target。
iSCSI 是传输层之上的协议,使用 TCP 连接建立会话。在 initiator 端的 TCP 端口号随机选取, target 的端口号默认是 3260。
- Initiator:通常指用户主机系统,用户产生 SCSI 请求,并将 SCSI 命令和数据封装到 TCP/IP 包中发送到 IP 网络中。
- Target:通常存在于存储设备上,用于转换 TCP/IP 包中的 SCSI 命令和数据。
这里选用的SCSI target的架构是SCST
SCST简介
SCST是Generic SCST Target Subsystem forLinux的简称,意为Linux通用SCSI目标子系统,是Linux SCSI目标子系统的一种实现。它为SCST Target Driver和Linux内核之间提供了一个统一的接口,同时提供Linux内核与存储后端的句柄连接,连接真实或模拟的存储后端与目标驱动程序。
SCST由三部分构成:scst、iscsi-scst和scstadmin
1. SCST
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设备发生实际的数据传输,只提供直接的性能改进措施。
2.iSCSI-SCST
目标驱动,与设备驱动程序一起工作。主要负责接收主机命令,维护目标端和启动段的传输通道,并根据命令处理状态向主机返回信息。在Initiator看来,Target就是一个专属的SCSI Host,将用户分配的LUN或DISK映射成为远程可访问的虚拟设备。
目前为止SCST支持的Target驱动包括:iSCSI-SCST、FC Target、FCoE Target、SAS、InfiniBand和并行的SCSI设备。
3. scstadmin
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 |
安装步骤如下:
一、target安装SCST服务:
1.配置前关闭所有主机的防火墙和安全性策略
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.下载源代码包( http://scst.sourceforge.net/downloads.html )
svn checkout svn://svn.code.sf.net/p/scst/svn/trunk scst-trunk
3.保证代码包编译不出错,应该预先安装一些包
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
4.共享磁盘
mkdir /mnt/vd1
mkdir /mnt/vd2
mount /dev/sdb1 /mnt/vd1
mount /dev/sdc1 /mnt/vd2
chmod -R 777 /mnt/*
5.安装SCST服务
cd scst-trunk
make help #根据所需的包进行编译
#编译安装scst
make scst
make scst_install
#编译安装iscsi
make iscsi
make iscsi_install
#安装scstadm
make scstadm_install
6.配置
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
}
}
7.启动SCST服务
chkconfig scst on
systemctl start scst.service
8.查看scst组件
lsmod |grep scst
Initiator端发起服务
Windows:
控制面板—->管理工具—->iSCSI发起程序
在目标中填入安装scst主机的ip ,快速连接
打开磁盘管理可以看到2块共享磁盘
Linux:
1.用lsblk命令查看磁盘的状况
2.安装并启动iscsi
yum install -y iscsi-initiator-utils
systemctl start iscsi
chkconfig iscsi on
3.发现target目标
iscsiadm -m discovery -t sendtargets -p 192.168.26.200:3260
4.登录发现的目标节点
iscsiadm -m node -T iqn.2006-10.net.vlnb:tgt -p 192.168.26.200:3260 -l
5.再次用lsblk命令查看磁盘状况
来源:51CTO
作者:小樱桃Cherry
链接:https://blog.51cto.com/11134648/2325462