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